lllin000_PaperForge/paperforge/worker
LLLin000 c42da204bb fix: expand crop bbox to include figure_inner_text (figures show their own labels)
figure_inner_text role means the text IS part of the figure content
(forest plot y-axis labels, nomogram variable names, panel markers).
The earlier fix listed the text as a separate below the image — that
was wrong: the text already lives inside the cropped image when the
crop bbox covers it.

Now extract_and_write_objects expands the crop bbox to include all
figure_inner_text blocks owned by the figure (via _object_owner_id,
same page). The cropped jpg contains the labels; render only emits
image + Legend.

Verified: M84CTEM9 figure_a001 (forest plot) now crops to 787x363
(previously 444x358 — missed the y-axis labels); figure_a002
(nomogram) still includes its variable labels. 105 focused tests pass.
2026-07-04 19:54:40 +08:00
..
__init__.py feat(prune): core orphan paper cleanup module 2026-05-18 21:48:18 +08:00
_domain.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00
_progress.py ocr rebuild: add --resume checkpoint, fix garbled progress bar, remove debug print 2026-06-26 17:31:52 +08:00
_retry.py docs(v1.4): commit planning artifacts, test files, and phase summaries for phases 13-19 2026-04-27 19:12:03 +08:00
_utils.py feat: ocr reading-order fixes, single-source fulltext, redo closed-loop, release notes & manual 2026-06-01 18:12:31 +08:00
asset_index.py feat: P0 fixes (ref sort, caption insert) + P1 figure containment render hygiene 2026-06-27 22:56:22 +08:00
asset_state.py style: ruff format pass across paperforge/ 2026-05-09 22:31:08 +08:00
base_views.py feat: add ocr_time frontmatter field — tracks last OCR completion time, shown in 重做OCR view 2026-06-01 15:36:11 +08:00
deep_reading.py test: lock OCR phase2 figure inventory contract 2026-06-05 00:08:30 +08:00
discussion.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00
ocr.py fix: merge figure_inner_text into figure render output 2026-07-04 19:49:38 +08:00
ocr_artifacts.py fix: close structural convergence gaps — primary-path frontmatter anchor, health spine alignment, unresolved figure clusters, artifact cache cleanup 2026-06-08 00:24:54 +08:00
ocr_attach.py test: add OCR real-paper regression tests and cleanup 2026-06-10 12:36:15 +08:00
ocr_banding.py feat: layout robustness layer — robust banding, role-aware gating, two-column continuation 2026-07-02 19:15:44 +08:00
ocr_bio.py fix: backmatter_body (author bios) after refs in skip_section_grouping render 2026-06-29 14:10:50 +08:00
ocr_blocks.py C0: add OCR_PIPELINE_V3 toggle, seed-only build_structured_blocks, stub modules 2026-07-04 15:54:53 +08:00
ocr_decisions.py test: add OCR real-paper regression tests and cleanup 2026-06-10 12:36:15 +08:00
ocr_document.py feat: Workstream B — OCR tail settlement extraction and report 2026-07-04 13:37:45 +08:00
ocr_emit.py docs: audit OCR production route and mark experimental modules 2026-06-08 12:13:07 +08:00
ocr_errors.py feat: classify OCR errors and degraded completions 2026-06-08 12:34:44 +08:00
ocr_evidence.py feat: add OCR evidence objects and paper-context summary 2026-06-05 12:15:51 +08:00
ocr_families.py fix: reference-zone ordering fixes (P0-P4) 2026-07-02 19:06:06 +08:00
ocr_figure_domain.py C1: shadow normalize in pre_match_normalize + _match_role helpers 2026-07-04 16:02:55 +08:00
ocr_figure_reader.py fix: address 5 post-review issues in previous-page locator bridge 2026-06-29 18:37:26 +08:00
ocr_figure_vnext_accounting_pass.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_figure_vnext_bundle_pass.py fix: appendix numbering cross-cutting bugs (TABLE regex, int block_id, table alpha prefix, weak-caption tie-break) 2026-07-04 01:29:06 +08:00
ocr_figure_vnext_classic_seq_pass.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_figure_vnext_composite_pass.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_figure_vnext_corpus.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_figure_vnext_group_seq_pass.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_figure_vnext_locator_pass.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_figure_vnext_passes.py fix: appendix numbering cross-cutting bugs (TABLE regex, int block_id, table alpha prefix, weak-caption tie-break) 2026-07-04 01:29:06 +08:00
ocr_figure_vnext_sidecar_pass.py fix: appendix numbering cross-cutting bugs (TABLE regex, int block_id, table alpha prefix, weak-caption tie-break) 2026-07-04 01:29:06 +08:00
ocr_figure_vnext_state.py refactor(ocr): extract generic pairing types and state from figure vnext 2026-07-03 19:39:44 +08:00
ocr_figure_vnext_types.py refactor(ocr): extract generic pairing types and state from figure vnext 2026-07-03 19:39:44 +08:00
ocr_figures.py fix: merge figure_inner_text into figure render output 2026-07-04 19:49:38 +08:00
ocr_health.py fix: PR1 deterministic OCR residual fixes 2026-07-01 21:49:45 +08:00
ocr_index.py fix: stabilize legacy OCR structure and metadata recovery 2026-06-05 13:34:43 +08:00
ocr_layout.py test: add OCR real-paper regression tests and cleanup 2026-06-10 12:36:15 +08:00
ocr_maintenance.py feat: dashboard Start Working cleanup, pf-copy click indicator, collection header revert, time sorting 2026-06-26 20:35:13 +08:00
ocr_math.py fix: add relational-operator spacing and Greek-letter preservation to math normalization 2026-06-06 17:19:33 +08:00
ocr_metadata.py fix: reuse rebuild metadata and object extraction work 2026-06-22 22:15:25 +08:00
ocr_object_writeback.py fix: guard contained figure claims by page 2026-07-04 17:30:14 +08:00
ocr_objects.py fix: expand crop bbox to include figure_inner_text (figures show their own labels) 2026-07-04 19:54:40 +08:00
ocr_orchestrator.py test: add OCR real-paper regression tests and cleanup 2026-06-10 12:36:15 +08:00
ocr_pairing_framework.py refactor(ocr): add pairing pass runner and figure domain module 2026-07-03 19:41:46 +08:00
ocr_pairing_state.py fix(ocr): unblock pairing framework merge 2026-07-03 22:50:15 +08:00
ocr_pairing_types.py refactor(ocr): extend pairing framework surface for table resources 2026-07-03 20:05:39 +08:00
ocr_pdf_spans.py feat: asset-internal figure number recovery for rotated vector figures 2026-07-02 03:00:33 +08:00
ocr_post_match_normalize.py test: add DWQQK2YB v3 parity gate 2026-07-04 18:33:32 +08:00
ocr_pre_match_normalize.py C1: shadow normalize in pre_match_normalize + _match_role helpers 2026-07-04 16:02:55 +08:00
ocr_profiles.py feat: partition OCR families inside zones 2026-06-09 17:49:52 +08:00
ocr_rebuild.py fix: merge figure_inner_text into figure render output 2026-07-04 19:49:38 +08:00
ocr_reference_signals.py fix: complete reference detection fixes — 5 problem families 2026-07-03 01:46:27 +08:00
ocr_render.py feat: Workstream A — OCR object writeback module 2026-07-04 13:16:37 +08:00
ocr_roles.py fix: inline <table> HTML blocks incorrectly assigned to media_asset 2026-07-03 01:46:46 +08:00
ocr_scores.py fix: appendix numbering cross-cutting bugs (TABLE regex, int block_id, table alpha prefix, weak-caption tie-break) 2026-07-04 01:29:06 +08:00
ocr_signatures.py fix: support Roman numeral and S-prefix table captions across roles/signatures/tables 2026-07-02 00:47:18 +08:00
ocr_structural_gate.py fix: inline <table> HTML blocks incorrectly assigned to media_asset 2026-07-03 01:46:46 +08:00
ocr_table_domain.py C1: shadow normalize in pre_match_normalize + _match_role helpers 2026-07-04 16:02:55 +08:00
ocr_table_passes.py fix: appendix numbering cross-cutting bugs (TABLE regex, int block_id, table alpha prefix, weak-caption tie-break) 2026-07-04 01:29:06 +08:00
ocr_tables.py C1: shadow normalize in pre_match_normalize + _match_role helpers 2026-07-04 16:02:55 +08:00
ocr_tail_settlement.py feat: Workstream B — OCR tail settlement extraction and report 2026-07-04 13:37:45 +08:00
ocr_versions.py style: fix lint issues in legacy backfill code 2026-06-05 13:01:55 +08:00
paper_meta.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00
paper_resolver.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00
prune.py fix(sync): avoid prune crash when optional deps are missing 2026-05-31 20:55:17 +08:00
repair.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00
status.py feat: classify OCR errors and degraded completions 2026-06-08 12:34:44 +08:00
sync.py feat: ocr reading-order fixes, single-source fulltext, redo closed-loop, release notes & manual 2026-06-01 18:12:31 +08:00
update.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00
vector_db.py chore: commit session work before hotfix switch 2026-05-18 22:47:30 +08:00