docvortex 0.5.5__tar.gz → 0.5.6__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.5.5 → docvortex-0.5.6}/PKG-INFO +1 -1
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/lib.rs +1 -1
- docvortex-0.5.6/rust/docvortex-pdfium/src/drawing_lines.rs +282 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/lib.rs +1 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/objects.rs +3 -1
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/lib.rs +6 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/pdfium.rs +51 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/_compute_backend.py +1 -1
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +60 -45
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/graphics.py +78 -23
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/models.py +14 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/_object_bridge.py +68 -1
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/classify.py +64 -39
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_objects.py +81 -47
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/version.py +1 -1
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/PKG-INFO +1 -1
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/SOURCES.txt +5 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_parity.py +4 -1
- docvortex-0.5.6/tests/test_pdf_classify_page_loading.py +219 -0
- docvortex-0.5.6/tests/test_pdf_classify_resource_graph.py +206 -0
- docvortex-0.5.6/tests/test_pdf_drawing_lines_extraction.py +237 -0
- docvortex-0.5.6/tests/test_pdf_native_graphics_components.py +174 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_object_bridge.py +18 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_auxiliary_text.py +24 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/Cargo.lock +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/Cargo.toml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/LICENSE.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/MANIFEST.in +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/README.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/README.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/demo.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ebook/epub_01.epub +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ebook/epub_02.epub +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/README.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/docx_01.doc +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/docx_01.docx +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/pptx_01.ppt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/pptx_01.pptx +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/rtf_01.rtf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/xlsx_01.xls +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/xlsx_01.xlsx +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/ofd/ofd_01.ofd +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/open_office_docs/docx_01.odt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/open_office_docs/pptx_01.odp +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/open_office_docs/xlsx_01.ods +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/caibao1.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo1.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo2.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo3.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo4.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo6.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/small_ocr.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/web_docs/html_01.html +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/demo/web_docs/mhtml_01.mhtml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/ARCHITECTURE.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/HTML_PROTOCOL.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/JSON_PROTOCOL.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/METADATA.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/PDF_FONTS.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/RENDER_OWNERSHIP.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/USAGE.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-manual-annotations-2026-09-15.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-round2-annotations-2026-09-15.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-rule-generalization-2026-09-15.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-spatial-layout-followup-2026-09-16.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-spatial-layout-round3-2026-09-16.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-title-coverage-2026-09-16.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-native-kernel-next.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-native-kernel-p4-execution.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-native-kernel.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-render-worker-leases.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-tight-spacing-2026-09-28.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-acceleration.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-round7.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage11-classification-render.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage12-geometry.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage13-owned-geometry.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage14-line-metrics.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage15-table-candidates.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage16-bitmap-crops.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage17-inline-styles.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage5-render.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage6-text.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage7-content.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage9-inline.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/docs/sdk-0.4.md +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/pyproject.toml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/Cargo.toml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/annotation_geometry.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/columns.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/dedup.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/extraction.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_lines.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_risk.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_runs.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_style.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/inline_pairs.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/inline_styles.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/note_index.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/pixels.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/row_geometry.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/scripts.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/spatial.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/statistics.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/table_candidates.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/table_merge.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/tables.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_assignment.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_classification.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_content.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_pipeline.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_snapshot.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_spacing.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/tests/contracts.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/Cargo.toml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/classification.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/fonts.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/paths.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/text_colors.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/Cargo.toml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/classification.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/conversion.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/dedup.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/fonts.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry_document.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry_risk.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry_runs.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/inline_styles.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/pixels.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/script_snapshot.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/scripts.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/snapshot.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/spatial.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/statistics.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/table_candidates.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/table_merge.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/tables.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/text_pipeline.rs +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/rust-toolchain.toml +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/schemas/middle-2.0.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/schemas/model-2.0.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/setup.cfg +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/setup.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/image.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/names.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/csv.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/constants.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/errors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/package.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/properties.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/anchors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/constants.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/document.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/errors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/selector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/mhtml/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/mhtml/converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/mhtml/resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/images.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/package.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/path.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/errors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/image.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/limits.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/opc.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/region_discovery.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/streams.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_interval_candidates.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_native_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_native_table_merge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_ordered_statistics.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/rule_band.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/annotation_bands.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/owned_styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/spacing.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/layout_evidence.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/line_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/line_merging.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/native_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_detection.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_rules.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/continuity.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_roles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/compact_titles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/pdf.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/assets/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/assets/images.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/assets/store.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/cli.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/materializer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/parser.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/json.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/inline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/links.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/anchors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/formula.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/projector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/mathml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/normalization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/spans.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/content.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/document.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/html.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/rules.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/structure.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/tree.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/detection.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/filetypes.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/mhtml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/page_range.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/_document.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/classification_bridge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/constants.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/font_runtime.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/images.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_coordinates.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/pdfium.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/raster.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/render_session.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/snapshot.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/snapshot_bridge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/_contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/_pdfium_bridge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/dedup.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/extract.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/groups.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/spacing.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/visuals.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/properties.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/source.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/errors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/_images.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/bundle.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/files.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/middle.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_coordinates.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_hyperlink.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_image.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_image_operations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_image_payload.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_svg_raster.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/image_encoding.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/language.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/magika.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/type_identity.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/xml_names.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/options.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/content.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/document.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/lists.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/page_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/pages.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/paragraphs.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/visual.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/public_api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/context.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/html_table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/index.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/list_items.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/planner.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/assets.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/inline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/math.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/assets.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/package.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/inline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/assets.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/inline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/assets.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/inline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/assets.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/diagnostics.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/font_plan.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/formula.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/formula_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/inline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/original.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/pagination.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/paragraph.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/table_content.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/table_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/title_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/contracts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/docx.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/epub.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/fragments.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/html.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/latex.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/markdown.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/pdf.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/structured_content.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/epub/docvortex.css +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/fonts/NOTICE +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/fonts/manifest.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/html/docvortex.css +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/html/docvortex.min.css +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/unicode/EquivalentUnifiedIdeograph-17.0.0.txt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/result.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/schema.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/visualization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/dependency_links.txt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/entry_points.txt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/not-zip-safe +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/requires.txt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/top_level.txt +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/compare_native_corpus.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/compare_pdf_revisions.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/flash_pdf.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/native_pdf_table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_corpus.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_input.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_memory.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/rust_pdf.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_layout_block_expectations.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_manual_annotations.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_manual_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_reviewed_history.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round2_annotations.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round2_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round3_annotations.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round3_followup_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round3_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_rule_generalization_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_title_coverage_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_char_dedup.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_numeric_citations_review.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_tight_spacing_review_decisions.json +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/rtf/semantic.rtf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_architecture.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_benchmark_entrypoint.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_brand_protocol.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_cli_logging.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_complete_pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_compute_backend.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_converter_lifecycle.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_document_envelope.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_document_metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_export_image_names.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_format_matrix.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_geometry_api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_history_geometry_tools.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_html_namespace.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_magika_runtime.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_mixed_font_script_reference.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_model_tape.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_bitmap_crops.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_classification.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_font_runtime.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_inline_styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round3.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round4.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round5.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round6.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round7.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_statistics.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_table_candidates.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_text_pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_text_snapshot.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_analysis_api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_cpu_evidence.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_font_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_font_runtime.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_model_text_normalization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_numeric_citations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_output_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_render_pool.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_render_session.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_snapshot.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_source_row_merging.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_symbol_normalization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_tight_spacing.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdfium_bridge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_public_export_api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_public_image_api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_public_pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_refactor_raster.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_refactor_rendering.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_refactor_resources.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_release_ci_gate.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_render_ownership.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_renderer_branding.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_shared_boundaries.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_system_font_pdf_pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_validated_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_epub_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_flash_pdf_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_image_mtef_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_legacy_doc_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_legacy_xls_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_metafile_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_mhtml_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_mtef_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_mtef_v5_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_native_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_odf_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_ofd_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_span_test_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/connexin.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/fornax.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/frames_v1.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/frames_v2.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/k2_treap.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/mmlu_redux.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/nash_review.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/nougat.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/bloom_form_labels.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/journal_dual_caption.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/journal_layout_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/math_display_formulas.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/quantum_appendix_layout.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/numeric_citations_introduction.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/test.pdf +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_backend_architecture.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_backend_block_object_regressions.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_assets.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_complex_fields.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_math.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_special_char_tables.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_table_context.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_table_metafiles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_emfplus_integration.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_epub_backlinks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_epub_quoted_note_types.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_epub_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_bbox_grid_comparison.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_csv.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_docx_equationxml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_epub.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_html.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_image_mtef.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_doc.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_ppt.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_xls.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_manual_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_markup_anchors.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_mhtml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_model.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_mtef_v5.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_odf.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_ofd.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_image_mtef.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_metafile.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_title_types.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_equation_images.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_extractor.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_formulas.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_graphics.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_layout_repairs.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_native_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_reviewed_history.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_samples.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_scripts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_semantics.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_short_tails.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_tables.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_text_visibility.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_titles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_round2_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_round3_annotations.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_rtf.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_rule_generalization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_shared_helpers.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_spatial_evidence.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_guess_suffix_ole2.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_guess_suffix_ooxml.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_html_css_build.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_html_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_html_security.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_latex_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_markdown_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_middle_json_block_models.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_middle_json_export.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_middle_json_validator.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_model_json.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_table_performance_equivalence.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_ofd_assembly.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_ofd_vector_tables.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_demo_exports.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_demo_pages.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_image_alt_text.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_parser_regressions.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_robust_fixtures.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_cjk_objects.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_cjk_style.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_cjk_wrapping.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_classify.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_demo_links.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_diagnostic_levels.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_document.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_formula_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_object_clipping.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_original_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_pagination.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_paragraph_cache.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_structured_tables.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_table_cache.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_table_round2.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_text_dedup.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_text_styles.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_title_font_plan.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_title_space.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_visualization.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_page_blocks.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_pages.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_paragraphs.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_visual.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_api.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_html_table.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_image_renderer.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_list_index_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_structured_content_render.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_svg_raster.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_table_merge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_table_merge_cell_merge.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_text_block_anchor.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_text_boundary_rules.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_text_utils.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/__init__.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/build_html_css.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/calibrate_pdf_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/capture_baseline.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/capture_platform_layout.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/compare_font_platforms.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/font_geometry.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/verify_native_abi.py +0 -0
- {docvortex-0.5.5 → docvortex-0.5.6}/tools/verify_native_wheel.py +0 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
//! 在受支持的简单描边页上批量提取轴向线,复杂对象交由 Python 参考实现。
|
|
2
|
+
|
|
3
|
+
use crate::{objects, ReadError};
|
|
4
|
+
use std::ffi::{c_float, c_int, c_uint, c_void};
|
|
5
|
+
use std::sync::Mutex;
|
|
6
|
+
use std::time::Instant;
|
|
7
|
+
|
|
8
|
+
pub type Line = ((f64, f64), (f64, f64), (f64, f64, f64, f64), f64, i32);
|
|
9
|
+
static LAST_STAGE_NS: Mutex<(u64, u64, u64)> = Mutex::new((0, 0, 0));
|
|
10
|
+
|
|
11
|
+
/// 返回最近一次启用绘图线剖析后的对象读取、线段读取和几何计算纳秒数。
|
|
12
|
+
pub fn stage_stats() -> (u64, u64, u64) {
|
|
13
|
+
*LAST_STAGE_NS
|
|
14
|
+
.lock()
|
|
15
|
+
.unwrap_or_else(|poisoned| poisoned.into_inner())
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type Segment = *mut c_void;
|
|
19
|
+
type Object = *mut c_void;
|
|
20
|
+
type CountFn = unsafe extern "system" fn(Object) -> c_int;
|
|
21
|
+
type GetFn = unsafe extern "system" fn(Object, c_int) -> Segment;
|
|
22
|
+
type PointFn = unsafe extern "system" fn(Segment, *mut c_float, *mut c_float) -> c_int;
|
|
23
|
+
type SegmentFlagFn = unsafe extern "system" fn(Segment) -> c_int;
|
|
24
|
+
type DrawModeFn = unsafe extern "system" fn(Object, *mut c_int, *mut c_int) -> c_int;
|
|
25
|
+
type StrokeColorFn =
|
|
26
|
+
unsafe extern "system" fn(Object, *mut c_uint, *mut c_uint, *mut c_uint, *mut c_uint) -> c_int;
|
|
27
|
+
type StrokeWidthFn = unsafe extern "system" fn(Object, *mut c_float) -> c_int;
|
|
28
|
+
|
|
29
|
+
struct Api {
|
|
30
|
+
count: CountFn,
|
|
31
|
+
get: GetFn,
|
|
32
|
+
point: PointFn,
|
|
33
|
+
kind: SegmentFlagFn,
|
|
34
|
+
closes: SegmentFlagFn,
|
|
35
|
+
draw_mode: DrawModeFn,
|
|
36
|
+
stroke_color: StrokeColorFn,
|
|
37
|
+
stroke_width: StrokeWidthFn,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// 按 Python 页面视觉坐标规则变换点,运算顺序与参考路径一致。
|
|
41
|
+
fn visual_point(point: (f64, f64), bbox: [f64; 4], rotation: i32) -> (f64, f64) {
|
|
42
|
+
let (x, y) = point;
|
|
43
|
+
let [left, bottom, right, top] = bbox;
|
|
44
|
+
match rotation {
|
|
45
|
+
90 => (y - bottom, x - left),
|
|
46
|
+
180 => (right - x, y - bottom),
|
|
47
|
+
270 => (top - y, right - x),
|
|
48
|
+
_ => (x - left, top - y),
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/// 对单个线段应用与 Python `_make_axis_drawing_line` 相同的轴线和页面裁剪判断。
|
|
53
|
+
fn axis_line(
|
|
54
|
+
raw_start: (f64, f64),
|
|
55
|
+
raw_end: (f64, f64),
|
|
56
|
+
stroke_width: f64,
|
|
57
|
+
bbox: [f64; 4],
|
|
58
|
+
rotation: i32,
|
|
59
|
+
) -> Option<Line> {
|
|
60
|
+
let start = visual_point(raw_start, bbox, rotation);
|
|
61
|
+
let end = visual_point(raw_end, bbox, rotation);
|
|
62
|
+
let (page_width, page_height) = if rotation == 90 || rotation == 270 {
|
|
63
|
+
(bbox[3] - bbox[1], bbox[2] - bbox[0])
|
|
64
|
+
} else {
|
|
65
|
+
(bbox[2] - bbox[0], bbox[3] - bbox[1])
|
|
66
|
+
};
|
|
67
|
+
let (x0, y0) = start;
|
|
68
|
+
let (x1, y1) = end;
|
|
69
|
+
if ![x0, y0, x1, y1, stroke_width].iter().all(|v| v.is_finite()) {
|
|
70
|
+
return None;
|
|
71
|
+
}
|
|
72
|
+
let delta_x = (x1 - x0).abs();
|
|
73
|
+
let delta_y = (y1 - y0).abs();
|
|
74
|
+
if delta_x >= delta_y && delta_y <= 1.0_f64.max(delta_x * 0.02) {
|
|
75
|
+
let coordinate = (y0 + y1) / 2.0;
|
|
76
|
+
if coordinate < 0.0 || coordinate > page_height {
|
|
77
|
+
return None;
|
|
78
|
+
}
|
|
79
|
+
let main_start = 0.0_f64.max(x0.min(x1));
|
|
80
|
+
let main_end = page_width.min(x0.max(x1));
|
|
81
|
+
if main_end - main_start < 1.0 {
|
|
82
|
+
return None;
|
|
83
|
+
}
|
|
84
|
+
let width = 0.0_f64.max(stroke_width).max(delta_y);
|
|
85
|
+
let half_width = width / 2.0;
|
|
86
|
+
return Some((
|
|
87
|
+
(main_start, coordinate),
|
|
88
|
+
(main_end, coordinate),
|
|
89
|
+
(
|
|
90
|
+
main_start,
|
|
91
|
+
0.0_f64.max(coordinate - half_width),
|
|
92
|
+
main_end,
|
|
93
|
+
page_height.min(coordinate + half_width),
|
|
94
|
+
),
|
|
95
|
+
width,
|
|
96
|
+
0,
|
|
97
|
+
));
|
|
98
|
+
}
|
|
99
|
+
if delta_y > delta_x && delta_x <= 1.0_f64.max(delta_y * 0.02) {
|
|
100
|
+
let coordinate = (x0 + x1) / 2.0;
|
|
101
|
+
if coordinate < 0.0 || coordinate > page_width {
|
|
102
|
+
return None;
|
|
103
|
+
}
|
|
104
|
+
let main_start = 0.0_f64.max(y0.min(y1));
|
|
105
|
+
let main_end = page_height.min(y0.max(y1));
|
|
106
|
+
if main_end - main_start < 1.0 {
|
|
107
|
+
return None;
|
|
108
|
+
}
|
|
109
|
+
let width = 0.0_f64.max(stroke_width).max(delta_x);
|
|
110
|
+
let half_width = width / 2.0;
|
|
111
|
+
return Some((
|
|
112
|
+
(coordinate, main_start),
|
|
113
|
+
(coordinate, main_end),
|
|
114
|
+
(
|
|
115
|
+
0.0_f64.max(coordinate - half_width),
|
|
116
|
+
main_start,
|
|
117
|
+
page_width.min(coordinate + half_width),
|
|
118
|
+
main_end,
|
|
119
|
+
),
|
|
120
|
+
width,
|
|
121
|
+
1,
|
|
122
|
+
));
|
|
123
|
+
}
|
|
124
|
+
None
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/// 仅在显式剖析时测量轴线判定,常规路径不增加计时器开销。
|
|
128
|
+
fn measured_axis_line(
|
|
129
|
+
start: (f64, f64),
|
|
130
|
+
end: (f64, f64),
|
|
131
|
+
width: f64,
|
|
132
|
+
bbox: [f64; 4],
|
|
133
|
+
rotation: i32,
|
|
134
|
+
profile: bool,
|
|
135
|
+
geometry_ns: &mut u64,
|
|
136
|
+
) -> Option<Line> {
|
|
137
|
+
if !profile {
|
|
138
|
+
return axis_line(start, end, width, bbox, rotation);
|
|
139
|
+
}
|
|
140
|
+
let started = Instant::now();
|
|
141
|
+
let result = axis_line(start, end, width, bbox, rotation);
|
|
142
|
+
*geometry_ns += started.elapsed().as_nanos() as u64;
|
|
143
|
+
result
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/// 只在所有 Path 都是无矩阵、无裁剪、无填充的描边时返回原生线;其他页整体回退。
|
|
147
|
+
///
|
|
148
|
+
/// # Safety
|
|
149
|
+
/// 调用方须验证全部 PDFium ABI,持有页面及同库函数引用,并在全局锁内调用。
|
|
150
|
+
pub unsafe fn read_fast_lines(
|
|
151
|
+
addresses: Vec<usize>,
|
|
152
|
+
handle: usize,
|
|
153
|
+
bbox: [f64; 4],
|
|
154
|
+
rotation: i32,
|
|
155
|
+
) -> Result<Option<Vec<Line>>, ReadError> {
|
|
156
|
+
if addresses.len() != 19
|
|
157
|
+
|| addresses.contains(&0)
|
|
158
|
+
|| handle == 0
|
|
159
|
+
|| ![0, 90, 180, 270].contains(&rotation)
|
|
160
|
+
{
|
|
161
|
+
return Err(ReadError::InvalidInput(
|
|
162
|
+
"invalid drawing line bridge arguments",
|
|
163
|
+
));
|
|
164
|
+
}
|
|
165
|
+
if !bbox.iter().all(|value| value.is_finite()) || bbox[2] <= bbox[0] || bbox[3] <= bbox[1] {
|
|
166
|
+
return Ok(None);
|
|
167
|
+
}
|
|
168
|
+
let api = Api {
|
|
169
|
+
count: std::mem::transmute::<usize, CountFn>(addresses[11]),
|
|
170
|
+
get: std::mem::transmute::<usize, GetFn>(addresses[12]),
|
|
171
|
+
point: std::mem::transmute::<usize, PointFn>(addresses[13]),
|
|
172
|
+
kind: std::mem::transmute::<usize, SegmentFlagFn>(addresses[14]),
|
|
173
|
+
closes: std::mem::transmute::<usize, SegmentFlagFn>(addresses[15]),
|
|
174
|
+
draw_mode: std::mem::transmute::<usize, DrawModeFn>(addresses[16]),
|
|
175
|
+
stroke_color: std::mem::transmute::<usize, StrokeColorFn>(addresses[17]),
|
|
176
|
+
stroke_width: std::mem::transmute::<usize, StrokeWidthFn>(addresses[18]),
|
|
177
|
+
};
|
|
178
|
+
let profile = std::env::var_os("DOCVORTEX_PROFILE_DRAWING_LINES").is_some();
|
|
179
|
+
let object_started = Instant::now();
|
|
180
|
+
let objects = objects::read_objects(addresses[..11].to_vec(), handle, 2, 15)?;
|
|
181
|
+
let object_ns = if profile {
|
|
182
|
+
object_started.elapsed().as_nanos() as u64
|
|
183
|
+
} else {
|
|
184
|
+
0
|
|
185
|
+
};
|
|
186
|
+
let path_started = Instant::now();
|
|
187
|
+
let mut geometry_ns = 0_u64;
|
|
188
|
+
let mut lines = Vec::new();
|
|
189
|
+
for (address, matrix, _parent, depth, clip) in objects {
|
|
190
|
+
if depth != 0 || clip.is_some() || matrix != [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] {
|
|
191
|
+
return Ok(None);
|
|
192
|
+
}
|
|
193
|
+
let raw = address as Object;
|
|
194
|
+
let (mut fill_mode, mut stroke) = (0, 0);
|
|
195
|
+
if (api.draw_mode)(raw, &mut fill_mode, &mut stroke) == 0 {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if fill_mode != 0 {
|
|
199
|
+
return Ok(None);
|
|
200
|
+
}
|
|
201
|
+
if stroke == 0 {
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
let (mut red, mut green, mut blue, mut alpha) = (0, 0, 0, 255);
|
|
205
|
+
if (api.stroke_color)(raw, &mut red, &mut green, &mut blue, &mut alpha) != 0 && alpha == 0 {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
let mut raw_width: c_float = 0.0;
|
|
209
|
+
let width = if (api.stroke_width)(raw, &mut raw_width) != 0 {
|
|
210
|
+
let value = f64::from(raw_width).abs();
|
|
211
|
+
if value.is_finite() {
|
|
212
|
+
value
|
|
213
|
+
} else {
|
|
214
|
+
0.0
|
|
215
|
+
}
|
|
216
|
+
} else {
|
|
217
|
+
0.0
|
|
218
|
+
};
|
|
219
|
+
let mut current: Option<(f64, f64)> = None;
|
|
220
|
+
let mut subpath_start: Option<(f64, f64)> = None;
|
|
221
|
+
for index in 0..(api.count)(raw).max(0) {
|
|
222
|
+
let segment = (api.get)(raw, index);
|
|
223
|
+
if segment.is_null() {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
let (mut x, mut y) = (0.0, 0.0);
|
|
227
|
+
if (api.point)(segment, &mut x, &mut y) == 0 {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
let point = (f64::from(x), f64::from(y));
|
|
231
|
+
let segment_type = (api.kind)(segment);
|
|
232
|
+
if segment_type == 2 {
|
|
233
|
+
current = Some(point);
|
|
234
|
+
subpath_start = Some(point);
|
|
235
|
+
} else if let Some(previous) = current {
|
|
236
|
+
if segment_type == 0 {
|
|
237
|
+
if let Some(line) = measured_axis_line(
|
|
238
|
+
previous,
|
|
239
|
+
point,
|
|
240
|
+
width,
|
|
241
|
+
bbox,
|
|
242
|
+
rotation,
|
|
243
|
+
profile,
|
|
244
|
+
&mut geometry_ns,
|
|
245
|
+
) {
|
|
246
|
+
lines.push(line);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
current = Some(point);
|
|
250
|
+
} else {
|
|
251
|
+
current = Some(point);
|
|
252
|
+
subpath_start = Some(point);
|
|
253
|
+
}
|
|
254
|
+
if (api.closes)(segment) != 0 {
|
|
255
|
+
if let (Some(last), Some(first)) = (current, subpath_start) {
|
|
256
|
+
if last != first {
|
|
257
|
+
if let Some(line) = measured_axis_line(
|
|
258
|
+
last,
|
|
259
|
+
first,
|
|
260
|
+
width,
|
|
261
|
+
bbox,
|
|
262
|
+
rotation,
|
|
263
|
+
profile,
|
|
264
|
+
&mut geometry_ns,
|
|
265
|
+
) {
|
|
266
|
+
lines.push(line);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
current = Some(first);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if profile {
|
|
275
|
+
let segment_ns = (path_started.elapsed().as_nanos() as u64).saturating_sub(geometry_ns);
|
|
276
|
+
*LAST_STAGE_NS
|
|
277
|
+
.lock()
|
|
278
|
+
.unwrap_or_else(|poisoned| poisoned.into_inner()) =
|
|
279
|
+
(object_ns, segment_ns, geometry_ns);
|
|
280
|
+
}
|
|
281
|
+
Ok(Some(lines))
|
|
282
|
+
}
|
|
@@ -134,9 +134,10 @@ impl Api {
|
|
|
134
134
|
continue;
|
|
135
135
|
}
|
|
136
136
|
let combined = multiply(matrix.values.map(f64::from), parent);
|
|
137
|
-
let clip = self.clip_bounds(raw, parent, inherited);
|
|
138
137
|
let object_kind = (self.kind)(raw);
|
|
138
|
+
// 类型先于裁剪判断:类型不匹配的叶子(如纯路径页上的 Path)不必读 clip。
|
|
139
139
|
if object_kind == 5 {
|
|
140
|
+
let clip = self.clip_bounds(raw, parent, inherited);
|
|
140
141
|
self.walk(
|
|
141
142
|
raw,
|
|
142
143
|
true,
|
|
@@ -148,6 +149,7 @@ impl Api {
|
|
|
148
149
|
output,
|
|
149
150
|
);
|
|
150
151
|
} else if object_kind == kind {
|
|
152
|
+
let clip = self.clip_bounds(raw, parent, inherited);
|
|
151
153
|
output.push((raw as usize, combined, parent, depth, clip));
|
|
152
154
|
}
|
|
153
155
|
}
|
|
@@ -80,8 +80,14 @@ fn _native(module: &Bound<'_, PyModule>) -> PyResult<()> {
|
|
|
80
80
|
module.add_class::<pdfium::PdfiumCharacterBatches>()?;
|
|
81
81
|
module.add_class::<pdfium::PdfiumVisualCharacterBatches>()?;
|
|
82
82
|
module.add_class::<pdfium::PdfiumObjectBatches>()?;
|
|
83
|
+
module.add_class::<pdfium::PdfiumDrawingLineBatches>()?;
|
|
83
84
|
module.add_function(wrap_pyfunction!(pdfium::read_pdfium_subpaths, module)?)?;
|
|
84
85
|
module.add_function(wrap_pyfunction!(pdfium::read_pdfium_objects, module)?)?;
|
|
86
|
+
module.add_function(wrap_pyfunction!(pdfium::read_pdfium_drawing_lines, module)?)?;
|
|
87
|
+
module.add_function(wrap_pyfunction!(
|
|
88
|
+
pdfium::pdfium_drawing_line_stage_stats,
|
|
89
|
+
module
|
|
90
|
+
)?)?;
|
|
85
91
|
module.add_function(wrap_pyfunction!(
|
|
86
92
|
pdfium::read_pdfium_visual_batches,
|
|
87
93
|
module
|
|
@@ -96,6 +96,57 @@ pub fn read_pdfium_objects(
|
|
|
96
96
|
})
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
/// 按固定批次向 Python 物化轴线数值记录,避免整页同时持有两份大列表。
|
|
100
|
+
#[pyclass(module = "docvortex._native")]
|
|
101
|
+
pub struct PdfiumDrawingLineBatches {
|
|
102
|
+
records: std::vec::IntoIter<docvortex_pdfium::drawing_lines::Line>,
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
#[pymethods]
|
|
106
|
+
impl PdfiumDrawingLineBatches {
|
|
107
|
+
/// 返回当前迭代器以供页面作用域内同步消费。
|
|
108
|
+
fn __iter__(slf: PyRef<'_, Self>) -> PyRef<'_, Self> {
|
|
109
|
+
slf
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/// 每次最多返回 1024 条线,剩余记录仍留在 Rust 内。
|
|
113
|
+
fn __next__(&mut self) -> Option<Vec<docvortex_pdfium::drawing_lines::Line>> {
|
|
114
|
+
let records: Vec<_> = self.records.by_ref().take(RECORD_BATCH_SIZE).collect();
|
|
115
|
+
if records.is_empty() {
|
|
116
|
+
None
|
|
117
|
+
} else {
|
|
118
|
+
Some(records)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/// 对简单描边 Path 批量提取轴线;不支持的复杂页返回 None 供参考实现处理。
|
|
124
|
+
#[pyfunction]
|
|
125
|
+
pub fn read_pdfium_drawing_lines(
|
|
126
|
+
addresses: Vec<usize>,
|
|
127
|
+
handle: usize,
|
|
128
|
+
bbox: [f64; 4],
|
|
129
|
+
rotation: i32,
|
|
130
|
+
) -> PyResult<Option<PdfiumDrawingLineBatches>> {
|
|
131
|
+
let records = unsafe {
|
|
132
|
+
docvortex_pdfium::drawing_lines::read_fast_lines(addresses, handle, bbox, rotation)
|
|
133
|
+
}
|
|
134
|
+
.map_err(|error| match error {
|
|
135
|
+
ReadError::InvalidInput(message) => PyValueError::new_err(message),
|
|
136
|
+
ReadError::Pdfium(message) => PdfiumReadError::new_err(message),
|
|
137
|
+
ReadError::Allocation(message) => PyMemoryError::new_err(message),
|
|
138
|
+
})?;
|
|
139
|
+
Ok(records.map(|items| PdfiumDrawingLineBatches {
|
|
140
|
+
records: items.into_iter(),
|
|
141
|
+
}))
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/// 暴露最近一次显式剖析的绘图线读取阶段耗时,单位为纳秒。
|
|
145
|
+
#[pyfunction]
|
|
146
|
+
pub fn pdfium_drawing_line_stage_stats() -> (u64, u64, u64) {
|
|
147
|
+
docvortex_pdfium::drawing_lines::stage_stats()
|
|
148
|
+
}
|
|
149
|
+
|
|
99
150
|
type VisualRecord = (
|
|
100
151
|
u32,
|
|
101
152
|
f64,
|
|
@@ -49,6 +49,7 @@ def _classify_page_auxiliary_text(prepared: _PreparedPage) -> None:
|
|
|
49
49
|
prepared.table_bboxes,
|
|
50
50
|
prepared.drawing_lines,
|
|
51
51
|
prepared.page_size,
|
|
52
|
+
prepared=prepared,
|
|
52
53
|
)
|
|
53
54
|
prepared.page_footnote_groups += _classify_page_footnotes(
|
|
54
55
|
prepared.remaining_lines,
|
|
@@ -56,6 +57,7 @@ def _classify_page_auxiliary_text(prepared: _PreparedPage) -> None:
|
|
|
56
57
|
prepared.drawing_lines,
|
|
57
58
|
prepared.page_size,
|
|
58
59
|
visual_bboxes=[block["bbox"] for block in prepared.fixed_blocks if block.get("type") == "image"],
|
|
60
|
+
prepared=prepared,
|
|
59
61
|
)
|
|
60
62
|
|
|
61
63
|
|
|
@@ -163,6 +165,7 @@ def _classify_image_footnotes(
|
|
|
163
165
|
page_size: tuple[float, float],
|
|
164
166
|
*,
|
|
165
167
|
reference_body_height: float | None = None,
|
|
168
|
+
prepared: _PreparedPage | None = None,
|
|
166
169
|
) -> None:
|
|
167
170
|
"""用图片、下缘长横线和紧凑小字的联合关系识别图表脚注。"""
|
|
168
171
|
|
|
@@ -202,12 +205,11 @@ def _classify_image_footnotes(
|
|
|
202
205
|
body_samples = [_line_effective_height(line, bbox) for line, bbox in line_geometry]
|
|
203
206
|
body_height = max(0.1, statistics.median(body_samples))
|
|
204
207
|
local_images = [_rotate_bbox_to_upright(bbox, page_size, dominant_angle) for bbox in image_bboxes]
|
|
205
|
-
|
|
206
|
-
drawing_lines,
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
208
|
+
if prepared is None:
|
|
209
|
+
local_axis_lines = _transform_axis_lines(drawing_lines, page_size, dominant_angle)
|
|
210
|
+
table_lines = _confirmed_table_horizontal_lines(local_axis_lines, table_bboxes)
|
|
211
|
+
else:
|
|
212
|
+
local_axis_lines, table_lines = _prepared_local_axis_table_lines(prepared, dominant_angle)
|
|
211
213
|
matched_source_indices: set[int] = set()
|
|
212
214
|
for image_bbox in local_images:
|
|
213
215
|
image_width = max(0.1, image_bbox[2] - image_bbox[0])
|
|
@@ -229,8 +231,7 @@ def _classify_image_footnotes(
|
|
|
229
231
|
and 0.0 <= axis_line.bbox[1] - row_bottom <= max(0.01 * local_page_height, 0.75 * body_height)
|
|
230
232
|
and not _rule_belongs_to_confirmed_table(
|
|
231
233
|
axis_line,
|
|
232
|
-
|
|
233
|
-
table_bboxes,
|
|
234
|
+
table_lines,
|
|
234
235
|
local_page_width,
|
|
235
236
|
)
|
|
236
237
|
]
|
|
@@ -270,6 +271,7 @@ def _classify_deferred_image_footnotes(
|
|
|
270
271
|
prepared.drawing_lines,
|
|
271
272
|
prepared.page_size,
|
|
272
273
|
reference_body_height=body_height,
|
|
274
|
+
prepared=prepared,
|
|
273
275
|
)
|
|
274
276
|
|
|
275
277
|
|
|
@@ -361,6 +363,7 @@ def _classify_page_footnotes(
|
|
|
361
363
|
page_size: tuple[float, float],
|
|
362
364
|
*,
|
|
363
365
|
visual_bboxes: list[BBox] | None = None,
|
|
366
|
+
prepared: _PreparedPage | None = None,
|
|
364
367
|
) -> list[set[int]]:
|
|
365
368
|
"""识别主方向页脚注,并按触发分隔线返回来源编号分组。"""
|
|
366
369
|
|
|
@@ -401,11 +404,11 @@ def _classify_page_footnotes(
|
|
|
401
404
|
# 脚注分隔线应对齐稳定栏锚点,不能被页眉或跨栏关键词的宽行扩张污染。
|
|
402
405
|
recalculate_intervals=False,
|
|
403
406
|
)
|
|
404
|
-
|
|
405
|
-
drawing_lines,
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
407
|
+
if prepared is None:
|
|
408
|
+
local_axis_lines = _transform_axis_lines(drawing_lines, page_size, dominant_angle)
|
|
409
|
+
table_lines = _confirmed_table_horizontal_lines(local_axis_lines, table_bboxes)
|
|
410
|
+
else:
|
|
411
|
+
local_axis_lines, table_lines = _prepared_local_axis_table_lines(prepared, dominant_angle)
|
|
409
412
|
|
|
410
413
|
candidate_groups: list[set[int]] = []
|
|
411
414
|
visual_bboxes = visual_bboxes or []
|
|
@@ -435,8 +438,7 @@ def _classify_page_footnotes(
|
|
|
435
438
|
# 表格边界会产生断裂横线;除框内线段外,也排除与其同高且近邻的框外线段。
|
|
436
439
|
if _rule_belongs_to_confirmed_table(
|
|
437
440
|
axis_line,
|
|
438
|
-
|
|
439
|
-
table_bboxes,
|
|
441
|
+
table_lines,
|
|
440
442
|
local_page_width,
|
|
441
443
|
):
|
|
442
444
|
continue
|
|
@@ -535,29 +537,52 @@ def _augment_footnote_groups_with_edge_markers(
|
|
|
535
537
|
group.add(line.source_index)
|
|
536
538
|
|
|
537
539
|
|
|
538
|
-
def
|
|
539
|
-
|
|
540
|
+
def _prepared_local_axis_table_lines(
|
|
541
|
+
prepared: _PreparedPage,
|
|
542
|
+
dominant_angle: int,
|
|
543
|
+
) -> tuple[list[_LocalAxisLine], list[_LocalAxisLine]]:
|
|
544
|
+
"""按页和主方向复用轴线变换及确认表格横线,输入身份变化时重新计算。"""
|
|
545
|
+
|
|
546
|
+
key = (dominant_angle, id(prepared.drawing_lines), id(prepared.table_bboxes))
|
|
547
|
+
cached = prepared.local_axis_table_cache.get(key)
|
|
548
|
+
if cached is not None:
|
|
549
|
+
return cached
|
|
550
|
+
local_axis_lines = _transform_axis_lines(prepared.drawing_lines, prepared.page_size, dominant_angle)
|
|
551
|
+
table_lines = _confirmed_table_horizontal_lines(local_axis_lines, prepared.table_bboxes)
|
|
552
|
+
result = (local_axis_lines, table_lines)
|
|
553
|
+
prepared.local_axis_table_cache[key] = result
|
|
554
|
+
return result
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
def _confirmed_table_horizontal_lines(
|
|
540
558
|
local_axis_lines: list[_LocalAxisLine],
|
|
541
559
|
table_bboxes: list[BBox],
|
|
560
|
+
) -> list[_LocalAxisLine]:
|
|
561
|
+
"""按页预计算与确认表格框相交的横线,供所有候选排除判断复用。"""
|
|
562
|
+
|
|
563
|
+
return [
|
|
564
|
+
table_line
|
|
565
|
+
for table_line in local_axis_lines
|
|
566
|
+
if table_line.orientation == "horizontal"
|
|
567
|
+
and any(
|
|
568
|
+
_bbox_intersects(
|
|
569
|
+
_expand_bbox(table_line.original_bbox, max(0.5, table_line.width)),
|
|
570
|
+
table_bbox,
|
|
571
|
+
)
|
|
572
|
+
for table_bbox in table_bboxes
|
|
573
|
+
)
|
|
574
|
+
]
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
def _rule_belongs_to_confirmed_table(
|
|
578
|
+
candidate: _LocalAxisLine,
|
|
579
|
+
table_lines: list[_LocalAxisLine],
|
|
542
580
|
local_page_width: float,
|
|
543
581
|
) -> bool:
|
|
544
582
|
"""把表格框内横线及其同高近邻断裂段一并排除,避免框外残段触发脚注。"""
|
|
545
583
|
|
|
546
|
-
if not table_bboxes:
|
|
547
|
-
return False
|
|
548
584
|
maximum_segment_gap = 0.04 * local_page_width
|
|
549
|
-
for table_line in
|
|
550
|
-
if table_line.orientation != "horizontal":
|
|
551
|
-
continue
|
|
552
|
-
table_margin = max(0.5, table_line.width)
|
|
553
|
-
if not any(
|
|
554
|
-
_bbox_intersects(
|
|
555
|
-
_expand_bbox(table_line.original_bbox, table_margin),
|
|
556
|
-
table_bbox,
|
|
557
|
-
)
|
|
558
|
-
for table_bbox in table_bboxes
|
|
559
|
-
):
|
|
560
|
-
continue
|
|
585
|
+
for table_line in table_lines:
|
|
561
586
|
center_tolerance = max(1.0, candidate.width, table_line.width)
|
|
562
587
|
if abs(_bbox_center_y(candidate.bbox) - _bbox_center_y(table_line.bbox)) > center_tolerance:
|
|
563
588
|
continue
|
|
@@ -800,11 +825,7 @@ def _classify_rule_delimited_headers(pages: list[_PreparedPage]) -> None:
|
|
|
800
825
|
]
|
|
801
826
|
heights = [_line_effective_height(line, bbox) for line, bbox in local_lines]
|
|
802
827
|
median_height = statistics.median(heights) if heights else 1.0
|
|
803
|
-
local_axis_lines =
|
|
804
|
-
page.drawing_lines,
|
|
805
|
-
page.page_size,
|
|
806
|
-
dominant_angle,
|
|
807
|
-
)
|
|
828
|
+
local_axis_lines, table_lines = _prepared_local_axis_table_lines(page, dominant_angle)
|
|
808
829
|
candidates = [
|
|
809
830
|
axis_line
|
|
810
831
|
for axis_line in local_axis_lines
|
|
@@ -814,8 +835,7 @@ def _classify_rule_delimited_headers(pages: list[_PreparedPage]) -> None:
|
|
|
814
835
|
and any(bbox[3] <= _bbox_center_y(axis_line.bbox) for bbox in header_evidence_bboxes)
|
|
815
836
|
and not _rule_belongs_to_confirmed_table(
|
|
816
837
|
axis_line,
|
|
817
|
-
|
|
818
|
-
page.table_bboxes,
|
|
838
|
+
table_lines,
|
|
819
839
|
local_page_width,
|
|
820
840
|
)
|
|
821
841
|
and not _rule_overlaps_fixed_container(
|
|
@@ -856,11 +876,7 @@ def _classify_rule_delimited_footers(pages: list[_PreparedPage]) -> None:
|
|
|
856
876
|
local_page_width, local_page_height = local_page_size
|
|
857
877
|
if local_page_width <= 0 or local_page_height <= 0:
|
|
858
878
|
continue
|
|
859
|
-
local_axis_lines =
|
|
860
|
-
page.drawing_lines,
|
|
861
|
-
page.page_size,
|
|
862
|
-
dominant_angle,
|
|
863
|
-
)
|
|
879
|
+
local_axis_lines, table_lines = _prepared_local_axis_table_lines(page, dominant_angle)
|
|
864
880
|
rules = [
|
|
865
881
|
rule
|
|
866
882
|
for rule in local_axis_lines
|
|
@@ -869,8 +885,7 @@ def _classify_rule_delimited_footers(pages: list[_PreparedPage]) -> None:
|
|
|
869
885
|
and rule.bbox[2] - rule.bbox[0] >= 0.2 * local_page_width
|
|
870
886
|
and not _rule_belongs_to_confirmed_table(
|
|
871
887
|
rule,
|
|
872
|
-
|
|
873
|
-
page.table_bboxes,
|
|
888
|
+
table_lines,
|
|
874
889
|
local_page_width,
|
|
875
890
|
)
|
|
876
891
|
and not _rule_overlaps_fixed_container(
|