docvortex 0.4.11__tar.gz → 0.4.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docvortex-0.4.11/src/docvortex.egg-info → docvortex-0.4.13}/PKG-INFO +1 -1
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/constants.py +0 -2
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/resources.py +2 -40
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/converters.py +29 -1
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/table.py +60 -27
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +109 -317
- docvortex-0.4.13/src/docvortex/analyzers/native/office/spreadsheet/region_discovery.py +338 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/contracts.py +1 -3
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/export/files.py +12 -3
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/version.py +1 -1
- {docvortex-0.4.11 → docvortex-0.4.13/src/docvortex.egg-info}/PKG-INFO +1 -1
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex.egg-info/SOURCES.txt +1 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_html.py +8 -61
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_odf.py +119 -2
- {docvortex-0.4.11 → docvortex-0.4.13}/LICENSE.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/MANIFEST.in +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/README.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/README.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/demo.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/README.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/docx_01.doc +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/docx_01.docx +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/pptx_01.ppt +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/pptx_01.pptx +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/rtf_01.rtf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/xlsx_01.xls +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/office_docs/xlsx_01.xlsx +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/caibao1.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/demo1.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/demo2.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/demo3.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/demo4.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/demo6.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs/small_ocr.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/HTML_PROTOCOL.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/JSON_PROTOCOL.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/METADATA.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/PDF_FONTS.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/RENDER_OWNERSHIP.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/USAGE.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/flash-manual-annotations-2026-09-15.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/flash-round2-annotations-2026-09-15.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/flash-rule-generalization-2026-09-15.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/flash-spatial-layout-followup-2026-09-16.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/flash-spatial-layout-round3-2026-09-16.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/flash-title-coverage-2026-09-16.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/docs/sdk-0.4.md +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/pyproject.toml +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/schemas/middle-2.0.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/schemas/model-2.0.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/setup.cfg +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/image.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/names.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/contracts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/csv.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/constants.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/errors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/package.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/properties.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/anchors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/document.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/errors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/html/selector.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/images.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/package.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/path.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/errors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/image.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/limits.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/opc.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/streams.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/rule_band.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/annotation_bands.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/graphics.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/layout_evidence.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/line_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/line_merging.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/native_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_detection.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_rules.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/continuity.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/text_roles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/compact_titles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/pdf.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/assets/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/assets/images.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/assets/store.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/cli.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/html/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/html/contracts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/html/materializer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/html/parser.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/html/resources.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/codecs/json.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/inline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/links.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/markup/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/markup/anchors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/markup/formula.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/markup/projector.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/markup/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/mathml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/normalization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/spans.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/content.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/document.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/html.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/rules.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/table/structure.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/content/tree.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/detection.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/filetypes.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/page_range.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/_document.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/classify.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/constants.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/font_runtime.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/images.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/native_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/native_contracts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/native_coordinates.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/native_objects.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/pdfium.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/raster.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/text/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/text/_contracts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/text/dedup.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/text/extract.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/text/geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/text/groups.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/pdf/visuals.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/properties.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/document/source.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/errors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/export/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/export/bundle.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/export/middle.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_coordinates.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_hyperlink.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_image.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_image_operations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_image_payload.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_svg_raster.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/image_encoding.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/language.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/type_identity.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/foundation/xml_names.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/options.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/content.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/document.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/lists.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/page_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/pages.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/paragraphs.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/postprocess/visual.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/public_api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/common/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/common/context.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/common/html_table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/common/index.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/common/list_items.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/common/planner.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/assets.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/inline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/math.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/docx/table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/epub/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/epub/assets.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/epub/package.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/epub/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/html/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/html/inline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/html/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/html/table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/latex/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/latex/assets.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/latex/inline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/latex/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/latex/table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/assets.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/inline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/markdown/table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/assets.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/diagnostics.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/font_plan.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/formula.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/formula_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/inline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/original.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/pagination.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/paragraph.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/table_content.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/table_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/pdf/title_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/contracts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/docx.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/epub.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/fragments.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/html.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/latex.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/markdown.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/pdf.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/render/structured_content.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/epub/docvortex.css +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/fonts/NOTICE +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/fonts/manifest.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/html/docvortex.css +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/html/docvortex.min.css +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/resources/unicode/EquivalentUnifiedIdeograph-17.0.0.txt +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/result.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/schema.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/visualization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex.egg-info/dependency_links.txt +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex.egg-info/entry_points.txt +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex.egg-info/requires.txt +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex.egg-info/top_level.txt +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/benchmarks/flash_pdf.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/benchmarks/native_pdf_table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/benchmarks/pdf_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/benchmarks/pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_layout_block_expectations.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_manual_annotations.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_manual_review_decisions.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_reviewed_history.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_round2_annotations.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_round2_review_decisions.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_round3_annotations.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_round3_followup_review_decisions.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_round3_review_decisions.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_rule_generalization_review_decisions.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/flash_title_coverage_review_decisions.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/pdf_char_dedup.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/fixtures/rtf/semantic.rtf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_architecture.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_benchmark_entrypoint.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_brand_protocol.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_cli_logging.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_complete_pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_converter_lifecycle.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_document_envelope.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_document_metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_format_matrix.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_geometry_api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_history_geometry_tools.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_html_namespace.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_mixed_font_script_reference.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_analysis_api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_font_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_font_runtime.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_model_text_normalization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_output_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_render_pool.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_source_row_merging.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_pdf_symbol_normalization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_public_export_api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_public_image_api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_public_pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_refactor_raster.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_refactor_rendering.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_refactor_resources.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_release_ci_gate.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_render_ownership.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_renderer_branding.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_shared_boundaries.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_system_font_pdf_pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/test_validated_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_epub_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_flash_pdf_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_image_mtef_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_legacy_doc_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_legacy_xls_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_metafile_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_mtef_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_mtef_v5_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_native_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_odf_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_ofd_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/_span_test_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/connexin.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/fornax.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/frames_v1.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/frames_v2.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/k2_treap.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/mmlu_redux.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/nash_review.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/annotated/nougat.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/bloom_form_labels.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/journal_dual_caption.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/journal_layout_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/math_display_formulas.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_layout/quantum_appendix_layout.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/pdfs/test.pdf +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_backend_architecture.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_backend_block_object_regressions.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_docx_assets.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_docx_complex_fields.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_docx_math.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_docx_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_docx_special_char_tables.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_docx_table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_emfplus_integration.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_epub_backlinks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_epub_quoted_note_types.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_epub_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_bbox_grid_comparison.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_csv.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_docx_equationxml.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_epub.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_image_mtef.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_legacy_doc.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_legacy_ppt.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_legacy_xls.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_manual_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_markup_anchors.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_model.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_mtef_v5.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_ofd.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_office_image_mtef.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_office_metafile.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_office_models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_office_title_types.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_auxiliary_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_equation_images.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_extractor.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_formulas.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_graphics.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_layout_repairs.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_native_text.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_reviewed_history.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_samples.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_scripts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_semantics.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_tables.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_text_visibility.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_titles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_round2_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_round3_annotations.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_rtf.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_rule_generalization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_shared_helpers.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_spatial_evidence.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_guess_suffix_ole2.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_html_css_build.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_html_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_html_security.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_latex_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_markdown_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_middle_json_block_models.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_middle_json_export.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_middle_json_validator.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_model_json.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_native_pdf_table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_native_table_performance_equivalence.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_ofd_assembly.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_ofd_vector_tables.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_office_demo_exports.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_office_demo_pages.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_office_parser_regressions.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_cjk_style.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_cjk_wrapping.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_classify.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_demo_links.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_diagnostic_levels.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_document.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_formula_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_object_clipping.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_original_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_pagination.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_paragraph_cache.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_structured_tables.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_table_cache.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_table_round2.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_text_dedup.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_text_styles.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_title_font_plan.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_title_space.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_pdf_visualization.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_postprocess_page_blocks.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_postprocess_pages.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_postprocess_paragraphs.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_postprocess_visual.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_render_api.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_render_html_table.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_render_image_renderer.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_render_list_index_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_structured_content_render.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_svg_raster.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_table_merge.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_table_merge_cell_merge.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_text_block_anchor.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_text_boundary_rules.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tests/unittest/test_text_utils.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/__init__.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/build_html_css.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/calibrate_pdf_geometry.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/capture_baseline.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/capture_platform_layout.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/compare_font_platforms.py +0 -0
- {docvortex-0.4.11 → docvortex-0.4.13}/tools/font_geometry.py +0 -0
|
@@ -8,7 +8,6 @@ MAX_HTML_NODES: Final = 2_000_000
|
|
|
8
8
|
MAX_HTML_DEPTH: Final = 256
|
|
9
9
|
MAX_HTML_IMAGE_BYTES: Final = 20 * 1024 * 1024
|
|
10
10
|
MAX_HTML_IMAGE_TOTAL_BYTES: Final = 128 * 1024 * 1024
|
|
11
|
-
MAX_REMOTE_IMAGE_FETCH_SECONDS: Final = 10
|
|
12
11
|
MAX_HTML_STYLESHEET_BYTES: Final = 5 * 1024 * 1024
|
|
13
12
|
MAX_HTML_STYLESHEET_TOTAL_BYTES: Final = 20 * 1024 * 1024
|
|
14
13
|
MAX_HTML_RENDERED_BYTES: Final = 256 * 1024 * 1024
|
|
@@ -23,5 +22,4 @@ __all__ = [
|
|
|
23
22
|
"MAX_HTML_RENDERED_BYTES",
|
|
24
23
|
"MAX_HTML_STYLESHEET_BYTES",
|
|
25
24
|
"MAX_HTML_STYLESHEET_TOTAL_BYTES",
|
|
26
|
-
"MAX_REMOTE_IMAGE_FETCH_SECONDS",
|
|
27
25
|
]
|
|
@@ -6,7 +6,6 @@ import base64
|
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from typing import Protocol
|
|
8
8
|
from urllib.parse import SplitResult, unquote, urljoin, urlsplit, urlunsplit
|
|
9
|
-
from urllib.request import urlopen
|
|
10
9
|
|
|
11
10
|
from lxml import etree # type: ignore[reportMissingImports]
|
|
12
11
|
|
|
@@ -21,7 +20,6 @@ from .constants import (
|
|
|
21
20
|
MAX_HTML_IMAGE_TOTAL_BYTES,
|
|
22
21
|
MAX_HTML_STYLESHEET_BYTES,
|
|
23
22
|
MAX_HTML_STYLESHEET_TOTAL_BYTES,
|
|
24
|
-
MAX_REMOTE_IMAGE_FETCH_SECONDS,
|
|
25
23
|
)
|
|
26
24
|
from .errors import HtmlResourceLimitError
|
|
27
25
|
|
|
@@ -68,7 +66,6 @@ class HtmlResourceContext:
|
|
|
68
66
|
self._image_bytes = 0
|
|
69
67
|
self._stylesheet_bytes = 0
|
|
70
68
|
self._image_cache: dict[Path, str] = {}
|
|
71
|
-
self._remote_image_cache: dict[str, str] = {}
|
|
72
69
|
self._data_image_cache: dict[str, ResolvedMarkupImage] = {}
|
|
73
70
|
self._stylesheet_cache: dict[Path, str] = {}
|
|
74
71
|
self._local_root = source_context.local_resource_root.resolve() if source_context.local_resource_root else None
|
|
@@ -161,14 +158,14 @@ class HtmlResourceContext:
|
|
|
161
158
|
return sanitize_hyperlink_target(normalized, allow_relative=True, allow_fragment=True)
|
|
162
159
|
|
|
163
160
|
def resolve_image(self, source: str, *, alt: str = "") -> ResolvedMarkupImage | None:
|
|
164
|
-
"""按 data URI、远程 URL
|
|
161
|
+
"""按 data URI、远程 URL、本地安全文件的顺序解析图片,远程图片仅保留受限外链。"""
|
|
165
162
|
normalized = (source or "").strip()
|
|
166
163
|
if not normalized:
|
|
167
164
|
return ResolvedMarkupImage(alt=alt) if alt else None
|
|
168
165
|
if normalized.casefold().startswith("data:"):
|
|
169
166
|
return self._resolve_data_image(normalized, alt=alt)
|
|
170
167
|
if remote_url := self._resolve_remote_image_url(normalized):
|
|
171
|
-
return
|
|
168
|
+
return ResolvedMarkupImage(image_url=remote_url, alt=alt)
|
|
172
169
|
local_path = self._resolve_local_path(normalized)
|
|
173
170
|
if local_path is None or not local_path.is_file():
|
|
174
171
|
return ResolvedMarkupImage(alt=alt) if alt else None
|
|
@@ -258,41 +255,6 @@ class HtmlResourceContext:
|
|
|
258
255
|
self._data_image_cache[data_uri] = resolved
|
|
259
256
|
return resolved
|
|
260
257
|
|
|
261
|
-
def _resolve_remote_image(self, remote_url: str, *, alt: str) -> ResolvedMarkupImage:
|
|
262
|
-
"""远程图片默认保持外链,来源显式开启下载时按缓存下载内嵌。"""
|
|
263
|
-
if not self.source_context.fetch_remote_images:
|
|
264
|
-
return ResolvedMarkupImage(image_url=remote_url, alt=alt)
|
|
265
|
-
if cached := self._remote_image_cache.get(remote_url):
|
|
266
|
-
return ResolvedMarkupImage(image_base64=cached, alt=alt)
|
|
267
|
-
data_uri = self._fetch_remote_image(remote_url)
|
|
268
|
-
if data_uri is None:
|
|
269
|
-
return ResolvedMarkupImage(image_url=remote_url, alt=alt)
|
|
270
|
-
self._remote_image_cache[remote_url] = data_uri
|
|
271
|
-
return ResolvedMarkupImage(image_base64=data_uri, alt=alt)
|
|
272
|
-
|
|
273
|
-
def _fetch_remote_image(self, remote_url: str) -> str | None:
|
|
274
|
-
"""在单图上限与超时约束内下载远程图片并复核签名,网络失败返回 None 退回外链。"""
|
|
275
|
-
try:
|
|
276
|
-
with urlopen(remote_url, timeout=MAX_REMOTE_IMAGE_FETCH_SECONDS) as response:
|
|
277
|
-
chunks: list[bytes] = []
|
|
278
|
-
remaining = MAX_HTML_IMAGE_BYTES + 1
|
|
279
|
-
while remaining > 0:
|
|
280
|
-
chunk = response.read(remaining)
|
|
281
|
-
if not chunk:
|
|
282
|
-
break
|
|
283
|
-
chunks.append(chunk)
|
|
284
|
-
remaining -= len(chunk)
|
|
285
|
-
except (OSError, ValueError):
|
|
286
|
-
return None
|
|
287
|
-
payload = b"".join(chunks)
|
|
288
|
-
if len(payload) > MAX_HTML_IMAGE_BYTES:
|
|
289
|
-
raise HtmlResourceLimitError(f"HTML image exceeds max_html_image_bytes={MAX_HTML_IMAGE_BYTES}")
|
|
290
|
-
data_uri = _image_data_uri(payload)
|
|
291
|
-
if data_uri is None:
|
|
292
|
-
return None
|
|
293
|
-
self._charge_image_bytes(len(payload))
|
|
294
|
-
return data_uri
|
|
295
|
-
|
|
296
258
|
def _charge_image_bytes(self, byte_count: int) -> None:
|
|
297
259
|
"""累计实际保留的图片字节,并在超限时终止整份文档。"""
|
|
298
260
|
self._image_bytes += byte_count
|
{docvortex-0.4.11 → docvortex-0.4.13}/src/docvortex/analyzers/native/office/odf/converters.py
RENAMED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import html
|
|
5
6
|
import re
|
|
6
7
|
from dataclasses import dataclass
|
|
7
8
|
from typing import Any, BinaryIO, Iterator
|
|
@@ -14,7 +15,7 @@ from .constants import OdfSuffix, qname
|
|
|
14
15
|
from .models import InlineNote
|
|
15
16
|
from .package import OdfPackage
|
|
16
17
|
from .styles import OdfStyles
|
|
17
|
-
from .table import OdfTableExpansionBudget, parse_table_grid, split_table_regions, table_grid_to_html
|
|
18
|
+
from .table import OdfTableExpansionBudget, TableGrid, parse_table_grid, split_table_regions, table_grid_to_html
|
|
18
19
|
from .text import (
|
|
19
20
|
OdfBlockParser,
|
|
20
21
|
OdfMasterPageChange,
|
|
@@ -27,6 +28,29 @@ from .text import (
|
|
|
27
28
|
_LENGTH_RE = re.compile(r"^\s*(?P<value>[+-]?(?:\d+(?:\.\d*)?|\.\d+))(?P<unit>cm|mm|in|pt|pc|px)?\s*$")
|
|
28
29
|
_LENGTH_TO_PT = {"": 1.0, "pt": 1.0, "pc": 12.0, "in": 72.0, "cm": 72.0 / 2.54, "mm": 72.0 / 25.4, "px": 0.75}
|
|
29
30
|
|
|
31
|
+
_PARAGRAPH_JOIN_RE = re.compile(r"\s*</p>\s*<p>\s*")
|
|
32
|
+
_BREAK_TAG_RE = re.compile(r"<br\s*/?>")
|
|
33
|
+
_PARAGRAPH_TAG_RE = re.compile(r"</?p>")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _singleton_region_plain_text(region: TableGrid) -> str | None:
|
|
37
|
+
"""把无结构的单格区域还原为可降级的纯文本。
|
|
38
|
+
|
|
39
|
+
对齐 Excel 投影的单格降级条件:1x1、无合并跨度、无媒体公式等结构化
|
|
40
|
+
HTML;仅由段落包装与换行组成的单元格才视为普通文本。
|
|
41
|
+
"""
|
|
42
|
+
if len(region.rows) != 1 or region.width != 1 or (0, 0) in region.covered:
|
|
43
|
+
return None
|
|
44
|
+
cell = region.rows[0][0] if region.rows[0] else None
|
|
45
|
+
if cell is None or cell.row_span > 1 or cell.col_span > 1:
|
|
46
|
+
return None
|
|
47
|
+
normalized = _BREAK_TAG_RE.sub("\n", _PARAGRAPH_JOIN_RE.sub("\n", cell.html))
|
|
48
|
+
normalized = _PARAGRAPH_TAG_RE.sub("", normalized)
|
|
49
|
+
if "<" in normalized:
|
|
50
|
+
return None
|
|
51
|
+
plain = html.unescape(normalized).strip()
|
|
52
|
+
return plain or None
|
|
53
|
+
|
|
30
54
|
|
|
31
55
|
@dataclass(frozen=True, slots=True)
|
|
32
56
|
class _OdfContext:
|
|
@@ -319,6 +343,10 @@ def _sheet_blocks(sheet: etree._Element, parser: OdfBlockParser) -> list[dict[st
|
|
|
319
343
|
grid = parse_table_grid(sheet, parser.render_cell_html, expansion_budget=parser.table_expansion_budget)
|
|
320
344
|
blocks: list[dict[str, Any]] = []
|
|
321
345
|
for region in split_table_regions(grid):
|
|
346
|
+
plain_text = _singleton_region_plain_text(region)
|
|
347
|
+
if plain_text is not None:
|
|
348
|
+
blocks.append({"type": BlockType.TEXT, "content": text_spans(plain_text)})
|
|
349
|
+
continue
|
|
322
350
|
content = table_grid_to_html(region)
|
|
323
351
|
if content:
|
|
324
352
|
blocks.append({"type": BlockType.TABLE, "content": content})
|
|
@@ -10,6 +10,12 @@ from dataclasses import dataclass
|
|
|
10
10
|
from lxml import etree # type: ignore[reportMissingImports]
|
|
11
11
|
|
|
12
12
|
from ..limits import MAX_GRID_SLOTS
|
|
13
|
+
from ..spreadsheet.region_discovery import (
|
|
14
|
+
discover_connected_regions,
|
|
15
|
+
keep_maximal_by_semantic_sets,
|
|
16
|
+
region_semantic_positions,
|
|
17
|
+
select_best_gap_candidate,
|
|
18
|
+
)
|
|
13
19
|
from .constants import MAX_EXPANSION_TEXT_BYTES, qname
|
|
14
20
|
from .errors import OdfResourceLimitError
|
|
15
21
|
from .models import GridCell, TableGrid
|
|
@@ -326,37 +332,64 @@ def crop_table_grid(grid: TableGrid, bounds: tuple[int, int, int, int]) -> Table
|
|
|
326
332
|
return trim_table_grid(TableGrid(rows=rows, header_rows=header_rows, covered=covered))
|
|
327
333
|
|
|
328
334
|
|
|
335
|
+
def _grid_cell_at(grid: TableGrid, row: int, col: int) -> GridCell | None:
|
|
336
|
+
"""安全返回网格坐标上的原点单元格,越界或未物化位置返回 None。"""
|
|
337
|
+
cells = grid.rows[row] if 0 <= row < len(grid.rows) else []
|
|
338
|
+
return cells[col] if 0 <= col < len(cells) else None
|
|
339
|
+
|
|
340
|
+
|
|
329
341
|
def split_table_regions(grid: TableGrid) -> list[TableGrid]:
|
|
330
|
-
"""
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
342
|
+
"""洪水填充发现离散数据区域,并按 gap 候选评分选择稳定分割。
|
|
343
|
+
|
|
344
|
+
与 XLS/XLSX 投影器共用区域发现算法:连通性掩码把可见内容、合并跨度和
|
|
345
|
+
covered 占位都视为内容格,BFS 四向连通并在容忍距离内跨越空白;对候选
|
|
346
|
+
tolerance 按惩罚指标选优后,逐区域裁剪出包围盒网格。
|
|
347
|
+
"""
|
|
348
|
+
max_row = len(grid.rows) - 1
|
|
349
|
+
max_col = grid.width - 1
|
|
350
|
+
if max_row < 0 or max_col < 0:
|
|
351
|
+
return []
|
|
352
|
+
|
|
353
|
+
def has_content(row: int, col: int) -> bool:
|
|
354
|
+
"""判断坐标是否有可见内容或属于合并占位(对齐 Excel 投影语义)。"""
|
|
355
|
+
if (row, col) in grid.covered:
|
|
356
|
+
return True
|
|
357
|
+
cell = _grid_cell_at(grid, row, col)
|
|
358
|
+
return cell is not None and (cell.has_content or cell.row_span > 1 or cell.col_span > 1)
|
|
359
|
+
|
|
360
|
+
# 仅从有可见内容的坐标出发,对齐 Excel 投影只以有值格为起点的行为。
|
|
361
|
+
starts = [
|
|
362
|
+
(row, col)
|
|
363
|
+
for row, cells in enumerate(grid.rows)
|
|
364
|
+
for col, cell in enumerate(cells)
|
|
335
365
|
if cell is not None and cell.has_content
|
|
336
366
|
]
|
|
337
|
-
if not
|
|
367
|
+
if not starts:
|
|
338
368
|
return []
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
369
|
+
|
|
370
|
+
def has_semantic_content(row: int, col: int) -> bool:
|
|
371
|
+
"""判断坐标是否包含可见或结构化 HTML 语义。"""
|
|
372
|
+
cell = _grid_cell_at(grid, row, col)
|
|
373
|
+
return cell is not None and cell.has_content
|
|
374
|
+
|
|
375
|
+
def span_at(row: int, col: int) -> tuple[int, int]:
|
|
376
|
+
"""返回原点单元格的合并跨度,非原点或空位返回 1x1。"""
|
|
377
|
+
cell = _grid_cell_at(grid, row, col)
|
|
378
|
+
return (cell.row_span, cell.col_span) if cell is not None else (1, 1)
|
|
379
|
+
|
|
380
|
+
_, _, best_regions = select_best_gap_candidate(
|
|
381
|
+
lambda tolerance: discover_connected_regions(has_content, starts, max_row, max_col, tolerance),
|
|
382
|
+
has_semantic_content,
|
|
383
|
+
span_at,
|
|
384
|
+
)
|
|
385
|
+
semantic_sets = [region_semantic_positions(region, has_semantic_content) for region in best_regions]
|
|
386
|
+
regions: list[TableGrid] = []
|
|
387
|
+
for index in keep_maximal_by_semantic_sets(semantic_sets):
|
|
388
|
+
region = best_regions[index]
|
|
389
|
+
cropped = crop_table_grid(grid, (region.row_start, region.row_end, region.col_start, region.col_end))
|
|
390
|
+
if cropped.rows:
|
|
391
|
+
regions.append(cropped)
|
|
392
|
+
return regions
|
|
360
393
|
|
|
361
394
|
|
|
362
395
|
def _render_html_row(grid: TableGrid, row_index: int, *, header: bool) -> str:
|