확장자가 아니라,
페이지 상태가 파서를 결정한다.
한 개의 최고 파서를 고르는 대신, 원본 구조와 페이지 상태에 맞는 경로를 선택하고 서로 다른 결과를 같은 공통 스키마로 합쳤습니다.
PDF · TIFF
표 · 도면
Structure · VLM
Relation · Provenance
Native text가 없었습니다. 확장자만 보는 라우팅이 실패하는 가장 직접적인 근거입니다.
전체 코퍼스는 운영을,
작은 정답층은 정확도를 잰다.
문서 수와 실행 단위 수, 파서 출력 수, 객체 수를 섞지 않았습니다. 정확도는 parser-blind Silver 24단위에서만 계산했고, 전체 570문서는 형식·상태 분포와 운영 범위를 확인하는 데 썼습니다.
| 문서유형 | HWP | HWPX | TIFF | 합계 | |
|---|---|---|---|---|---|
| 감리보고서 | 314 | 1 | 49 | 36 | 400 |
| 설계보고서 | 8 | 0 | 33 | 10 | 51 |
| 공사시방서 | 33 | 0 | 41 | 31 | 105 |
| 민원공문 | 5 | 0 | 5 | 0 | 10 |
| 공사사진대지 | 2 | 0 | 2 | 0 | 4 |
| 합계 | 362 | 1 | 130 | 77 | 570 |
전체 입력570문서
형식·문서유형·중복 확인사전진단22,778단위
PDF page · TIFF frame · HWP(X) sectionPrimary Silver24단위
HWP 6 · PDF 11 · TIFF 7Human Gold 인계calibration 4 · blind 20
2인 독립 작성·제3자 조정 전같은 원본에서 나온 파일과 변환본은 개발·평가 양쪽에 나누지 않아 데이터 누수를 막았습니다.
파서는 형식에 맞게 실행하고,
평가는 같은 범위에서 한다.
아래 경로의 INPUT은 파서가 실제로 받는 묶음입니다. RAW는 파서 고유 결과이고, COMMON은 비교·DB 적재를 위해 만든 표준 결과입니다.
PDF는 확장자 확인 뒤 페이지마다 native text 상태를 다시 판정했다.
Native·구조형 파서는 원본 PDF와 page index, OCR·VLM은 해당 페이지를 렌더한 PNG 또는 자동 crop을 받는다.
페이지별 common JSON 하나가 생성되고, 그 안에 text·table·cell·relation 객체 여러 개가 들어간다.
디지털은 Native,
텍스트가 없거나 희소하면 OCR이 우세했다.
같은 Silver의 핵심 문자열을 완전히 같은 문자열로 찾았는지 micro 집계했습니다. 표본 수가 작은 파일럿이며 Human Gold 최종 순위가 아닙니다.
| 입력 상태 | 채점 단위 | Native·경량 | OCR | 구조형 |
|---|---|---|---|---|
| 디지털 PDF | 2쪽 · 15 anchors | Poppler14/15 · 93.3% | Tesseract6/15 · 40.0% | OpenDataLoader14/15 · 93.3% Docling14/15 · 93.3% |
| Native text 없음 PDF | 4쪽 · 30 anchors | Poppler0/30 · 0.0% | PaddleOCR25/30 · 83.3% Tesseract21/30 · 70.0% | PP-Structure25/30 · 83.3% |
| Native text 희소 PDF | 5쪽 · 33 anchors | Poppler6/33 · 18.2% | PaddleOCR28/33 · 84.8% Tesseract18/33 · 54.5% | PP-Structure28/33 · 84.8% |
| TIFF | 7프레임 · 55 anchors | N/A | PaddleOCR42/55 · 76.4% Tesseract25/55 · 45.5% | PP-Structure42/55 · 76.4% |
| HWP 원본 | 6구간 · 39 anchors | HWP Native29/39 · 74.4% | N/A | syhwp33/39 · 84.6% |
디지털 PDFOCR로 다시 읽을 이유가 없었습니다. Native가 더 빠르고 93.3%를 기록했습니다.
텍스트 없음·희소 PDFNative 단독은 0.0%·18.2%, Paddle 계열은 83.3%·84.8%였습니다.
HWP·TIFF원본 구조와 이미지 좌표의 차이를 보존해야 같은 축에서 정직하게 비교됩니다.
파서뿐 아니라,
파서를 고르는 규칙도 채점했다.
별도 Silver 12단위·88 anchors에서 저비용, 상태별 단일, 구조 보완 정책의 품질과 비용을 같이 봤습니다.
Native + Tesseract 중심
형식·페이지 상태로 한 파서 선택
Docling 또는 PP-Structure+OCR 병합
| 정책 | Object F1 | 행·열 exact | Relation F1 | 순차 wall | RSS 하한 |
|---|---|---|---|---|---|
| R0 | 0.000 · N=2 | 0.000 · N=2 | 0.000 · N=2 | 26.230초 | 156.9 MiB |
| R1 | 0.000 · N=2 | 0.000 · N=2 | 0.000 · N=2 | 45.415초 | 2,300.8 MiB |
| R2 | 0.478 · N=12 | 0.250 · N=12 | 0.296 · N=12 | 164.793초 | 2,972.4 MiB |
R0·R1의 구조 지표는 적용 단위가 2개뿐입니다. R2의 N=12와 구조 점수를 직접 순위화하지 않습니다. R0·R1은 기존 실행 선택 simulation입니다.
VLM의 이득은 전체 페이지가 아니라,
검출된 표 안에서 났다.
사람이 자른 표나 정답 bbox는 쓰지 않았습니다. PP-Structure가 표를 찾고, 검출된 영역만 VLM으로 다시 읽어 기존 결과와 병합했습니다.
병목은 VLM보다 표 검출입니다. 검출된 표의 셀은 좋아졌지만 표 검출 8/13과 관계 F1은 개선되지 않았습니다.
| 조건 | Anchor | 표 검출 | Object F1 | Cell | Topology | Relation |
|---|---|---|---|---|---|---|
| 전체 렌더 VLM Spotting | 108/172 · 62.8% | N/A | 0.0% | 0/76 · 0.0% | 0/6 · 0.0% | 0.0% |
| PP-Structure 단독 | 146/172 · 84.9% | 8/13 · 61.5% | 25.6% | 17/76 · 22.4% | 1/6 · 16.7% | 4.2% |
| 자동 PP bbox → VLM → 병합 | 146/172 · 84.9% | 8/13 · 61.5% | 25.6% | 26/76 · 34.2% | 2/6 · 33.3% | 3.8% |
Spotting의 구조 점수 0은 모델 일반 능력의 0점이 아니라 text-span만 내는 현재 출력 계약의 결과입니다.
프로세스 성공과
쓸 수 있는 출력은 다르다.
처리시간과 메모리는 정확도와 분리했습니다. 페이지·프레임·section은 작업량이 달라 서로 다른 행의 속도를 종합 순위로 비교하지 않습니다.
| 입력 | 파서 | usable | wall p50 / p95 | RSS p50 / p95 |
|---|---|---|---|---|
| 디지털 PDF | Poppler | 29/30 | 0.130 / 0.155초 | 16.8 / 17.6 MiB |
| 디지털 PDF | Docling | 29/30 | 9.921 / 15.660초 | 1,136.3 / 1,352.2 MiB |
| 텍스트 없음 PDF | Tesseract | 28/30 | 3.406 / 6.048초 | 143.1 / 152.1 MiB |
| 텍스트 없음 PDF | PaddleOCR | 28/30 | 7.316 / 8.525초 | 2,190.7 / 2,231.2 MiB |
| 텍스트 없음 PDF | PP-Structure | 28/30 | 11.422 / 15.220초 | 2,859.1 / 2,918.3 MiB |
| TIFF | Tesseract | 30/30 | 3.379 / 5.632초 | 144.9 / 154.4 MiB |
| HWP | HWP Native | 30/30 | 0.092 / 0.256초 | 18.7 / 27.8 MiB |
| HWP | syhwp | 30/30 | 0.120 / 0.420초 | 19.3 / 26.7 MiB |
운영 수치는 파일럿 조건의 관측값이며 서비스 SLA, 동시 처리량, 전체 코퍼스 완료시간을 뜻하지 않습니다.
결과를 평문으로 뭉개지 않고,
객체와 출처 계보를 함께 저장한다.
파서마다 JSON 모양과 좌표계가 달라도 raw를 보존하고 adapter로 common-v2에 매핑했습니다. 공통화가 원문에 없는 의미를 새로 만들지는 않습니다.
<word xMin="118" yMin="84" xMax="176" yMax="101">공사명</word>
{
"unit": { "kind": "page", "index": 6 },
"objects": [{
"type": "text_line",
"text": "공사명",
"bbox": [118, 84, 176, 101]
}],
"run": { "parser": "poppler_native" }
}구조를 설명하기 위한 비식별 축약 예시입니다. 실제 원문 내용은 공개하지 않았습니다.
선택된 예시: Poppler · PDF NativeDB 적재는 구조를 저장할 수 있다는 뜻입니다. 값 정확도나 파서 우위를 뜻하지 않으며, 미관측도 곧바로 제품 미지원은 아닙니다.
가벼운 1차 파서 → 품질 검사 → 필요한 영역만 보완 → 공통 스키마 병합
Native를 기본으로 두고 표·계층이 필요할 때 구조형 파서를 추가합니다.
OCR을 기본으로 두고 표·수식·도면 난영역만 VLM으로 보완합니다.
raw와 provenance를 남겨 어떤 파서·전처리에서 나온 결과인지 역추적합니다.
상태별 라우팅 필요성, 표 영역 VLM 보완 효과, 공통 DB 적재 가능성
범용 1등 파서, HWPX 순위, 상용 정확도, Human Gold 최종 성능, 운영 SLA
모든 정확도는 단일 검토자 Silver 파일럿입니다. HWPX는 1건이라 정확도 집계에서 제외했습니다. 객체·관계 라벨은 대표 항목 진단용이며, 2인 Human Gold 작성과 제3자 조정은 아직 시작 전입니다.