Skip to content

fix: 병합 셀 캡션 탐색을 표 첫 행으로 한정 Fixes #34 - #39

Merged
dnjsgkfka merged 4 commits into
mainfrom
fix/caption-first-row-merged-cell
Oct 22, 2026
Merged

dnjsgkfka merged 4 commits into
mainfrom
fix/caption-first-row-merged-cell

Conversation

@dnjsgkfka

@dnjsgkfka dnjsgkfka commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

문제

표 둘째 행 이하의 colspan 셀도 캡션으로 채택(confidence=inferred).
제출 기능명세서 소분류는 "표 첫 행 병합 셀 안의 캡션 탐색"이고, 코드의 docstring도 첫 행을 명시하고 있어 명세·문서·구현이 셋 다 어긋난 상태였음

재현: tests/specification/test_spec_layout.py::test_qa15_caption_must_be_in_first_row

영향

이 fallback은 1~3단계(direct / 같은 페이지 bbox / 인접 페이지)가 모두 실패했을 때만 타므로 멀쩡한 캡션을 가로채지는 않는다. 대신 캡션 없는 표에 가짜 캡션을 단다.
caption_text는 EU의 정체성이라 text·retrieval_text·retrieval_units의 prefix, table_abstract에 모두 복제되고, 분할되면 모든 조각에 반복된다. 또한 confidence가 none이 아닌 inferred로 기록돼 다운스트림에서 거를 수단이 사라진다.

변경

  • 병합 셀 탐색 범위를 첫 <tr>로 한정 (_FIRST_ROW_PATTERN)
  • bs4 대신 정규식을 쓴 이유: caption.py를 의존성 없는 모듈로 유지 (bs4는 split.py 전용)
  • docstring을 실제 동작에 맞게 수정

검증

대상 결과
tests/test_caption_merged_header.py (신규 9건) 9 passed
tests/specification/test_spec_layout.py 30 passed (qa15 전환)
기존 캡션·텍스트·섹션 테스트 25 passed
전체 132 collected / 121 passed / 0 failed / 11 skipped

Fixes #34

부수 변경

PR을 올린 뒤 CI가 두 가지 이유로 실패해 같은 브랜치에서 함께 처리

  • test 잡: dev extra에 langchain-core가 없어 QA-40·41·44가 CI에서만 ImportError로 실패
  • pip-audit 잡: pip 자체 취약점 2건은 러너 pip 업그레이드로 해소. pillow 12.3.x 24건은 docling 계열의 pillow<13.0.0 상한 때문에 올릴 수 없어 사유를 기록하고 개별 ID로 제외
  • 함께 수정이 완료된 항목들의 spec_gap 마커 3개도 제거

@dagshub

dagshub Bot commented Oct 22, 2026

Copy link
Copy Markdown

@dnjsgkfka
dnjsgkfka merged commit c478ce9 into main Oct 22, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

병합 셀 캡션 탐색이 표 첫 행을 벗어남

1 participant