핵심 답변
HWP에서 텍스트를 추출할 때 가장 먼저 구분해야 할 것은 “파싱이 성공했는가”와 “사람이 보는 중요한 내용이 모두 보존됐는가”입니다. 한/글 문서는 본문 문단뿐 아니라 표, 글상자, 머리말·꼬리말, 각주·미주, 도형과 같은 여러 편집 요소를 가질 수 있어 파서의 지원 범위에 따라 일부 내용이 조용히 빠질 수 있습니다.
사람이 보는 한 페이지는 내부에서 하나의 텍스트 덩어리가 아닙니다
편집 화면에서는 모든 글자가 한 페이지 위에 자연스럽게 배치되어 보입니다. 하지만 한컴 도움말만 봐도 본문과 별개로 표, 글상자, 그림, 각주·미주, 머리말·꼬리말 같은 여러 개체와 편집 영역이 존재합니다. 사람이 보기에는 모두 “문서의 글자”지만 프로그램이 읽을 때는 서로 다른 경로와 구조로 접근해야 할 수 있습니다.
따라서 본문 문단 스트림을 정상적으로 읽었다고 해서 표 셀이나 글상자 안의 텍스트까지 자동으로 포함된다고 가정하면 안 됩니다. 파서가 어떤 객체를 지원하는지, 결과에서 그 객체가 실제로 나타나는지를 따로 확인해야 합니다.
화면의 정보와 내부 요소를 이렇게 나누어 생각할 수 있습니다
| 화면에서 보이는 내용 | 문서 안에서 볼 수 있는 유형 | 추출 시 확인할 점 |
|---|---|---|
| 일반 문장 | 본문 문단·런 | 문단 경계와 순서 |
| 표 안 문장과 숫자 | 표 셀 안의 문단 | 셀 위치, 병합, 헤더 관계 |
| 설명 상자 | 글상자·도형 등 개체 | 본문 밖 개체의 텍스트 포함 여부 |
| 페이지 상단·하단 반복 문구 | 머리말·꼬리말 | 본문과 구분할지, 반복을 어떻게 처리할지 |
| 본문 아래 설명 | 각주·미주 | 본문의 번호와 주석 내용 연결 |
| 그림 설명 | 캡션·관련 문단 | 어느 그림에 속하는지 관계 보존 |
누락은 ‘없음’만이 아니라 여러 형태로 생깁니다
문서 추출 품질을 볼 때는 글자가 완전히 빠지는 경우만 생각하기 쉽습니다. 실제로는 다음처럼 다른 형태의 손실도 중요합니다.
- 완전 누락 — 화면에 보이는 문장이나 숫자가 결과에 전혀 없습니다.
- 부분 누락 — 표 셀 일부, 긴 글상자의 뒤쪽처럼 일부만 남습니다.
- 순서 손실 — 글자는 모두 있으나 읽기 순서가 달라 문장이 뒤섞입니다.
- 관계 손실 — 표의 헤더와 값, 각주 번호와 각주 내용처럼 연결이 끊깁니다.
- 중복 — 같은 내용이 본문과 별도 객체에서 동시에 읽혀 두 번 나타납니다.
이 중 관계 손실과 중복은 단순한 문자 개수 비교만으로는 찾기 어렵습니다.
가장 위험한 것은 오류 메시지가 없는 ‘조용한 누락’입니다
프로그램이 예외 없이 종료되고 출력 파일까지 만들어지면 보통 성공으로 기록합니다. 그러나 문서 처리에서는 이것이 가장 위험한 착시가 될 수 있습니다. 예를 들어 공고문에 자격조건이 다섯 개 있었는데 글상자 안 조건 하나가 빠졌다면, 파서는 기술적으로 성공했지만 사용자가 보는 핵심 정보는 불완전합니다.
예시 — 원문에는 참가조건 5개가 있고 추출 결과에는 본문 4개만 남아 있다고 가정해 봅시다. 처리 상태가 SUCCESS여도 내용 보존 관점에서는 HOLD 또는 REVIEW가 필요할 수 있습니다. “에러가 없었다”와 “중요한 정보가 모두 있다”를 분리해야 하는 이유입니다.
파서마다 결과가 다른 이유는 지원 범위와 해석 방식이 다르기 때문입니다
같은 HWP 파일을 두 도구에 넣었는데 결과가 다를 수 있습니다. 하나는 본문 문단 중심으로 빠르게 텍스트를 만들고, 다른 하나는 표·개체·각주까지 더 넓게 순회할 수 있습니다. 또는 둘 다 같은 객체를 읽더라도 문단 순서를 만들거나 중복을 제거하는 규칙이 다를 수 있습니다.
그래서 도구를 비교할 때는 “몇 자를 추출했는가”뿐 아니라 어떤 객체 유형을 읽는가, 원문 위치를 남기는가, 표 구조를 보존하는가, 누락을 감지하는가를 함께 보는 편이 정확합니다.
표 안의 글자를 모두 읽어도 표를 제대로 읽은 것은 아닐 수 있습니다
표 셀의 텍스트가 전부 결과에 존재하면 누락 문제는 해결된 것처럼 보입니다. 그러나 헤더·행·열·병합 관계가 사라지면 숫자의 의미가 달라질 수 있습니다. 예를 들어 “10, 20, 30”을 모두 읽었더라도 어느 값이 수량이고 어느 값이 단가인지 모르면 구조적으로는 불완전합니다.
표가 많은 문서는 왜 텍스트 추출만으로 부족한가에서는 이 차이를 값, 셀, 구조, 의미의 네 단계로 나누어 설명합니다.
전체 글자 수보다 구조별 표본 대조가 더 유용할 때가 많습니다
원문 10만 자, 추출결과 10만 자처럼 총량이 같아도 같은 내용이라는 보장은 없습니다. 한 부분이 누락되고 다른 부분이 중복되면 총량이 비슷할 수 있기 때문입니다. 특히 반복되는 머리말·꼬리말과 본문을 함께 읽는 도구에서는 문자 수가 오히려 늘 수 있습니다.
실무에서는 문서 유형별로 위험한 요소를 정하고 표본을 대조하는 방법이 유용합니다. 표가 중요하면 표 개수와 주요 셀을, 각주가 중요하면 본문 번호와 각주 내용을, 글상자가 많으면 개체 안 텍스트를 별도로 확인하는 방식입니다.
실제 검증에서는 무엇을 확인할까?
| 검증 항목 | 확인 질문 | 문제가 있으면 |
|---|---|---|
| 본문 | 주요 문단과 제목이 순서대로 존재하는가? | 문단 파싱·읽기 순서 확인 |
| 표 | 표 수와 주요 셀, 병합 구조가 맞는가? | 표 전용 경로 또는 렌더 대조 |
| 각주·미주 | 주석 번호와 내용이 함께 남았는가? | 주석 객체 처리 범위 확인 |
| 글상자·도형 | 본문 밖 객체의 텍스트가 포함되는가? | 개체 순회 범위 확인 |
| 머리말·꼬리말 | 필요한 내용은 보존되고 반복은 제어되는가? | 본문과 별도 레이어로 관리 |
| 중복 | 같은 문자열이 두 경로에서 중복되지 않는가? | 출처 객체와 위치로 중복 원인 확인 |
DOGURANG은 파싱 성공과 내용 보존을 따로 봅니다
DOGURANG에서 중요한 것은 파일을 열었다는 사실보다, 후속 분석에 필요한 구조와 내용이 실제로 남아 있는지 확인하는 것입니다. 특히 표와 본문 밖 객체처럼 누락 위험이 큰 요소는 별도 관찰 대상으로 보고, 결과가 불완전하면 그대로 READY로 넘기지 않는 방향이 문서 검토 품질에 더 적합합니다.
HWP와 HWPX의 저장 방식 차이는 HWP와 HWPX는 무엇이 다른가에서, 스캔 문서의 인식 누락은 스캔 PDF와 OCR에서 이어서 볼 수 있습니다.
공식 참고자료
개별 파서의 지원 범위는 제품과 버전에 따라 다릅니다. 실제 누락 여부는 사용 중인 도구의 문서와 원본 파일을 기준으로 확인해야 합니다.