docvortex 0.4.6__tar.gz → 0.4.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docvortex-0.4.6/src/docvortex.egg-info → docvortex-0.4.8}/PKG-INFO +1 -1
- docvortex-0.4.8/docs/flash-manual-annotations-2026-09-15.md +149 -0
- docvortex-0.4.8/docs/flash-round2-annotations-2026-09-15.md +112 -0
- docvortex-0.4.8/docs/flash-rule-generalization-2026-09-15.md +86 -0
- docvortex-0.4.8/docs/flash-spatial-layout-followup-2026-09-16.md +48 -0
- docvortex-0.4.8/docs/flash-spatial-layout-round3-2026-09-16.md +76 -0
- docvortex-0.4.8/docs/flash-title-coverage-2026-09-16.md +25 -0
- docvortex-0.4.8/src/docvortex/analyzers/native/pdf/annotation_bands.py +161 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +175 -5
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/code_blocks.py +80 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/formulas.py +423 -6
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/graphics.py +154 -0
- docvortex-0.4.8/src/docvortex/analyzers/native/pdf/layout_evidence.py +104 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/line_layout.py +2 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/line_merging.py +123 -7
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/models.py +9 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/native_text.py +20 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/pipeline.py +168 -8
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_detection.py +66 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_materialization.py +103 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_rules.py +24 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +23 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +106 -8
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +1 -0
- docvortex-0.4.8/src/docvortex/analyzers/native/pdf/text_assembly/continuity.py +465 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +23 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +36 -40
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +102 -3
- docvortex-0.4.8/src/docvortex/analyzers/native/pdf/text_roles.py +60 -0
- docvortex-0.4.8/src/docvortex/analyzers/native/pdf/title_analysis/compact_titles.py +93 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +8 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +23 -2
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +130 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/visual_annotations.py +29 -3
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/_document.py +1 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/native_objects.py +195 -54
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/native_text_geometry.py +5 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/text/extract.py +34 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/pages.py +1 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/paragraphs.py +5 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/version.py +1 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/visualization.py +4 -29
- {docvortex-0.4.6 → docvortex-0.4.8/src/docvortex.egg-info}/PKG-INFO +1 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex.egg-info/SOURCES.txt +42 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/flash_layout_geometry_manifest.json +1 -1
- docvortex-0.4.8/tests/fixtures/flash_manual_annotations.json +5695 -0
- docvortex-0.4.8/tests/fixtures/flash_manual_review_decisions.json +1208 -0
- docvortex-0.4.8/tests/fixtures/flash_reviewed_history.json +1569 -0
- docvortex-0.4.8/tests/fixtures/flash_round2_annotations.json +2654 -0
- docvortex-0.4.8/tests/fixtures/flash_round2_review_decisions.json +386 -0
- docvortex-0.4.8/tests/fixtures/flash_round3_annotations.json +4033 -0
- docvortex-0.4.8/tests/fixtures/flash_round3_followup_review_decisions.json +378 -0
- docvortex-0.4.8/tests/fixtures/flash_round3_review_decisions.json +703 -0
- docvortex-0.4.8/tests/fixtures/flash_rule_generalization_review_decisions.json +18 -0
- docvortex-0.4.8/tests/fixtures/flash_title_coverage_review_decisions.json +97 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/native_pdf_table_demo_manifest.json +5 -5
- docvortex-0.4.8/tests/test_history_geometry_tools.py +240 -0
- docvortex-0.4.8/tests/test_release_ci_gate.py +205 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_flash_pdf_test_utils.py +62 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/connexin.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/fornax.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/frames_v1.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/frames_v2.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/k2_treap.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/mmlu_redux.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/nash_review.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/annotated/nougat.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/journal_dual_caption.pdf +0 -0
- docvortex-0.4.8/tests/unittest/pdfs/flash_layout/quantum_appendix_layout.pdf +0 -0
- docvortex-0.4.8/tests/unittest/test_flash_bbox_grid_comparison.py +105 -0
- docvortex-0.4.8/tests/unittest/test_flash_manual_annotations.py +305 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_auxiliary_text.py +0 -1
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_layout_repairs.py +1 -1
- docvortex-0.4.8/tests/unittest/test_flash_pdf_reviewed_history.py +30 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_samples.py +15 -13
- docvortex-0.4.8/tests/unittest/test_flash_pdf_text_visibility.py +103 -0
- docvortex-0.4.8/tests/unittest/test_flash_round2_annotations.py +159 -0
- docvortex-0.4.8/tests/unittest/test_flash_round3_annotations.py +261 -0
- docvortex-0.4.8/tests/unittest/test_flash_rule_generalization.py +360 -0
- docvortex-0.4.8/tests/unittest/test_flash_spatial_evidence.py +317 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_document.py +4 -3
- docvortex-0.4.8/tests/unittest/test_pdf_object_clipping.py +109 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_visualization.py +23 -11
- {docvortex-0.4.6 → docvortex-0.4.8}/LICENSE.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/MANIFEST.in +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/README.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/README.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/demo.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/README.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/docx_01.doc +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/docx_01.docx +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/pptx_01.ppt +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/pptx_01.pptx +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/rtf_01.rtf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/xlsx_01.xls +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/office_docs/xlsx_01.xlsx +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/caibao1.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/demo1.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/demo2.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/demo3.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/demo4.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/demo6.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs/small_ocr.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/HTML_PROTOCOL.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/JSON_PROTOCOL.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/METADATA.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/PDF_FONTS.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/RENDER_OWNERSHIP.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/USAGE.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/docs/sdk-0.4.md +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/pyproject.toml +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/schemas/middle-2.0.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/schemas/model-2.0.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/setup.cfg +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/image.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/names.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/csv.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/constants.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/errors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/package.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/properties.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/anchors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/constants.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/document.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/errors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/resources.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/html/selector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/images.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/package.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/path.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/errors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/image.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/limits.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/opc.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/streams.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/rule_band.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/analyzers/pdf.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/assets/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/assets/images.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/assets/store.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/cli.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/html/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/html/contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/html/materializer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/html/parser.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/html/resources.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/codecs/json.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/inline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/links.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/markup/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/markup/anchors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/markup/formula.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/markup/projector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/markup/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/mathml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/normalization.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/spans.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/content.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/document.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/html.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/rules.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/table/structure.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/content/tree.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/detection.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/filetypes.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/page_range.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/classify.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/constants.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/font_runtime.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/images.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/native_annotations.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/native_contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/native_coordinates.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/pdfium.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/raster.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/text/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/text/_contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/text/dedup.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/text/geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/text/groups.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/pdf/visuals.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/properties.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/document/source.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/errors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/export/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/export/bundle.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/export/files.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/export/middle.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_coordinates.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_hyperlink.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_image.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_image_operations.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_image_payload.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/_text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/image_encoding.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/language.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/type_identity.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/foundation/xml_names.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/options.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/content.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/document.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/lists.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/page_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/postprocess/visual.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/public_api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/common/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/common/context.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/common/html_table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/common/index.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/common/list_items.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/common/planner.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/assets.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/inline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/math.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/docx/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/epub/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/epub/assets.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/epub/package.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/epub/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/html/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/html/inline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/html/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/html/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/latex/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/latex/assets.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/latex/inline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/latex/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/latex/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/assets.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/inline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/markdown/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/assets.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/diagnostics.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/font_plan.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/formula.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/formula_layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/inline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/original.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/pagination.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/paragraph.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/table_content.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/table_layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/pdf/title_layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/contracts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/docx.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/epub.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/fragments.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/html.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/latex.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/markdown.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/pdf.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/render/structured_content.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/epub/docvortex.css +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/fasttext-langdetect/lid.176.ftz +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/fonts/NOTICE +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/fonts/manifest.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/html/docvortex.css +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/html/docvortex.min.css +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/resources/unicode/EquivalentUnifiedIdeograph-17.0.0.txt +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/result.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex/schema.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex.egg-info/dependency_links.txt +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex.egg-info/entry_points.txt +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex.egg-info/requires.txt +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/src/docvortex.egg-info/top_level.txt +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/benchmarks/flash_pdf.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/benchmarks/native_pdf_table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/benchmarks/pdf_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/benchmarks/pipeline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/flash_layout_block_expectations.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/pdf_char_dedup.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/fixtures/rtf/semantic.rtf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_architecture.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_benchmark_entrypoint.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_brand_protocol.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_cli_logging.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_complete_pipeline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_converter_lifecycle.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_document_envelope.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_document_metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_format_matrix.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_geometry_api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_html_namespace.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_mixed_font_script_reference.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_analysis_api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_font_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_font_runtime.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_model_text_normalization.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_output_text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_render_pool.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_source_row_merging.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_pdf_symbol_normalization.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_public_export_api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_public_image_api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_public_pipeline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_refactor_raster.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_refactor_rendering.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_refactor_resources.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_render_ownership.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_renderer_branding.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_shared_boundaries.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_system_font_pdf_pipeline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/test_validated_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_epub_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_image_mtef_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_legacy_doc_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_legacy_xls_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_metafile_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_mtef_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_mtef_v5_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_native_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_odf_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_ofd_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/_span_test_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/flash_layout/bloom_form_labels.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/flash_layout/journal_layout_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/flash_layout/math_display_formulas.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/pdfs/test.pdf +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_backend_architecture.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_backend_block_object_regressions.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_docx_assets.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_docx_complex_fields.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_docx_math.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_docx_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_docx_special_char_tables.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_docx_table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_emfplus_integration.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_epub_backlinks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_epub_quoted_note_types.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_epub_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_csv.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_docx_equationxml.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_epub.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_html.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_image_mtef.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_legacy_doc.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_legacy_ppt.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_legacy_xls.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_markup_anchors.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_model.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_mtef_v5.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_odf.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_ofd.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_office_image_mtef.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_office_metafile.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_office_models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_office_title_types.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_equation_images.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_extractor.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_formulas.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_graphics.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_native_text.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_scripts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_semantics.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_tables.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_titles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_rtf.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_shared_helpers.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_guess_suffix_ole2.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_html_css_build.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_html_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_html_security.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_latex_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_markdown_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_middle_json_block_models.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_middle_json_export.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_middle_json_validator.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_model_json.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_native_pdf_table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_native_table_performance_equivalence.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_ofd_assembly.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_ofd_vector_tables.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_office_demo_exports.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_office_demo_pages.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_office_parser_regressions.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_cjk_style.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_cjk_wrapping.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_classify.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_demo_links.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_diagnostic_levels.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_formula_layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_original_layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_pagination.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_paragraph_cache.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_structured_tables.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_table_cache.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_table_round2.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_text_dedup.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_text_styles.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_title_font_plan.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_pdf_title_space.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_postprocess_page_blocks.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_postprocess_pages.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_postprocess_paragraphs.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_postprocess_visual.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_render_api.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_render_html_table.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_render_image_renderer.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_render_list_index_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_structured_content_render.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_table_merge.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_table_merge_cell_merge.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_text_block_anchor.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_text_boundary_rules.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tests/unittest/test_text_utils.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/__init__.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/build_html_css.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/calibrate_pdf_geometry.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/capture_baseline.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/capture_platform_layout.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/compare_font_platforms.py +0 -0
- {docvortex-0.4.6 → docvortex-0.4.8}/tools/font_geometry.py +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Flash 人工标注修复验收(2026-09-15)
|
|
2
|
+
|
|
3
|
+
基于 `cefa1208`,仅修改 DocVortex Flash 原生解析规则。公共 API 与 code/code_body 类型兼容;未引入 OCR/VLM,也无文件名、页码或论文内容生产特例。
|
|
4
|
+
|
|
5
|
+
## 结果
|
|
6
|
+
|
|
7
|
+
- 8 份完整原件、118 页,87 组标注:85 组修复通过;MMLU 第 19、20 页按保守策略拆分明确段落并保留少量不确定短条目。
|
|
8
|
+
- 19 份历史语料、168 页,以干净 cefa1208 重跑结果为比较起点,逐页审阅变化。新增 `flash_reviewed_history.json` 冻结这次确认的全部逐页输出。旧几何清单有先前已陈旧的条目,未整体覆盖。
|
|
9
|
+
- 表格清单保留 51 表(48 HTML、3 保守投影)。三张表仅裁剪边界变化;一处旧清单空格偏差在 cefa1208 已复现,单独校准。
|
|
10
|
+
|
|
11
|
+
## 规则修复
|
|
12
|
+
|
|
13
|
+
1. 原生对象遍历传播父级裁剪,区分父坐标和对象矩阵;路径、点阵图和 Form 使用同一有效裁剪。旋转与嵌套 Form 有渲染像素反例。
|
|
14
|
+
2. 图题、路径、点阵图与标签共同提供图形证据;白背景不作为独立扩框依据,真实代码、表格和正文形成屏障。
|
|
15
|
+
3. 行与段落保留来源成员,段首强调回到正文并保留粗体;真实行间公式分隔正文。
|
|
16
|
+
4. 公式要求数学和排版证据,补分式、上下限、附录编号及小字符;分数线不触发脚注。彩色边角 logo 和文献尾行有排除证据。
|
|
17
|
+
5. 图表题支持附录编号、宽 caption/窄图、整图与子图绑定;表格用规则线和单元格续行补足尾行及表头;无横线算法使用标题、控制结构与缩进聚合。
|
|
18
|
+
6. 页眉数字匹配避开文献卷页,脚注限定栏与分隔线;机构编号、紧排参考文献共享成员分组。
|
|
19
|
+
|
|
20
|
+
## 逐组人工标注裁决
|
|
21
|
+
|
|
22
|
+
| 标注 ID | 原件 / 物理页 | 原块序号 | 结论 | 验收说明 |
|
|
23
|
+
| --- | --- | --- | --- | --- |
|
|
24
|
+
| nougat-03-01 | 2308.13418v1.pdf / 3 | 2 | 修复通过 | 真实绘图成员和边缘标签归为完整图;最大/最小边界与正文排除检查通过。 |
|
|
25
|
+
| nougat-05-02 | 2308.13418v1.pdf / 5 | 10,11 | 修复通过 | 行间公式完整聚合;分式、上下限或编号归属完整,未保留游离小块。 |
|
|
26
|
+
| nougat-05-03 | 2308.13418v1.pdf / 5 | 3 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
27
|
+
| nougat-06-04 | 2308.13418v1.pdf / 6 | 区域定位 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
28
|
+
| nougat-08-05 | 2308.13418v1.pdf / 8 | 4 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
29
|
+
| nougat-13-06 | 2308.13418v1.pdf / 13 | 4 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
30
|
+
| nougat-08-07 | 2308.13418v1.pdf / 8 | 9,10,11,12,13,14,15,16,17 | 修复通过 | 行间公式完整聚合;分式、上下限或编号归属完整,未保留游离小块。 |
|
|
31
|
+
| nougat-09-08 | 2308.13418v1.pdf / 9 | 3,4,5,6,7,8,9,10 | 修复通过 | 行间公式完整聚合;分式、上下限或编号归属完整,未保留游离小块。 |
|
|
32
|
+
| nougat-02-09 | 2308.13418v1.pdf / 2 | 11,12 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
33
|
+
| nougat-02-10 | 2308.13418v1.pdf / 2 | 13,14 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
34
|
+
| nougat-04-11 | 2308.13418v1.pdf / 4 | 区域定位 | 修复通过 | 段内强调合入 text,粗体保留;真正的独立节标题保留。 |
|
|
35
|
+
| mmlu_redux-02-01 | 2406.04127v2.pdf / 2 | 区域定位 | 修复通过 | 真实绘图成员和边缘标签归为完整图;最大/最小边界与正文排除检查通过。 |
|
|
36
|
+
| mmlu_redux-05-02 | 2406.04127v2.pdf / 5 | 区域定位 | 修复通过 | 真实绘图成员和边缘标签归为完整图;最大/最小边界与正文排除检查通过。 |
|
|
37
|
+
| mmlu_redux-07-03 | 2406.04127v2.pdf / 7 | 2 | 修复通过 | 五个反复出现的粗体引导短语分别成段,五段均保留行内粗体。 |
|
|
38
|
+
| mmlu_redux-09-04 | 2406.04127v2.pdf / 9 | 8,9 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
39
|
+
| mmlu_redux-10-05 | 2406.04127v2.pdf / 10 | 9,10,11,12 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
40
|
+
| mmlu_redux-19-06 | 2406.04127v2.pdf / 19 | 区域定位 | 按保守策略保留 | 已有重复粗体与句尾证据的长段已拆开;少量紧贴的单行短条目仍保持原组合,避免放宽阈值误拆普通段落。 |
|
|
41
|
+
| mmlu_redux-20-07 | 2406.04127v2.pdf / 20 | 区域定位 | 按保守策略保留 | 已有重复粗体与句尾证据的长段已拆开;少量紧贴的单行短条目仍保持原组合,避免放宽阈值误拆普通段落。 |
|
|
42
|
+
| frames_v1-04-01 | 2409.12941v1.pdf / 4 | 2,3,4,5,6 | 修复通过 | 完整表区域及 HTML 单元格通过,尾行/外置表头已纳入。 |
|
|
43
|
+
| frames_v1-08-02 | 2409.12941v1.pdf / 8 | 5 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
44
|
+
| frames_v1-10-03 | 2409.12941v1.pdf / 10 | 9,10,11 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
45
|
+
| frames_v1-11-04 | 2409.12941v1.pdf / 11 | 16,17 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
46
|
+
| frames_v2-01-01 | 2409.12941v2.pdf / 1 | 5 | 修复通过 | 独立标题保留 paragraph_title,正文段首强调使用行内样式。 |
|
|
47
|
+
| frames_v2-01-02 | 2409.12941v2.pdf / 1 | 10,11 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
48
|
+
| frames_v2-04-03 | 2409.12941v2.pdf / 4 | 1,2,3 | 修复通过 | 完整表区域及 HTML 单元格通过,尾行/外置表头已纳入。 |
|
|
49
|
+
| frames_v2-04-04 | 2409.12941v2.pdf / 4 | 8,9 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
50
|
+
| frames_v2-05-05 | 2409.12941v2.pdf / 5 | 2 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
51
|
+
| frames_v2-05-06 | 2409.12941v2.pdf / 5 | 4,5 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
52
|
+
| frames_v2-06-07 | 2409.12941v2.pdf / 6 | 2,3,4,5,6,7 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
53
|
+
| frames_v2-07-08 | 2409.12941v2.pdf / 7 | 5,6 | 修复通过 | 算法聚合为 code/code_body,caption 独立;没有新增公共类型。 |
|
|
54
|
+
| frames_v2-07-09 | 2409.12941v2.pdf / 7 | 9,10 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
55
|
+
| frames_v2-09-10 | 2409.12941v2.pdf / 9 | 9,10 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
56
|
+
| frames_v2-09-11 | 2409.12941v2.pdf / 9 | 11,12,13 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
57
|
+
| frames_v2-09-12 | 2409.12941v2.pdf / 9 | 14,15 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
58
|
+
| frames_v2-09-13 | 2409.12941v2.pdf / 9 | 16,17 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
59
|
+
| frames_v2-09-14 | 2409.12941v2.pdf / 9 | 19,20 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
60
|
+
| frames_v2-09-15 | 2409.12941v2.pdf / 9 | 21,22 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
61
|
+
| frames_v2-09-16 | 2409.12941v2.pdf / 9 | 23,24,25,26,27,28,29 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
62
|
+
| frames_v2-09-17 | 2409.12941v2.pdf / 9 | 30,31 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
63
|
+
| nash_review-01-01 | 7061196.pdf / 1 | 10 | 修复通过 | 脚注类型与成员范围通过;相邻栏正文没有被纳入。 |
|
|
64
|
+
| nash_review-01-02 | 7061196.pdf / 1 | 11 | 修复通过 | 彩色出版 logo 归为 image,普通黑色页底公式反例保留。 |
|
|
65
|
+
| nash_review-03-03 | 7061196.pdf / 3 | 区域定位 | 修复通过 | 真实绘图成员和边缘标签归为完整图;最大/最小边界与正文排除检查通过。 |
|
|
66
|
+
| nash_review-05-04 | 7061196.pdf / 5 | 区域定位 | 修复通过 | 真实绘图成员和边缘标签归为完整图;最大/最小边界与正文排除检查通过。 |
|
|
67
|
+
| nash_review-08-05 | 7061196.pdf / 8 | 区域定位 | 修复通过 | 真实绘图成员和边缘标签归为完整图;最大/最小边界与正文排除检查通过。 |
|
|
68
|
+
| nash_review-12-06 | 7061196.pdf / 12 | 16,17,18,19,20,21 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
69
|
+
| nash_review-14-07 | 7061196.pdf / 14 | 区域定位 | 修复通过 | 参考文献卷页尾行回到对应条目,不再被重复页眉规则认领。 |
|
|
70
|
+
| nash_review-15-08 | 7061196.pdf / 15 | 区域定位 | 修复通过 | 参考文献卷页尾行回到对应条目,不再被重复页眉规则认领。 |
|
|
71
|
+
| connexin-02-01 | 12352684 (1)-需要重打印.pdf / 2 | 9,10 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
72
|
+
| connexin-05-02 | 12352684 (1)-需要重打印.pdf / 5 | 25,26 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
73
|
+
| connexin-05-03 | 12352684 (1)-需要重打印.pdf / 5 | 27,28 | 修复通过 | 参考文献 21、22 分为两个完整条目;该页不再有误识别公式。 |
|
|
74
|
+
| fornax-01-01 | 公式密集span不规范-两个block重叠部分.pdf / 1 | 区域定位 | 修复通过 | 作者行保留上标编号;九个机构按 1–9 排列,邮箱随机构 1,日期独立。 |
|
|
75
|
+
| fornax-04-02 | 公式密集span不规范-两个block重叠部分.pdf / 4 | 5,6 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
76
|
+
| fornax-05-03 | 公式密集span不规范-两个block重叠部分.pdf / 5 | 区域定位 | 修复通过 | 排除把分数线当脚注线的路径;公式同时包含分子、分母和 (8),下方两段保持 text。 |
|
|
77
|
+
| fornax-06-04 | 公式密集span不规范-两个block重叠部分.pdf / 6 | 7 | 修复通过 | 脚注类型与成员范围通过;相邻栏正文没有被纳入。 |
|
|
78
|
+
| fornax-08-05 | 公式密集span不规范-两个block重叠部分.pdf / 8 | 区域定位 | 修复通过 | ModelJson 识别为 caption,最终输出保留对应图表 caption 类型。 |
|
|
79
|
+
| fornax-11-06 | 公式密集span不规范-两个block重叠部分.pdf / 11 | 3,4,5,6,7,8,9,10 | 修复通过 | 完整表区域及 HTML 单元格通过,尾行/外置表头已纳入。 |
|
|
80
|
+
| fornax-11-07 | 公式密集span不规范-两个block重叠部分.pdf / 11 | 16,17 | 修复通过 | 编号 1 与 2 分段,This is illustrated 及后续说明归到第 2 段。 |
|
|
81
|
+
| fornax-13-08 | 公式密集span不规范-两个block重叠部分.pdf / 13 | 区域定位 | 修复通过 | 悬挂缩进恢复 82 条参考文献;单行和多行条目混排,期刊/年份尾行归属通过。 |
|
|
82
|
+
| fornax-14-09 | 公式密集span不规范-两个block重叠部分.pdf / 14 | 5,6,7,8,9 | 修复通过 | 行间公式完整聚合;分式、上下限或编号归属完整,未保留游离小块。 |
|
|
83
|
+
| k2_treap-02-01 | 公式密集span不规范论文.pdf / 2 | 2,3 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
84
|
+
| k2_treap-02-02 | 公式密集span不规范论文.pdf / 2 | 13,14 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
85
|
+
| k2_treap-03-03 | 公式密集span不规范论文.pdf / 3 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
86
|
+
| k2_treap-03-04 | 公式密集span不规范论文.pdf / 3 | 8,9 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
87
|
+
| k2_treap-04-05 | 公式密集span不规范论文.pdf / 4 | 5,6 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
88
|
+
| k2_treap-04-06 | 公式密集span不规范论文.pdf / 4 | 7,8,9,10,11,12,13,14,15,16,17,18 | 修复通过 | 算法聚合为 code/code_body,caption 独立;没有新增公共类型。 |
|
|
89
|
+
| k2_treap-04-07 | 公式密集span不规范论文.pdf / 4 | 25,26 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
90
|
+
| k2_treap-05-08 | 公式密集span不规范论文.pdf / 5 | 2,3 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
91
|
+
| k2_treap-05-09 | 公式密集span不规范论文.pdf / 5 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
92
|
+
| k2_treap-06-10 | 公式密集span不规范论文.pdf / 6 | 2,3 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
93
|
+
| k2_treap-06-11 | 公式密集span不规范论文.pdf / 6 | 6,7 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
94
|
+
| k2_treap-06-12 | 公式密集span不规范论文.pdf / 6 | 11,12,13,14,15,16,17 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
95
|
+
| k2_treap-06-13 | 公式密集span不规范论文.pdf / 6 | 18 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
96
|
+
| k2_treap-07-14 | 公式密集span不规范论文.pdf / 7 | 8,9 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
97
|
+
| k2_treap-07-15 | 公式密集span不规范论文.pdf / 7 | 11,12 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
98
|
+
| k2_treap-07-16 | 公式密集span不规范论文.pdf / 7 | 16,17 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
99
|
+
| k2_treap-08-17 | 公式密集span不规范论文.pdf / 8 | 4,5,6 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
100
|
+
| k2_treap-08-18 | 公式密集span不规范论文.pdf / 8 | 10,11 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
101
|
+
| k2_treap-08-19 | 公式密集span不规范论文.pdf / 8 | 14,15,16 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
102
|
+
| k2_treap-08-20 | 公式密集span不规范论文.pdf / 8 | 17,18 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
103
|
+
| k2_treap-09-21 | 公式密集span不规范论文.pdf / 9 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
104
|
+
| k2_treap-09-22 | 公式密集span不规范论文.pdf / 9 | 16,17 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
105
|
+
| k2_treap-10-23 | 公式密集span不规范论文.pdf / 10 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
106
|
+
| k2_treap-11-24 | 公式密集span不规范论文.pdf / 11 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
107
|
+
| k2_treap-12-25 | 公式密集span不规范论文.pdf / 12 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
108
|
+
| k2_treap-13-26 | 公式密集span不规范论文.pdf / 13 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
109
|
+
| k2_treap-14-27 | 公式密集span不规范论文.pdf / 14 | 区域定位 | 修复通过 | 原生路径与标签恢复完整图。独立 caption 保持独立;Fig.11/12/14 两侧完整,Fig.13 六个子图已聚成整图。 |
|
|
110
|
+
| k2_treap-15-28 | 公式密集span不规范论文.pdf / 15 | 3,4 | 修复通过 | 已合为完整 text;原成员归属检查通过,段内不再另套 title/equation。 |
|
|
111
|
+
|
|
112
|
+
## 历史变化逐页裁决
|
|
113
|
+
|
|
114
|
+
| 文件 / 物理页 | 裁决 | 原因 |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| caibao1 / 1 | 更新基线 | 嵌套 Form 裁剪后右侧三张表左边界收紧 0.001;逐格内容及列结构不变。 |
|
|
117
|
+
| demo1 / 7 | 更新基线 | 图 3 以可见路径与标签重建,边框略收紧;轴标签、图例、正文和 caption 完整。 |
|
|
118
|
+
| demo2 / 4 | 更新基线 | Figure 3 的三个噪声子图归为一张图,整页五个图元归为三个独立图;五组标签、Table I 和双栏阅读顺序保留。 |
|
|
119
|
+
| demo2 / 5 | 更新基线 | 同一 Figure 5 下上下两个图块归为一图;参考文献、表格、公式和 caption 保留。 |
|
|
120
|
+
| demo3 / 3 | 更新基线 | TableFormer 图按裁剪后真实成员收紧空白边;图中文字、箭头和下方两条公式完整。 |
|
|
121
|
+
| mixed_elements_pages_03_06 / 2 | 更新基线 | 同一 Fig.1 下四张电镜子图聚为整图;a–d 标签齐全,Fig.2 与正文、公式保持独立。 |
|
|
122
|
+
| mixed_elements_pages_03_06 / 3 | 更新基线 | Fig.4 按裁剪后的真实路径缩小空白边;上下轴标签完整,caption 不入图。 |
|
|
123
|
+
| mixed_elements_pages_07_10 / 3 | 更新基线 | 流程图按裁剪后成员收紧边界;源代码、LLVM IR、切片分析等端点标签完整。 |
|
|
124
|
+
| mixed_elements_pages_11_15 / 3 | 更新基线 | 同一 Fig.2 的 A/B/C 病理照片聚为一图,比例尺与标签完整;Fig.3、Fig.4、页眉页码保留。 |
|
|
125
|
+
| 中文论文 / 6 | 更新基线 | 图 3 的成员边界调整;三个图及中英文 caption 均独立且轴标签完整,正文和所有语义指纹不变。 |
|
|
126
|
+
| 中文论文2 / 1 | 更新基线 | T5 与上标 [4] 间增加一个排版空格;字符、上标样式、分段、阅读顺序和边界不变,原页叠框核对无漏字或重复。 |
|
|
127
|
+
|
|
128
|
+
审阅中曾发现页码入图、普通黑色页底公式被当作 logo、真实代码入图、出版说明拆段和分数线触发脚注等回归,均修正规则后重跑,没有用基线更新掩盖。
|
|
129
|
+
|
|
130
|
+
## 最终验证
|
|
131
|
+
|
|
132
|
+
- 完整 Flash、历史逐页、人工样本、原生表格和 PDF 字符几何测试:**967 passed**(168.03 秒)。
|
|
133
|
+
- 补充嵌套 Form 旋转与空裁剪后,裁剪专项:**9 passed**;其中四个用例为全套运行后新增验证。
|
|
134
|
+
- Ruff 检查、格式检查、`git diff --check` 均通过。
|
|
135
|
+
- 八份文档均通过真实公共 `parse` 入口导出 HTML 与图像资产,未发现缺失图片引用;Fornax 分式和 Nougat 两条无编号公式的实际截图已视觉核对。
|
|
136
|
+
- 最终历史输出的源代码 SHA-256 与当前工作区一致,环境和资产检查见 `output/pdf/flash-manual/verification.json`。
|
|
137
|
+
|
|
138
|
+
## 重放与交付
|
|
139
|
+
|
|
140
|
+
使用用户指定的 Magic-PDF `.venv1`:
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
python tools/review_flash_annotations.py
|
|
144
|
+
python tools/review_flash_regression.py --output output/pdf/flash-manual/history-current --compare-to output/pdf/flash-manual/history-before
|
|
145
|
+
python -m pytest tests/unittest/test_flash_pdf_*.py tests/unittest/test_flash_manual_annotations.py tests/unittest/test_pdf_document.py tests/unittest/test_pdf_object_clipping.py tests/unittest/test_native_pdf_table*.py -q
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
本地验收材料在 `output/pdf/flash-manual/`:`index.html` 汇总原页、前后标框和最终 HTML;`history-current/comparison.html` 展示历史变化页;`exports/` 保存真实公共 parse 入口产生的 MiddleJson、HTML 与图像资产。
|
|
149
|
+
历史结构测试沿用既有公式检测证据辅助器;最终公共 parse/HTML 验收使用真实公式图像,不依赖该辅助器。
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Flash 第二轮人工标注修复验收(2026-09-15)
|
|
2
|
+
|
|
3
|
+
## 结果
|
|
4
|
+
|
|
5
|
+
- 基于 `main@b56d294` 实施,开发分支为 `codex/flash-native-round2`;修复及本报告一并提交至本地 `main`,未推送。
|
|
6
|
+
- 本轮 **6 份完整 PDF、98 页、31 组标注均修复通过**。两项可选修复均实现,无保守保留项。
|
|
7
|
+
- 第一轮 **8 份、118 页、87 组标注**已重放;3 组旧“整块合并”范围按原页真实段界细化,原始块内容、区域与编号保留。
|
|
8
|
+
- **1125 项**相关解析、真实样本、字符可见性、公式、原生表格及可视化测试通过;另 **131 项**原始字符样式测试通过,总计 **1256 项**。
|
|
9
|
+
- 历史 **19 份、168 页**中,166 页语义和几何指纹完全不变;仅批准财报 2 页变化。
|
|
10
|
+
- 公共 `parse → MiddleJson → HTML / 图片资产包` 重跑 6 份原件,98 页、78 项资产,解析诊断为空。HTML 图片路径全部可解析。
|
|
11
|
+
|
|
12
|
+
## 实现及边界
|
|
13
|
+
|
|
14
|
+
1. **可见字符视图**:Flash 的原生页提取入口使用与图形相同的累积 Form 裁剪和坐标变换。完全裁剪、无绘制模式与零透明度字符被排除;部分裁剪字符仍保留字符索引、来源与原点,布局框采用可见范围。原始字符 API 的默认行为不变。白色或小字号本身不是删除条件。
|
|
15
|
+
2. **段落**:句末可越过实际缩小的上标引用;同栏稳定左缘、重复首行缩进、短尾剩余宽度和下一词宽度共同确认换段。保留粗体提示,显式段界传递到后续合并。公式、条目、参考文献和 caption 保留原有连续性约束。
|
|
16
|
+
3. **图形与算法**:Form 成员证据可补全图缘选项行;已确认代码成员对图片形成边界。跨栏实际文字行不能仅因外接矩形相交而合并。caption 续行逐步恢复,不能通过邻栏的通栏尾行认领正文。
|
|
17
|
+
4. **脚注**:先恢复同一物理行的碎片,再按横线及实际栏范围分组;分数线要求上下内容相对居中。机构标题及其宽行按一组保留,普通编号脚注继续使用已有分组规则。
|
|
18
|
+
5. **标题**:将字重 0 视为未知,结合跨页重复字体、独立间隔、正文后继和多行整体识别。段内粗体继续归入 text。
|
|
19
|
+
6. **首页弱表格**:仅在原生表格恢复失败、首页 article info / abstract 分区及历史字段证据同时成立时恢复文本。真实表格保持原生表格恢复流程。
|
|
20
|
+
|
|
21
|
+
生产规则未引入文件名、页码或论文正文特例,不新增公共类型或 OCR/VLM 路径。新函数和方法均有中文注释。
|
|
22
|
+
|
|
23
|
+
## 逐项验收
|
|
24
|
+
|
|
25
|
+
原始指纹、物理页码、文字锚点及区域见 `tests/fixtures/flash_round2_annotations.json`;下表与 `flash_round2_review_decisions.json` 一致。
|
|
26
|
+
|
|
27
|
+
| 标注 ID | 物理页 | 结果与证据 |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| nougat-05-r2-01 | 5 | 修复通过:8、9、10 的 URL 均归入 page_footnote;真实分式反例保持。 |
|
|
30
|
+
| nougat-07-r2-02 | 7 | 修复通过:在 Both Nougat small and base 前独立成段。 |
|
|
31
|
+
| nougat-09-r2-03 | 9 | 修复通过:Utility、Nearly every dataset、Generation Speed 分为三个 text,段首粗体保留。 |
|
|
32
|
+
| nougat-09-r2-04 | 9 | 修复通过:Future work 与 The primary challenge 分为两段,段首强调保留。 |
|
|
33
|
+
| nougat-17-r2-05 | 17 | 修复通过:裁剪隐藏的 IP、1/1、日期和浏览器标题不进入 Flash;可见页码 17 保留。 |
|
|
34
|
+
| mmlu_redux-02-r2-01 | 2 | 修复通过:完整 Form 吸收最后选项行,图片下边界包含 A. Clark 至 D. Ebbinghaus。 |
|
|
35
|
+
| mmlu_redux-02-r2-02 | 2 | 修复通过:三行 Figure 1 caption 完整绑定图片,Human Aging. 不再归入邻栏正文。 |
|
|
36
|
+
| frames_v1-01-r2-01 | 1 | 修复通过:在 To bridge this gap 前分为两段。 |
|
|
37
|
+
| frames_v1-08-r2-02 | 8 | 修复通过:算法 1~12 行完整且仅属于 code_body;图片起点低于代码底部。 |
|
|
38
|
+
| frames_v2-01-r2-01 | 1 | 修复通过:重复首行缩进支持页底 Our work addresses 单行新段;已实现可选拆分。 |
|
|
39
|
+
| nash_review-01-r2-01 | 1 | 修复通过:NAFLD can be broadly 前分为两段,句末上标引用不再阻断换段。 |
|
|
40
|
+
| nash_review-01-r2-02 | 1 | 修复通过:续段、Among individuals、The development of a therapy 分为三段。 |
|
|
41
|
+
| nash_review-11-r2-03 | 11 | 修复通过:Affiliations 与四个机构恢复为一个 page_footnote,按实际行序连接。 |
|
|
42
|
+
| nash_review-04-r2-04 | 4 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
43
|
+
| nash_review-06-r2-05 | 6 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
44
|
+
| nash_review-06-r2-06 | 6 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
45
|
+
| nash_review-07-r2-07 | 7 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
46
|
+
| nash_review-07-r2-08 | 7 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
47
|
+
| nash_review-09-r2-09 | 9 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
48
|
+
| nash_review-09-r2-10 | 9 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
49
|
+
| nash_review-10-r2-11 | 10 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
50
|
+
| nash_review-10-r2-12 | 10 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
51
|
+
| nash_review-12-r2-13 | 12 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
52
|
+
| nash_review-12-r2-14 | 12 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
53
|
+
| nash_review-12-r2-15 | 12 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
54
|
+
| nash_review-12-r2-16 | 12 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
55
|
+
| nash_review-12-r2-17 | 12 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
56
|
+
| nash_review-12-r2-18 | 12 | 修复通过:重复未知字重样式和独立排版支持整个标题;多行标题完整归入 paragraph_title。 |
|
|
57
|
+
| k2_treap-01-r2-01 | 1 | 修复通过:article info 与 abstract 恢复两片文本区域;小标题为 paragraph_title,历史、关键词、摘要、版权为 text。 |
|
|
58
|
+
| k2_treap-10-r2-02 | 10 | 修复通过:同行碎片及 our research. 归入一个完整脚注,右栏正文保持独立。 |
|
|
59
|
+
| mmlu_redux-02-r2-03 | 2 | 修复通过:原块 6 的窄栏上部接回 4、5,下方 documentation… 通栏尾行独立。 |
|
|
60
|
+
|
|
61
|
+
## MMLU 图旁正文补充调整
|
|
62
|
+
|
|
63
|
+
新增一组标注,锚点来自第二轮首次验收的源码快照,原块编号为 4、5、6。生产规则依据图注邻接、实际行宽变化和同栏未结束的续文恢复分块。前后检查文字集合完全一致,只有 MMLU 第 2 页变化;其余 7 份人工样本及历史 168 页没有新增变化。MiddleJson 与 HTML 已同步重导出。
|
|
64
|
+
|
|
65
|
+
前后对比:`output/pdf/flash-round2/visual-review/mmlu-wrap-before-after.png`。补充回归日志:`output/pdf/flash-round2/logs/mmlu-wrap-regression.log`。
|
|
66
|
+
|
|
67
|
+
## 第一轮断言的三处细化
|
|
68
|
+
|
|
69
|
+
旧锚点保留,新增 `expected_regions` 和 `round2_review_reason`,同时检查两个自然段的正确归属。
|
|
70
|
+
|
|
71
|
+
- `frames_v2-01-02`:第一段内部仍合并,`Our work addresses…` 为第二轮明确允许的独立新段。
|
|
72
|
+
- `nougat-02-10`:`Decoder` 与同行正文仍合并;原页短尾句末后的 `Following Kim et al.…` 另成段。
|
|
73
|
+
- `fornax-04-02`:第一段公式碎片仍归入正文;`At variance with…` 有明确首行缩进,独立成段。
|
|
74
|
+
|
|
75
|
+
原页和前后标框已对照检查,没有用原始大框强行跨越新的真实段界。
|
|
76
|
+
|
|
77
|
+
## 历史基线裁决
|
|
78
|
+
|
|
79
|
+
| 样本 | 页 | 裁决 |
|
|
80
|
+
| --- | --- | --- |
|
|
81
|
+
| caibao1 | 1 | 字符“企”右侧被裁剪 0.1096pt,保留文字,仅收紧可见框;段落归一化右界 0.616 → 0.615。更新该页几何指纹。 |
|
|
82
|
+
| caibao1 | 5 | 删除完全被裁剪隐藏的“图表8:”;可见“图表7:”caption 和全部图内标签保持。图框不再包含隐藏文字。更新该页指纹。 |
|
|
83
|
+
| 其余历史页 | 166 页 | 语义和几何指纹不变,保持基线。 |
|
|
84
|
+
| 中文合成样本 | 3、4 | 两条普通说明句由误判 paragraph_title 恢复 text;结合原页和生成代码确认,更新类型库存,正文总数 12 → 14。此样本在 168 页历史集之外。 |
|
|
85
|
+
|
|
86
|
+
逐字符裁剪证据:`output/pdf/flash-round2/visual-review/caibao1-visible-chars.json`。原有较旧的 `flash_layout_geometry_manifest.json` 未整体刷新。
|
|
87
|
+
|
|
88
|
+
## 端到端与视觉检查
|
|
89
|
+
|
|
90
|
+
- 已查看本轮全部目标页/标题区域的最终标框,以及争议段落和历史变化页的原页、前后标框。
|
|
91
|
+
- MMLU 图片截图包含完整末行四个选项;三行 caption 以 `image_caption` 进入 MiddleJson,结束于 `Human Aging.`,HTML 内容一致。
|
|
92
|
+
- FRAMES v1 算法标题和 `code_body` 保留,正文行号 1~12 完整且只归属一次;最终图片资产不包含代码末行。
|
|
93
|
+
- Nougat 的 Utility、Generation Speed、Future work 在 HTML 中仍有粗体;公式截图保留完整求和上下限;不可见浏览器文字未进入 HTML,可见页码保留。
|
|
94
|
+
- Nash 机构脚注与 K2 同行脚注按实际阅读顺序进入最终输出;K2 首页为两个文本区域,非伪表格。
|
|
95
|
+
- 历史中间实验曾出现 caption 分裂、空格丢失和引用条目误拆,均修正规则后重新验证,未据此更新基线。
|
|
96
|
+
|
|
97
|
+
## 重放命令
|
|
98
|
+
|
|
99
|
+
使用 `/Users/myhloli/projects/20240809magic_pdf/Magic-PDF/.venv1/bin/python`(下列 `$PY`)。
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
PY=/Users/myhloli/projects/20240809magic_pdf/Magic-PDF/.venv1/bin/python
|
|
103
|
+
$PY tools/review_flash_annotations.py --output output/pdf/flash-round2/current
|
|
104
|
+
$PY tools/review_flash_regression.py --output output/pdf/flash-round2/history-current --compare-to output/pdf/flash-round2/history-before
|
|
105
|
+
$PY tools/review_flash_round2.py
|
|
106
|
+
$PY -m pytest tests/unittest/test_flash_pdf_*.py tests/unittest/test_flash_round2_annotations.py tests/unittest/test_flash_manual_annotations.py tests/unittest/test_pdf_document.py tests/unittest/test_pdf_object_clipping.py tests/unittest/test_pdf_text_dedup.py tests/unittest/test_native_pdf_table*.py tests/unittest/test_pdf_visualization.py -q
|
|
107
|
+
$PY -m pytest tests/unittest/test_pdf_text_styles.py -q
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
当前源码 SHA-256(排序拼接 `src/**/*.py` 路径和内容):`ba0e69f0426fcb6f95ef2d1a726d6996111b64a51beb0ee5f5366f406220894f`。历史快照与公共导出均记录同一指纹。
|
|
111
|
+
|
|
112
|
+
可打开的结果入口:`output/pdf/flash-round2/index.html`;测试、历史重放和导出日志在 `output/pdf/flash-round2/logs/`。
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Flash 规则抽象验收(2026-09-15)
|
|
2
|
+
|
|
3
|
+
## 目标与实现
|
|
4
|
+
|
|
5
|
+
基于 `3acfed223b548c5b6476917d65ce1dd728b0c269`,将两轮修复中的内容特例及固定版式假设改为结构证据。生产代码不引用论文名称、样本路径、指定问题页或自定义变量白名单。
|
|
6
|
+
|
|
7
|
+
| 规则 | 已替换的条件 | 当前依据与保护 |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| 公式 | `VarWin` / `VarEnd` 白名单 | 运算关系、函数调用和二维几何识别自定义标识符;正文残留证据由共享函数判断。中文正文不作为长变量吞入。健康原生行缺少修复专用 ink 框时,须同时具备编号和二维结构才补恢复。 |
|
|
10
|
+
| 图文环绕 | 左侧窄正文、最后恰好一行变宽 | 连续行区间与图注空间屏障;左右镜像采用同一判定,多行宽尾保留全部成员。几何断点独立于自然段断点。 |
|
|
11
|
+
| 首页弱表格 | 固定 `articleinfo + abstract` 标题组合 | 元数据字段类别、独立正文区域与摘要角色;支持同义标题、中英文及左右互换。成功恢复的 HTML 表格优先,可信内部网格和不足的元数据证据阻止撤销。 |
|
|
12
|
+
| 分栏 | 页面中线作为栏沟 | 复用重复文字边缘推断;为图旁短图注补充显式首行与对齐续行证据。图形、算法、标题、参考文献和块合并使用共同栏依据。 |
|
|
13
|
+
| 参考文献与机构 | 固定半页区域、至少三个机构 | 按实际栏序处理开始/结束事件,同页附录或独立章节终止上下文;一个或多个机构由编号、机构角色及连续排版确认。 |
|
|
14
|
+
| 页边图形 | 彩色、页边、无邻近编号即判图片 | 出版角色与装饰形结构,或跨页同时重复的结构签名和相对位置;数学编号、可读数学及分式证据优先。颜色不参与决定。出版页脚提前分类后仍保留其内部上下文区域。 |
|
|
15
|
+
| 脚注 | 短标题、宽度与字号触发整组合并 | 区域标题角色、机构内容和行内编号连续性;独立起行编号仍拆条。首页通讯带限制在实际区域内,不能向邻栏或独立条目延伸。 |
|
|
16
|
+
|
|
17
|
+
共享布局证据按分析阶段构建,文本成员改变后重新计算,不在文档之间复用可变对象。新函数和方法均有中文说明。
|
|
18
|
+
|
|
19
|
+
## 兼容边界
|
|
20
|
+
|
|
21
|
+
公共 API、ModelJson / MiddleJson 结构、块类型和 PDF renderer 不变。来源行、行框、字符索引及行内样式沿用原有链路;新增区域和图形签名只供内部使用。裁剪链和可见字符底层修复未修改。
|
|
22
|
+
|
|
23
|
+
同一自然段为了避开图注可输出多个矩形块;内部几何断点不伪装成新自然段,也不新增公开段落 ID。现有 MiddleJson 连续性处理保持原契约。
|
|
24
|
+
|
|
25
|
+
原测试要求脚注条目拆分函数完全不读取文本;本轮允许它读取通用角色证据,因此将该函数移出纯几何静态守卫。其他几何分类器仍受原守卫约束,新增机构标题和独立编号反例验证新的语义边界。
|
|
26
|
+
|
|
27
|
+
## 泛化与反例验证
|
|
28
|
+
|
|
29
|
+
最终相关全套 **1323 项通过**(189.03 秒),Ruff、格式检查和 `git diff --check` 通过。新增 `tests/unittest/test_flash_rule_generalization.py`,共 **67 项**:
|
|
30
|
+
|
|
31
|
+
- 等长和不同长度变量替换、函数调用、正文排除,以及真实 PDF 经 `PdfModel.predict` 的编号二维公式恢复。
|
|
32
|
+
- 左右镜像与一行、两行、多行宽尾;正文成员完整且唯一,几何拆块不设置语义段界。
|
|
33
|
+
- 同义标题、中英文角色、短摘要、可信网格、字段不足与非首页反例。
|
|
34
|
+
- 单栏、非对称双栏、三栏、通栏正文中的局部图注栏;同页参考文献转附录/后续章节。
|
|
35
|
+
- 一到多个机构、连续机构脚注与明确独立编号条目的区分。
|
|
36
|
+
- 彩色/黑色矢量公式、灰度/彩色字标、缺少出版上下文、数学编号优先,以及同位置不同结构的反例。
|
|
37
|
+
- 0/90/180/270 度、等比例缩放和位置平移下的栏证据及公式成员保持。
|
|
38
|
+
- 真实 FRAMES v1 的两处通栏段首强调及独立起行编号回归。
|
|
39
|
+
|
|
40
|
+
水平图文环绕和首页面板继续面向原有水平方向;四方向变换用例覆盖共享栏证据和公式恢复,不表示新增了所有版式的任意旋转识别。
|
|
41
|
+
|
|
42
|
+
## 真实样本与逐页裁决
|
|
43
|
+
|
|
44
|
+
使用独立的 `3acfed2` checkout 重跑并冻结基线,而非使用历史缓存推断旧结果。
|
|
45
|
+
|
|
46
|
+
- 第一轮 8 份、118 页、87 组标注及第二轮 6 份、98 页、31 组标注重放。
|
|
47
|
+
- 历史 19 份、168 页逐页比较语义与几何指纹,**168 页全部不变**。
|
|
48
|
+
- 人工样本仅 FRAMES v1 第 4、6 页出现变化,两页可见字母数字库存一致;原始内容、类型、样式和前后标框保留供复核。
|
|
49
|
+
- 既有人工/历史金标未批量更新;新增两条具体变化裁决,前后差异使用 SHA-256 锁定。后续差异不匹配时仍显示待审。
|
|
50
|
+
|
|
51
|
+
| 文档 / 页 | 视觉裁决 | 原因 |
|
|
52
|
+
| --- | --- | --- |
|
|
53
|
+
| FRAMES v1 / 4 | 接受 | `Human annotation.` 和 `Dataset Statistics.` 均为与后继正文同一物理行的粗体提示;撤销独立标题并合入正文,粗体保留,表格不变。 |
|
|
54
|
+
| FRAMES v1 / 6 | 接受 | `(2) BM25-Retrieved Prompt` 在完整句尾后独立起行,恢复独立段;`(3)` 仍在行内,保持原段归属。 |
|
|
55
|
+
|
|
56
|
+
已检查上述页面的原文和前后标框,并检查公共导出中的 Nougat 四个公式截图(含自定义标识符与完整求和上下限)、MMLU 完整选项图及 Nash 出版图形。
|
|
57
|
+
|
|
58
|
+
## 公共入口与产物
|
|
59
|
+
|
|
60
|
+
全部 8 份人工原件通过真实 `parse → MiddleJson → HTML / 图片资产` 导出:**118 页、110 项资产、解析诊断为空、HTML 图片引用全部有效**。公共导出未使用保留公式内部检测内容的测试辅助器。原有辅助器仅用于历史语义指纹检查。
|
|
61
|
+
|
|
62
|
+
源码指纹、历史重放和公共导出指纹必须一致,最终值保存在 `output/pdf/flash-rule-generalization/verification.json`。
|
|
63
|
+
|
|
64
|
+
验收入口:
|
|
65
|
+
|
|
66
|
+
- `output/pdf/flash-rule-generalization/visual-review/index.html`:全部变化页、原页、前后标框和结构差异。
|
|
67
|
+
- `output/pdf/flash-rule-generalization/exports/`:8 份原件的 HTML、MiddleJson 和资产目录。
|
|
68
|
+
- `output/pdf/flash-rule-generalization/logs/`:全量测试、人工重放、历史重放和公共导出日志。
|
|
69
|
+
- `tests/fixtures/flash_rule_generalization_review_decisions.json`:精确匹配前后差异的视觉裁决。
|
|
70
|
+
|
|
71
|
+
### 重放
|
|
72
|
+
|
|
73
|
+
使用用户指定环境,在仓库根目录运行:
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
PY=/Users/myhloli/projects/20240809magic_pdf/Magic-PDF/.venv1/bin/python
|
|
77
|
+
$PY tools/review_flash_annotations.py --output output/pdf/flash-rule-generalization/current-manual
|
|
78
|
+
$PY tools/review_flash_regression.py --output output/pdf/flash-rule-generalization/current-history --compare-to output/pdf/flash-rule-generalization/baseline-history
|
|
79
|
+
$PY tools/review_flash_round2.py --manifest tests/fixtures/flash_manual_annotations.json --output output/pdf/flash-rule-generalization/exports
|
|
80
|
+
$PY tools/review_flash_generalization.py --decisions tests/fixtures/flash_rule_generalization_review_decisions.json
|
|
81
|
+
$PY -m pytest tests/unittest/test_flash_pdf_*.py tests/unittest/test_flash_rule_generalization.py tests/unittest/test_flash_manual_annotations.py tests/unittest/test_flash_round2_annotations.py tests/unittest/test_pdf_document.py tests/unittest/test_pdf_object_clipping.py tests/unittest/test_pdf_text_dedup.py tests/unittest/test_native_pdf_table*.py tests/unittest/test_pdf_visualization.py tests/unittest/test_pdf_text_styles.py -q
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 保守边界
|
|
85
|
+
|
|
86
|
+
规则仍是有适用条件的结构启发式,不承诺识别任意排版。角色词覆盖常见中英文术语;完全不可读的矢量对象在数学与装饰证据均不足时保留原通用分类。缺少稳定栏证据时不新增跨栏认领。没有引入 OCR、VLM、具体出版社词典或新的论文特例。
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Flash 标题与段落成员补充修复验收
|
|
2
|
+
|
|
3
|
+
## 结果
|
|
4
|
+
|
|
5
|
+
本轮完成 9 组补充标注:fix P10 的附录 E 是完整的双行 `paragraph_title`;dual_caption P5、P10、P12、P15 指定的 7 处小字号粗体标题全部提升,P15 的双行标题保持一个块;dual_caption P10 的 `Prescribing` 完整、唯一地归于下一段,上一段止于 `day.`,两段行框和块框不再共享该行。
|
|
6
|
+
|
|
7
|
+
同一规则还自然恢复了 9 个同类标题。两份原件共有 12 个变化页,均对照原文、修改前及修改后标框逐页接受。生产规则不使用文件名、页码、块号、论文原句或特定字体名称。
|
|
8
|
+
|
|
9
|
+
- 逐页画廊:`output/pdf/flash-round3-followup/final/index.html`
|
|
10
|
+
- 两份完整导出:`output/pdf/flash-round3-followup/exports/`(HTML、MiddleJson、图片、资产包)
|
|
11
|
+
- 逐项裁决:`tests/fixtures/flash_round3_followup_review_decisions.json`
|
|
12
|
+
|
|
13
|
+
## 实现与成因
|
|
14
|
+
|
|
15
|
+
多行标题使用后继正文重复左右缘作为额外的局部居中参照。同一物理行的字体碎片先按基线聚合,首行和列表缩进不决定栏中心;保留原有未知字重和跨页重复排版要求。
|
|
16
|
+
|
|
17
|
+
小字号标题单独使用相对字号、可靠字重、上下独立留白、后继正文和容器排除证据。已确认的标题行组通过内部 `title_band_id` 传递给语义行连接,避免分类后重新拆开。该字段不进入公共协议。
|
|
18
|
+
|
|
19
|
+
段首恢复只对具有共同物理行身份、同字体、同栏和后继整行支持的连续文字放宽空格距离。空间合并复用统一成员合并函数,完整传递 `_text_lines`、内容和几何元数据,解决旧实现只合并内容及框、随后又从不完整成员重建内容造成的漏词。
|
|
20
|
+
|
|
21
|
+
## 回归与裁决
|
|
22
|
+
|
|
23
|
+
- **1480 项测试通过**,耗时 206.37 秒;包含新增的 35 项标题、成员守恒、数值列保护及真实样本检查。针对性检查单独运行 **200 项通过**。
|
|
24
|
+
- 历史 **19 份/168 页**相对本次冻结基线零变化。
|
|
25
|
+
- 第一轮 **8 份/118 页**相对本次冻结基线零变化;第二轮 **6 份/98 页**包含其中,不累计为额外独立覆盖量。
|
|
26
|
+
- 首个候选曾把 nougat P17 小表格的标签和百分数列连入一组,造成两条比较记录合并。对照原页后拒绝此变化,通过排除数值列的宽空格放宽修复,并增加合成与原件反例;未更新旧基线。
|
|
27
|
+
- 最终两份 41 页原件的非空白文本差异仅为恢复 `Prescribing`,未删除其他字符。另以源成员集合、唯一归属、行框和公共段落边界断言验证,避免仅比较旧输出遗漏已有缺字。
|
|
28
|
+
- 公共 `parse → MiddleJson → HTML/资产包` 全链路通过,34 个资产均可解析,缺失图片和解析诊断为空。浏览器确认附录 E 和小标题的标题层级、完整双行标题,以及独立的 `Prescribing` 段落。
|
|
29
|
+
- 21 个修改或新增 Python 文件通过 Ruff、格式检查,`git diff --check` 通过。
|
|
30
|
+
|
|
31
|
+
## 冻结与重放
|
|
32
|
+
|
|
33
|
+
冻结的是上一轮未提交源码及其输出,而非仅 Git HEAD。源码指纹 `1533f54963374b15a3cb18ff581f594a1a75fdc9eea47e88ee44cbddbf6988f8` 已与 `baseline-code/src` 逐文件核对;原输出保存在 `output/pdf/flash-round3-followup/baseline/`。本轮最终源码指纹为 `d9a40dab073789eafc52b25fd2fc5771ae0ccc930b44222735eac7c4310f774c`,画廊、历史重放和公共导出记录一致。
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
PY=/Users/myhloli/projects/20240809magic_pdf/Magic-PDF/.venv1/bin/python
|
|
37
|
+
PYTHONPATH=src "$PY" tools/review_flash_round3.py --baseline output/pdf/flash-round3-followup/baseline/final --output output/pdf/flash-round3-followup/final
|
|
38
|
+
PYTHONPATH=src "$PY" tools/review_flash_annotations.py --output output/pdf/flash-round3-followup/final-manual
|
|
39
|
+
PYTHONPATH=src "$PY" tools/review_flash_regression.py --output output/pdf/flash-round3-followup/final-history --compare-to output/pdf/flash-round3-followup/baseline/accepted-history
|
|
40
|
+
PYTHONPATH=src "$PY" tools/review_flash_round2.py --manifest tests/fixtures/flash_round3_annotations.json --output output/pdf/flash-round3-followup/exports
|
|
41
|
+
PYTHONPATH=src "$PY" -m pytest tests/unittest/test_flash_pdf_*.py tests/unittest/test_flash_rule_generalization.py tests/unittest/test_flash_manual_annotations.py tests/unittest/test_flash_round2_annotations.py tests/unittest/test_flash_round3_annotations.py tests/unittest/test_flash_spatial_evidence.py tests/unittest/test_pdf_document.py tests/unittest/test_pdf_object_clipping.py tests/unittest/test_pdf_text_dedup.py tests/unittest/test_native_pdf_table*.py tests/unittest/test_pdf_visualization.py tests/unittest/test_pdf_text_styles.py tests/unittest/test_postprocess_paragraphs.py -q
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
仍位于 `codex/flash-spatial-layout-round3`,未提交或推送;结果为指定本地 macOS/Python/PDFium 运行时的验收,未运行远端 CI。本轮没有新增公共参数或输出类型。
|
|
45
|
+
|
|
46
|
+
## 后续栏首及长标题补充
|
|
47
|
+
|
|
48
|
+
P8 与 P11 的剩余两处标题已修复,详见 [栏首与近满栏小标题验收](flash-title-coverage-2026-09-16.md)。
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Flash 原生 PDF 空间布局:第三轮修复与验收
|
|
2
|
+
|
|
3
|
+
## 范围与证据
|
|
4
|
+
|
|
5
|
+
基于 `a8511caa6615fcf479a2b861061b4633ae1eef5f`,开发分支为 `codex/flash-spatial-layout-round3`。两份原件共 41 页、25 个重点页、36 组人工标注。源文件和原始块锚点保存在 `tests/fixtures/flash_round3_annotations.json`,断言不依赖修复后的块编号。
|
|
6
|
+
|
|
7
|
+
- `journal_dual_caption.pdf`:20 页;SHA256 `ae9ee7db89a1ff23f9be8ecdb4ae70596ad1e3eec78c1d370f562a4aad3aa5ec`。
|
|
8
|
+
- `quantum_appendix_layout.pdf`:21 页;SHA256 `6f393579aacfb8119f92790e565d539856e21d901f683147d242daefd6d094bb`。
|
|
9
|
+
- 原页/修改前/修改后画廊:`output/pdf/flash-round3/final/index.html`。
|
|
10
|
+
- 公共接口导出:`output/pdf/flash-round3/final-exports/`,每份文档包含 HTML、MiddleJson、图片资产及 ZIP。
|
|
11
|
+
- 修改前代码的完整源码指纹为 `e5ddd06fdb910bfcb83e316e42c36b58bfb8d51baac2682f68d919be183434c6`,已与独立的只读基准 checkout 核对。
|
|
12
|
+
|
|
13
|
+
## 实现
|
|
14
|
+
|
|
15
|
+
1. **参考文献和局部分栏**:使用连续编号的稳定左缘确定参考区域的横向和纵向范围,支持无 References 标题、齐平或悬挂续行。局部标题限定区域起点;只有具有独立留白的章节标题才能终止区域。作者年代式条目的年份不充当编号。混合栏页上方正文独立排序,避免上标的微小高度差让右栏先读。
|
|
16
|
+
2. **标题和段落**:限制正文原型对满栏连续行的提升及标题邻行传播;多行未知字重标题增加居中对齐证据。首页独立标题带和出版日期带支持文档标题及编号机构识别。同行碎片依据同栏、基线、后继整行支持恢复;段内数学前缀按成员而非外接框认领。
|
|
17
|
+
3. **公式**:在原有检测结束后补齐独立数学带及右侧/右下编号,只扩充不完整区域。完整公式沿用原有结果。短标记必须有包围结构,百分数及全角百分数不能作为编号;正文短句、栏沟及表格为屏障。保留既有行内数学回退成员,不因其已被正文认领而删除。
|
|
18
|
+
4. **表注与图例**:以表内规则行的结束位置分离外框包住的表注,表格恢复和投影共用收缩后的表体范围。从紧邻图片的独立图编号恢复破碎说明,完整图注不再次扩展。图例先恢复药名—符号物理行,再按分类和重复栏左缘组织阅读顺序,统一归属图片的图注释。
|
|
19
|
+
5. **公共转换**:临时参考条目起点及段界证据传入页面合并阶段;新编号和已确认段界禁止续接,跨栏/跨页参考续项可保留 `continues_prev`。临时字段在 PageInfo 对象化前移除,不新增公共参数或块类型。
|
|
20
|
+
|
|
21
|
+
生产规则没有新增文件名、页码、块号、论文原句或特定字体名称判断。新增函数均有中文说明。
|
|
22
|
+
|
|
23
|
+
## 回归裁决
|
|
24
|
+
|
|
25
|
+
没有通过更新旧基线消除失败。下列候选变化均通过规则收紧解决,审阅过程的失败图像仍保留在输出目录:
|
|
26
|
+
|
|
27
|
+
| 回归证据 | 裁决与处理 |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| `current-history/demo2/page-03-after.png`:短正文 `is given by` 被吸入公式 | 扩展短正文屏障,并把数学带恢复放在既有检测之后,完整公式不重建。 |
|
|
30
|
+
| `current-history/caibao1/page-02-after.png`:并列图片的图注归属和顺序改变 | 图注恢复入口限定为独立编号及其尚未归组的说明带;已有完整图注沿用原流程。 |
|
|
31
|
+
| 作者年代式参考文献被按年份重新分条;参考上下文侵入附录 | 编号模式与传统悬挂条目分组分开,仅对可靠编号区域提前保护;保留附录终止及脚注排除规则。 |
|
|
32
|
+
| `refined2-history/中文论文4/page-02-after.png`:正文中的行内数学内容缺失 | 区分原先用于正文恢复的已认领成员和新公式补全成员,保留前者;增加全角百分数反例。 |
|
|
33
|
+
| `frames_v1/v2` 附录数字列表吸入下方图说明 | 作者年代式跨页状态不激活数字参考模式;普通编号仍作为传统分组边界,保留原基线并增加四页反例。 |
|
|
34
|
+
| `fix.pdf` 参考条目内部的斜体行被当成区域终点 | 终点必须具有独立留白;真实样本同时检查条目数、条目完整性和无假标题,不能只数编号。 |
|
|
35
|
+
|
|
36
|
+
两个临时字段 `_reference_start`、`_paragraph_boundary` 不进入旧可见内容指纹;只排除这两个明确字段,没有放宽类型、内容、顺序或 bbox 校验。其行为由公共页面转换测试单独断言,包括跨页数字开头续项、新编号不续接、图例归属和私有字段清理。
|
|
37
|
+
|
|
38
|
+
## 重放
|
|
39
|
+
|
|
40
|
+
使用用户指定的 `.venv1`,在仓库根目录执行:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
PY=/Users/myhloli/projects/20240809magic_pdf/Magic-PDF/.venv1/bin/python
|
|
44
|
+
PYTHONPATH=src "$PY" tools/review_flash_round3.py
|
|
45
|
+
PYTHONPATH=src "$PY" tools/review_flash_round2.py --manifest tests/fixtures/flash_round3_annotations.json --output output/pdf/flash-round3/final-exports
|
|
46
|
+
PYTHONPATH=src "$PY" tools/review_flash_regression.py --output output/pdf/flash-round3/accepted-history --compare-to output/pdf/flash-round3/baseline-history
|
|
47
|
+
PYTHONPATH=src "$PY" tools/review_flash_annotations.py --output output/pdf/flash-round3/accepted-manual
|
|
48
|
+
PYTHONPATH=src "$PY" -m pytest tests/unittest/test_flash_pdf_*.py tests/unittest/test_flash_rule_generalization.py tests/unittest/test_flash_manual_annotations.py tests/unittest/test_flash_round2_annotations.py tests/unittest/test_flash_round3_annotations.py tests/unittest/test_flash_spatial_evidence.py tests/unittest/test_pdf_document.py tests/unittest/test_pdf_object_clipping.py tests/unittest/test_pdf_text_dedup.py tests/unittest/test_native_pdf_table*.py tests/unittest/test_pdf_visualization.py tests/unittest/test_pdf_text_styles.py tests/unittest/test_postprocess_paragraphs.py -q
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
逐项裁决和最终运行结果见 `tests/fixtures/flash_round3_review_decisions.json`。公式继续使用现有图片资产路径;本轮不处理原 PDF 的错误字符映射或引入数学内容识别。
|
|
52
|
+
|
|
53
|
+
## 最终验收结果
|
|
54
|
+
|
|
55
|
+
- **1445 项测试通过**,耗时 198.50 秒;日志:`output/pdf/flash-round3/accepted-tests.log`。19 个修改/新增 Python 文件通过 Ruff 和格式检查,`git diff --check` 通过。
|
|
56
|
+
- 两份新文档 **41 页**全部重放,**36 组标注**通过针对性结构测试及视觉审阅;画廊覆盖 **25 个标注页与 2 个额外变化页**。额外变化为第一份 P12 短尾接回同段、fix P7 附录标题与正文分离。
|
|
57
|
+
- 历史 **19 份/168 页**可见内容、类型、顺序和块框指纹均与修改前一致。
|
|
58
|
+
- 第一轮 **8 份/118 页**中 114 页一致,4 页变化逐项接受,见下表。第二轮 **6 份/98 页**是上述完整文档的子集,已全部覆盖;不将重叠页累加为独立覆盖量。
|
|
59
|
+
- `parse → MiddleJson → HTML/资产包` 已完成,两份导出共 34 个资产,缺失图片和解析诊断均为空。浏览器检查了正文标题、图例分组阅读顺序及图片加载。公式仍使用原生裁图,不改变数学内容识别方式。
|
|
60
|
+
- 对原生正文、图注、表格及公式检测内容进行非空白字符守恒核对;仅第一份 P5、P17 和 fix P20 共四处行末连字符随正常断词连接被移除,无其他非空白字符丢失或新增。
|
|
61
|
+
- 未修改原有测试金标。以下四页是完整重放产生的自然改善,已保存旧/新指纹和逐项接受理由;拒绝的候选变化通过收紧规则恢复原基线。
|
|
62
|
+
|
|
63
|
+
| 文档/页 | 接受理由 |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| fornax P1 | 独立双行主标题由 `paragraph_title` 恢复为 `doc_title`,作者和机构顺序保持。 |
|
|
66
|
+
| mmlu_redux P13 | 独立加粗的 Checklist 由正文恢复为段落标题。 |
|
|
67
|
+
| k2_treap P3 | 保留行内区间右括号对应的原生映射字符,避免与后继正文粘连;不做字符替换。 |
|
|
68
|
+
| k2_treap P9 | 保留行内矩阵维数右括号对应的原生映射字符;块框和阅读顺序不变。 |
|
|
69
|
+
|
|
70
|
+
既有语料变化页与恢复旧基线的页面对比:`output/pdf/flash-round3/manual-visuals/index.html`。全部裁决(包括源码、原件及页面指纹)保存在 `tests/fixtures/flash_round3_review_decisions.json`。
|
|
71
|
+
|
|
72
|
+
本次结果为指定 macOS/Python/PDFium 运行时的本地验收;未执行远端 CI,未提交或推送。原 PDF 的字符映射错误仍沿用原有处理,本轮没有引入 OCR/VLM。
|
|
73
|
+
|
|
74
|
+
## 后续补充验收
|
|
75
|
+
|
|
76
|
+
用户新增的标题与段落成员问题已在补充轮完成,见 [补充修复验收](flash-spatial-layout-followup-2026-09-16.md)。本报告保留第一轮实现时的验证记录。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 栏首与近满栏小标题补充验收
|
|
2
|
+
|
|
3
|
+
已修复 dual_caption P8 块1(Altered Protein Metabolism)和 P11 块10(Cyproheptadine and Other Antiserotonergic Drugs)。两者均输出为 `paragraph_title`,最终 HTML 均为一个 h2。
|
|
4
|
+
|
|
5
|
+
## 原因与通用修复
|
|
6
|
+
|
|
7
|
+
- P8 标题为栏内第一行,原规则因没有上一行而直接跳过。现在允许缺少上方正文,但要求位置与全页正文区顶部相符;页眉不参与上方正文判定,字体、字重、下方留白及真实后继正文等条件仍保留。
|
|
8
|
+
- P11 标题约占局部正文宽度 95%,被 90% 固定比例上限排除。现在使用标题是否落在实际栏左右边界内判断,右边允许半个正文行高的几何误差;越栏标题不能通过。
|
|
9
|
+
- 没有增加文件名、页码、块号、原句或字体名称条件。新增 24 个合成正反例,独立改变栏宽、字号和位置,覆盖栏首、长标题、越栏与侧栏中部情形;新增两处原件断言。
|
|
10
|
+
|
|
11
|
+
## 验收
|
|
12
|
+
|
|
13
|
+
**1506 项测试通过**(230.72 秒),其中针对性检查 123 项通过。Ruff、格式和差异检查通过。
|
|
14
|
+
|
|
15
|
+
两份原件 41 页仅上述两个块改变类型,全部文字和块框保持不变。第一轮 8 份/118 页与历史 19 份/168 页相对本次冻结基线均零差异;第二轮 6 份/98 页包含在第一轮完整文档中,不累计覆盖量。未更新旧基线。
|
|
16
|
+
|
|
17
|
+
完整解析、MiddleJson、HTML 和资产包重放通过;两个导出共 34 个资产,无缺失图片或解析诊断。原页与前后标框已审阅,浏览器确认两个 h2。
|
|
18
|
+
|
|
19
|
+
- 两页对比:`output/pdf/flash-title-coverage/final/changes.html`
|
|
20
|
+
- 完整画廊:`output/pdf/flash-title-coverage/final/index.html`
|
|
21
|
+
- 导出:`output/pdf/flash-title-coverage/exports/`
|
|
22
|
+
- 裁决:`tests/fixtures/flash_title_coverage_review_decisions.json`
|
|
23
|
+
- 测试日志:`output/pdf/flash-title-coverage/tests.log`
|
|
24
|
+
|
|
25
|
+
修改前未提交代码和输出已冻结于 `output/pdf/flash-title-coverage/baseline-code/` 与 `baseline/`,源码指纹与上一轮验收记录核对一致。本轮仍在 `codex/flash-spatial-layout-round3`;未提交、推送或运行远端 CI。
|