HWP와 HWPX의 가장 큰 차이는 문서를 저장하는 방식입니다. HWP 5.x는 복합 파일 안의 이진 스트림과 레코드를 해석해야 하고, HWPX는 XML 파일과 이미지 같은 리소스를 ZIP 컨테이너에 묶어 문서를 표현합니다. 그래서 같은 화면을 보여주는 문서라도 데이터를 꺼내고 표·스타일·개체의 관계를 복원하는 방법은 달라집니다.

화면이 비슷하다고 내부도 같은 것은 아닙니다

사용자가 한/글에서 문서를 열면 HWP와 HWPX 모두 제목, 문단, 표, 그림, 각주 같은 요소를 비슷하게 보여줄 수 있습니다. 워드프로세서가 각 포맷의 내부 구조를 해석한 뒤 화면에 다시 배치해 주기 때문입니다. 사용자는 결과 화면을 보지만, 문서를 데이터로 다루는 프로그램은 그보다 앞 단계인 파일 안의 구조를 읽어야 합니다.

예를 들어 같은 표가 화면에서는 4열 20행으로 보이더라도, 데이터화 단계에서는 각 셀의 문단, 병합된 범위, 행·열 위치, 셀 안의 개체와 스타일 참조를 별도로 해석해야 할 수 있습니다. 따라서 “문서가 정상적으로 열린다”와 “문서 구조를 빠짐없이 데이터로 읽었다”는 서로 다른 판단입니다.

HWP는 이진 스트림과 레코드를 해석합니다

한컴이 공개한 HWP 5.0 형식 문서는 HWP가 OLE Compound File 계열의 복합 파일 구조를 사용하고, 내부 스트림에 여러 레코드와 속성을 저장하는 방식임을 설명합니다. 텍스트를 얻으려면 단순히 파일에서 한글 문자열을 찾는 것이 아니라, 문서 버전과 레코드 구조를 이해하고 각 레코드가 어떤 문서 요소를 표현하는지 해석해야 합니다.

이때 중요한 점은 본문 텍스트만 읽으면 문서 전체를 읽은 것이 아니라는 것입니다. 표, 글상자, 머리말·꼬리말, 각주, 그림과 같은 요소는 서로 다른 구조와 속성을 가질 수 있습니다. 파서가 지원하는 범위에 따라 “파일 열기 성공” 뒤에서도 일부 내용이나 관계가 빠질 수 있습니다.

HWPX는 XML 기반의 패키지 문서입니다

HWPX는 국가표준 KS X 6101의 OWPML을 기반으로 한 개방형 문서 포맷입니다. 한컴의 포맷 설명처럼 실제 HWPX 파일은 XML 문서와 리소스를 ZIP 구조로 묶은 패키지로 볼 수 있습니다. 문서에 따라 구성은 달라질 수 있지만 본문 구역, 스타일과 서식 정보, 이미지 같은 바이너리 리소스, 컨테이너 정보 등이 서로 연결되어 하나의 문서를 만듭니다.

XML이라는 점은 구조를 명시적으로 읽는 데 유리한 출발점입니다. 하지만 XML 태그에서 글자만 모으면 원래 문서가 그대로 복원되는 것은 아닙니다. 본문 요소와 스타일 ID, 이미지 참조, 표의 셀 관계, 문단 속성처럼 여러 XML과 리소스 사이의 연결을 함께 봐야 하기 때문입니다.

데이터화 관점에서 비교하면 차이가 더 분명합니다

구분HWPHWPX
기본 저장 방식복합 파일 안의 이진 스트림·레코드XML과 리소스를 묶은 ZIP 패키지
본문 접근포맷 규격에 따라 레코드와 스트림을 해석XML 요소와 계층·참조를 따라 접근
표 처리셀·병합·문단 레코드의 관계 해석이 필요행·셀·병합 속성과 내부 문단의 관계 확인이 필요
스타일글자·문단 속성과 참조 구조를 해석스타일 정의와 적용 ID의 연결을 확인
이미지·개체내부 데이터와 위치·속성의 연결을 확인패키지 리소스와 본문 참조를 함께 확인
자동화의 핵심바이너리 구조를 정확히 해석하는 것XML뿐 아니라 패키지와 참조 무결성을 함께 보는 것

텍스트 추출과 문서 구조 추출은 다릅니다

문서를 검색하기 위한 목적이라면 본문의 문자만으로도 어느 정도 쓸 수 있습니다. 하지만 표의 수치를 데이터베이스에 넣거나, 특정 조건이 원문의 어디에 있었는지 다시 확인하거나, 여러 버전의 문서를 비교하려면 텍스트만으로는 부족합니다.

예를 들어 “12개월”이라는 문자열을 정확히 뽑았더라도 그것이 계약기간인지 보증기간인지, 표의 어떤 행에 속하는지, 앞의 제목과 어떤 관계인지 잃어버리면 후속 분석에서 잘못 연결될 수 있습니다. 데이터화의 품질은 글자가 존재하는가뿐 아니라 그 글자가 원래 어떤 구조에 속했는가까지 봐야 합니다.

한 가지 오해 — HWPX가 XML이므로 항상 HWP보다 “완벽하게” 추출된다고 단정할 수는 없습니다. 개방형 구조는 접근과 해석에 유리하지만, 실제 품질은 문서 복잡도와 파서가 표·개체·참조를 얼마나 충실히 처리하는지에 달려 있습니다.

HWP를 HWPX나 PDF로 바꾸면 같은 문서일까?

변환본이 눈으로 보기에는 원본과 거의 같아도 내부 구조까지 동일하다고 보기는 어렵습니다. PDF로 변환하면 페이지에 보이는 배치가 잘 보존될 수 있지만 원본 워드프로세서의 셀 구조, 스타일 ID, 편집 객체 같은 정보는 다른 방식으로 표현되거나 사라질 수 있습니다. HWP와 HWPX 사이의 변환도 마찬가지로, 변환 후 문서가 열리는지와 원본의 모든 구조가 동일하게 보존되었는지는 별도로 확인해야 합니다.

따라서 원본을 데이터화하는 업무에서는 가능하면 원본 포맷의 구조를 먼저 읽고, 렌더링 결과는 별도의 검증 자료로 활용하는 편이 안전합니다. 원본과 변환본을 서로 다른 정보원으로 보는 것입니다.

실제 문서를 처리할 때는 무엇을 확인할까?

확인 단계질문놓치기 쉬운 부분
포맷 식별확장자와 실제 파일 형식이 일치하는가?이름만 바뀐 파일, 구버전·배포용 문서
본문문단과 글자가 원래 순서대로 존재하는가?글상자, 머리말·꼬리말, 숨은 영역
표행·열·병합과 셀 안의 문단이 보존되는가?다단 헤더, 빈 셀, 세로 병합
개체그림·캡션·도형과 본문 참조가 연결되는가?본문 밖 개체, 캡션과 객체의 연결
검증원본 화면과 데이터 결과를 다시 대조할 수 있는가?파싱 성공 뒤의 조용한 누락

DOGURANG은 포맷의 차이를 없애기보다 먼저 보존합니다

DOGURANG의 관점에서 HWP와 HWPX의 차이는 “어느 파일이 더 좋은가”보다 원본이 가진 구조를 어떤 방식으로 읽고 공통 문서 데이터로 연결할 것인가의 문제에 가깝습니다. 포맷별로 적합한 경로를 사용하되, 이후 단계에서는 문단·표·위치·원문 참조를 같은 기준으로 검토할 수 있어야 여러 문서를 함께 비교할 수 있습니다.

HWP 텍스트 추출에서 내용이 빠지는 이유와 HWPX의 XML 구조를 함께 보면 이 차이를 더 구체적으로 이해할 수 있습니다.

공식 참고자료

포맷 규격과 프로그램 지원 범위는 버전에 따라 달라질 수 있습니다. 실제 업무에서는 현재 사용하는 한/글 버전과 원본 파일, 파서의 지원 범위를 함께 확인해야 합니다.

관련 Insights