Commit graph

11 commits

Author SHA1 Message Date
LLLin000
a138100398 fix(pr1): remove has_any_author gate from affiliation/email fallback 2026-07-04 22:17:43 +08:00
LLLin000
57bb73556b feat(pr1): add frontmatter render fallback for empty metadata 2026-07-04 21:57:04 +08:00
LLLin000
8dba963394 fix: complete reference detection fixes — 5 problem families 2026-07-03 01:46:27 +08:00
LLLin000
9aa228d60c feat: layout robustness layer — robust banding, role-aware gating, two-column continuation
Task 1: Add robust band estimator core module (ocr_banding.py)
  - LayoutBandEstimate, UsableContentDecision dataclasses
  - collect_layout_band_candidates, estimate_layout_bands
  - choose_runtime_bands, decide_usable_content

Task 2: Expose dry-run robust band diagnostics in normalize_document_structure
  - layout_band_estimate field on DocumentStructure
  - Serialized diagnostics with legacy vs robust comparison

Task 3: Enable robust runtime band selection
  - _order_tail_blocks uses robust estimate + choose_runtime_bands
  - Falls back to legacy-safe bands when robust holds

Task 4: Make layout band gating role-aware
  - decide_usable_content replaces _is_in_usable_content
  - Strong roles (reference_heading/item/body, backmatter_heading/boundary)
    bypass band gating entirely
  - backmatter_body gated at Phase 4b after heading ownership check

Task 5: Column-aware two-column continuation reference attachment
  - _block_column(), _should_attach_reference_item_to_ref_section()
  - rejected_ref_items list replaces body_pool fallback

Verification: 202/202 tests pass, 14/14 paper rebuilds OK,
95FDVE4W reference ordering confirmed
2026-07-02 19:15:44 +08:00
LLLin000
78b9973123 fix: reference-zone ordering fixes (P0-P4)
P0: disambiguate table field keys from block_page_by_id in ocr_render.py
P1: add _is_tail_backmatter_continuation() guard, order backmatter correctly
P2: phase 4b tail nonref guard with tail_backmatter_blocks list
P3: page-continuation-marker false reference gate in ocr_families.py
P4: force reference heading before same-page refs, ref_item bypass usable gate
2026-07-02 19:06:06 +08:00
LLLin000
05e75e1b29 fix: PR1 deterministic OCR residual fixes
- Clamp backfill words to original bbox (Issue 3)
- Allow validation-first bare tables to fall through (Issue 1A)
- Materialize split table caption continuations (Issue 1B)
- Add short-form OCR health profile (Issue 4)
2026-07-01 21:49:45 +08:00
Research Assistant
943e5995cb fix: ownership skip also matches str(block_id) for int/string alias 2026-06-25 23:08:07 +08:00
Research Assistant
206669b0da test: render contract for table ownership and note skip 2026-06-25 22:31:01 +08:00
Research Assistant
87d3e8cae2 test: add regression tests for footnote skip, caption fallback, bare table N matching 2026-06-25 17:23:49 +08:00
Research Assistant
06d36ff501 test: update heading prefix expectation for font-size logic 2026-06-25 16:50:38 +08:00
Research Assistant
224882f697 fix: govern local figure pairing and ownership fallbacks 2026-06-22 22:15:39 +08:00