KORMARC / MARC21 서지파일 핸들링 정보 수집
MARC21이란?
- Machine-Readable Cataloging
- 도서관 서지 데이터 표준 형식
- ISO 2709 기반 바이너리 포맷
- 레코드 구조: 리더(24바이트) + 디렉토리 + 필드 데이터
레코드 구조
리더 (Leader)
- 24바이트 고정 길이
- 레코드 길이, 상태, 레코드 유형, 지시자/서브필드 길이 등 포함
필드 구조
- 제어 필드 (001~009): 지시자/서브필드 없음, 데이터만
- 데이터 필드 (010~999): 지시자 2개 + 서브필드 (delimiter
$ + 코드 + 데이터)
- 예:
245 10$a제목$bsubtitle
주요 태그
| 태그 |
내용 |
| 001 |
제어번호 |
| 005 |
최종 수정일시 |
| 008 |
고정길이 데이터 (언어, 출판국 등) |
| 020 |
ISBN |
| 040 |
카탈로그링 기관 |
| 100 |
주 저자 |
| 245 |
제목 |
| 250 |
판사항 |
| 260 |
출판정보 |
| 300 |
물리적 설명 |
| 500 |
일반 주석 |
| 650 |
주제 (LC) |
| 700 |
부가 저자 |
| 856 |
전자 자원 URL |
KORMARC
- 한국형 MARC 형식
- MARC21을 기반으로 한국 서지 특화
- 차이점:
- 한글 처리 (EUC-KR 또는 UTF-8)
- 한국 도서관 분류법 연동
- 국립중앙도서관 기준
- 일부 필드/서브필드가 한국 특화
Python 라이브러리
pymarc (핵심)
- 설치:
pip install pymarc
- 용도: MARC21 읽기/쓰기/수정
- 기능:
MARCReader: 배치 파일 읽기
Record: 단일 레코드 객체
Field: 필드 (태그 + 지시자 + 서브필드)
Subfield: 서브필드 (코드 + 값)
- MARC/XML 변환
- MARC/JSON 변환
- MARC/CSV 변환
pymarc 기본 사용법
기타 라이브러리
| 라이브러리 |
용도 |
pymarc |
MARC21 읽기/쓰기/수정 (핵심) |
marcjson |
MARC → JSON 변환 |
pymarc[xml] |
MARC → MARCXML 변환 |
tablib |
범용 데이터셋 (CSV/JSON/XLS 지원) |
pydantic |
데이터 모델 검증 |
MARC 바이너리 포맷 상세
- 인코딩: ISO 2709
- 레코드 종료:
0x1D (GS)
- 필드 종료:
0x1E (RS)
- 서브필드 구분:
0x1F (US) 또는 $
- 리더 길이: 24바이트 (고정)
- 디렉토리: 각 필드의 태그(3) + 길이(4) + 위치(5) = 12바이트 × 필드 수
LLM 연동 아이디어
- 일괄 편집: 여러 레코드의 특정 필드를 LLM으로 일괄 수정
- 자동 분류: 제목/초록 기반 주제 분류
- 형식 변환: 자연어 → MARC 레코드 생성
- 검증: MARC 규칙 준수 여부 자동 확인
- 번역: 필드 값 번역 (다국어 서지 작성)
한국 국립중앙도서관 참고
- KORMARC 사양: https://www.nl.go.kr
- KORMARC는 MARC21을 기반으로 한국 특화 필드 추가
- 인코딩: UTF-8 권장 (구형은 EUC-KR)
- 필드 매핑: MARC21 ↔ KORMARC 변환 테이블 필요