GN⁺: 한/글 문서 파일 형식: HWP 포맷 구조 살펴보기
(tech.hancom.com)서론
- 현대 사회에서 인공지능 기술은 다양한 분야에서 혁신을 이끌고 있으며, 데이터의 중요성은 증가하고 있음
- HWP 포맷은 AI 학습에 유리한 요소들을 가지고 있음
- 단순한 텍스트 외에도 이미지, 표, 차트 등의 다양한 요소로 구성되어 풍부한 정보를 제공
- 제목, 단락, 표 등의 다양한 형식으로 구조화되어 있어 AI 모델이 문서를 이해하고 분석하는데 도움이 될 수 있음
- 이번 글에서는 HWP 포맷의 구조와 문서 정보 저장 방식을 살펴볼 것임
HWP 포맷이란?
- HWP 포맷은 한글과컴퓨터에서 개발된 문서 포맷으로, 1997년에 처음 공개되었음.
- 이 포맷은 CFB(Compound File Binary File Format)로 구성되어 있으며, 여러 데이터 스트림을 단일 파일에 저장하는 방식임.
- HWP 파일에는 File Header, DocInfo, DocOptions, BodyText, Script, HwpSummaryInformation, PrvImage, PrvText 등의 정보가 포함되어 있음.
1. File Header
- HWP 파일의 파일 헤더에는 한글 문서 인식 정보가 포함되어 있음.
- 서명 정보, 문서 버전, 파일 인식 정보 등이 포함되어 있으며, 이를 통해 HWP 파일의 문서 종류를 판단함.
2. DocInfo
- 문서에서 사용된 글꼴, 글자 속성, 문단 속성 등 공통 정보들을 담고 있는 스트림임.
- DocInfo는 zlib으로 압축되어 저장되며, 압축을 해제하면 원본 데이터를 확인할 수 있음.
- 여러 종류의 정보가 레코드 형식으로 저장되어 있음.
3. DocOptions
- 연결 문서, 배포용 문서, 공인인증서 등의 정보가 스트림으로 저장됨.
4. BodyText (Section)
- 문서의 본문에 해당하는 실제 내용이 저장됨.
- 본문의 구역 수에 따라 여러 개의 Section 스트림으로 구성됨.
5. Script
- 스크립트 매크로 기능에 정의된 스크립트 정보가 기록된 스토리지임.
6. HwpSummaryInformation
- 문서 요약 정보가 저장되어 있으며, 마이크로소프트의 PropertySet 구조로 되어 있음.
7. PrvImage
- 문서의 미리 보기 이미지로, 첫 번째 페이지 이미지가 저장됨.
8. PrvText
- 문서의 미리 보기 텍스트로, 첫 번째 페이지 내용이 유니코드 문자열로 저장됨.
마치며
- HWP 포맷은 바이너리 형식으로 저장되어 사람이 직접 읽기 어렵고, 특정 소프트웨어에서만 열람 및 수정이 가능하도록 설계됨.
- 반면, HWPX 포맷은 오픈 XML 기반의 포맷으로 데이터가 구조화되어 있어 사람이 내용을 쉽게 이해할 수 있도록 설계됨.
- 다음 시간에는 HWPX 포맷이 HWP 포맷과 어떤 차별화된 방식으로 정보를 저장하는지 알아볼 것임.
hwp.js (https://github.com/hahnlee/hwp.js) 를 개발했던 hahnlee 입니다 :)
저 프로젝트를 개발할때 그리고 지금도 hwp는 썩 좋아하진 않습니다. 특히 공개수준에 대해서는요.
다만 "HWP 포맷은 AI 학습에 유리한 요소들을 가지고 있음" 이 부분은 어느정도 공감합니다.
RAG를 구축했을때의 경험으로 말씀드리면, 한국에서는 특히 표를 많이 쓰는데요. PDF의 경우 인쇄를 상정하고 만든 포멧이니 "표" 라는건 PDF에 없습니다. 선분과 텍스트만 있을뿐.
그래서 복잡한 표 정보에서 데이터를 추출하는 일이 PDF문서를 기반으로는 어려웠습니다. 특히 표가 페이지를 넘어가는 경우에서도요.
거칠게 비유하면 hwp가 일종의 리치텍스트문서라면 pdf는 txt 문서 같은 느낌이었습니다. 물론 "표"에 한정된 이야기입니다.
다만 이게 hwp 포멧의 특장점이냐? 하면 그건아니라 생각합니다. 간단한건 마크다운으로 충분하고, 좀 더 복잡하면 html로 정의하는게 낫다고 생각하거든요.
그리고 결정적으로 그리고 docx나 odt도 동일한 장점을 가집니다.
hwp는 싫어하고 지금의 한컴이란 회사의 제품에 대해서 좋은 말은 못하겠지만 과거엔 제품 자체는 워드보단 훨씬 훌륭한 소프트웨어였다고 생각합니다.
MS워드나 Libre Office와 비교했을 때 한글이 원하는 형태의 문서를 만드는데 훨씬 편했어요. 배포야 PDF로 하면 되는거구요.
물론 제가 한글이 익숙해서 더 그렇게 느끼긴 하겠지만요.