현상 (Observed)
PDF에 구조화(structured) 페이지와 스캔형(scan-like) 페이지가 섞여 있을 때,
parse_pdf_to_doc_ir은 STRUCTURED 페이지만 파싱합니다(pdf/pipeline.py:68-73).
SCAN_LIKE 페이지는 _apply_probe_page_sizes(pdf/pipeline.py:149-163)에서
geometry만 있는 빈 PageInfo 로 다시 채워지고, 스캔으로 분류돼 건너뛰었다는
표식이 전혀 없습니다. 그 결과 DocIR 소비자는 스캔 페이지를 빈 페이지와 구분할 수
없고, 텍스트 PDF 중간에 끼인 소수의 스캔 페이지가 다운스트림에서 조용히 누락됩니다.
기대 (Expected)
파싱 결과가 "이 페이지는 SCAN_LIKE로 분류돼 내용이 생략됨"을 프로그래밍적으로
알 수 있어야 합니다 — 예: PageInfo에 page 단위 플래그, 또는 DocIR에 페이지
분류 진단(summary). 그래야 소비자가 경고/로그를 남기거나 OCR로 보낼 수 있습니다.
(렌더된 PNG + 메타를 해당 위치에 끼워넣는 것도 한 방법이지만, 최소 요구는 "감지
가능한 신호"입니다.)
재현 (Reproduction)
from document_processor import DocIR
from document_processor.pdf.parsing import probe_pdf, decide_page, summarize_page_decisions
pdf = "mixed.pdf" # structured 페이지 + 중간에 scan-like 페이지 몇 장
# 1) 분류기는 스캔 페이지를 이미 인식한다
decisions = [decide_page(pp) for pp in probe_pdf(pdf).page_profiles]
print(summarize_page_decisions(decisions)) # 예: {'structured': 18, 'scan_like': 2}
# 2) 그러나 파싱된 DocIR에는 대응되는 표식이 없다:
# 스캔 페이지는 geometry만 있는 PageInfo로만 존재(내용 없음, scan 플래그 없음)
doc = DocIR.from_file(pdf)
print([p.page_number for p in doc.pages]) # 스캔 페이지 번호도 포함 — 빈 페이지와 구분 불가
샘플 mixed.pdf는 별도 첨부 예정(텍스트 페이지 + 중간 스캔 페이지 혼합 PDF).
맥락 (Context)
- 감지 자체는 내부에 이미 있음(
decide_page / summarize_page_decisions), PR #28이
render_scan_like_pdf_pages로 스캔 페이지를 PNG로 별도 렌더하는 기능을 추가했으나,
둘 다 일반 파싱이 반환하는 DocIR에는 노출되지 않음.
- 영향: DocIR 기반 다운스트림(페이지 추출/분할)이 스캔 영역을 표시·분기할 수 없고,
중간 스캔 페이지는 로그도 없이 조용히 누락됨.
- 가능한 해법(메인테이너 판단): (a)
PageInfo에 scan_like 플래그, (b) DocIR에
페이지 분류 진단, (c) 해당 위치에 렌더 PNG + 메타 삽입. (a)/(b)가 가볍고 기존
별도-헬퍼 설계와도 부합.
- 영향 위치:
src/document_processor/pdf/pipeline.py:68-73, 149-163. 커밋: f14e1bc1.
현상 (Observed)
PDF에 구조화(structured) 페이지와 스캔형(scan-like) 페이지가 섞여 있을 때,
parse_pdf_to_doc_ir은 STRUCTURED 페이지만 파싱합니다(pdf/pipeline.py:68-73).SCAN_LIKE 페이지는
_apply_probe_page_sizes(pdf/pipeline.py:149-163)에서geometry만 있는 빈
PageInfo로 다시 채워지고, 스캔으로 분류돼 건너뛰었다는표식이 전혀 없습니다. 그 결과 DocIR 소비자는 스캔 페이지를 빈 페이지와 구분할 수
없고, 텍스트 PDF 중간에 끼인 소수의 스캔 페이지가 다운스트림에서 조용히 누락됩니다.
기대 (Expected)
파싱 결과가 "이 페이지는 SCAN_LIKE로 분류돼 내용이 생략됨"을 프로그래밍적으로
알 수 있어야 합니다 — 예:
PageInfo에 page 단위 플래그, 또는DocIR에 페이지분류 진단(summary). 그래야 소비자가 경고/로그를 남기거나 OCR로 보낼 수 있습니다.
(렌더된 PNG + 메타를 해당 위치에 끼워넣는 것도 한 방법이지만, 최소 요구는 "감지
가능한 신호"입니다.)
재현 (Reproduction)
맥락 (Context)
decide_page/summarize_page_decisions), PR #28이render_scan_like_pdf_pages로 스캔 페이지를 PNG로 별도 렌더하는 기능을 추가했으나,둘 다 일반 파싱이 반환하는 DocIR에는 노출되지 않음.
중간 스캔 페이지는 로그도 없이 조용히 누락됨.
PageInfo에scan_like플래그, (b)DocIR에페이지 분류 진단, (c) 해당 위치에 렌더 PNG + 메타 삽입. (a)/(b)가 가볍고 기존
별도-헬퍼 설계와도 부합.
src/document_processor/pdf/pipeline.py:68-73, 149-163. 커밋:f14e1bc1.