핵심 요약
한글과컴퓨터가 Python으로 HWP 포맷의 본문 파싱 구현을 제시하고, Section 스트림 해제와 문단 레코드 구성을 따라 본문 데이터를 추출하는 절차를 설명했습니다.
구현 방법
- Python 기반 구현으로 olefile로 파일을 열고 BodyText/Section{i} 스트림을 zlib으로 해제하여 파싱합니다.
- 데이터 모델로 Section, Para, CharShape, ParaLineSeg, ParaRangeTag 등 다층 구조를 정의합니다.
- HWPTAG_PARA_HEADER, HWPTAG_PARA_TEXT, HWPTAG_PARA_CHAR_SHAPE, HWPTAG_PARA_LINE_SEG, HWPTAG_PARA_RANGE_TAG, HWPTAG_CTRL_HEADER 등의 레코드를 순차적으로 읽고 텍스트를 추출합니다.
- 문단 내 컨트롤 문자 처리와 컨트롤 데이터 위치 파악 로직을 포함합니다.
- 샘플 파일 분석으로 글꼴·색상·정렬 등 서식이 실제 렌더링과 일치하는지 확인했습니다.
주요 결과
- 본문 파싱 및 텍스트 추출 파이프라인 구현이 완료되었습니다.
- 섹션 단위로 파싱하고 서식 정보를 매핑하는 구조를 도입했습니다.
- 샘플 파일에서 서식(글꼴/색상/정렬)과 렌더링 간의 일치 여부를 확인했습니다.
- 표/그림 등 복잡한 컨트롤 객체 파싱은 다음 글에서 다룰 예정임을 명시했습니다.
