Skip to content

PDF 파싱: scan-like 페이지가 표식 없이 빈 PageInfo로만 남음 #41

Description

@sminchang

현상 (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) PageInfoscan_like 플래그, (b) DocIR
    페이지 분류 진단, (c) 해당 위치에 렌더 PNG + 메타 삽입. (a)/(b)가 가볍고 기존
    별도-헬퍼 설계와도 부합.
  • 영향 위치: src/document_processor/pdf/pipeline.py:68-73, 149-163. 커밋: f14e1bc1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions