docvortex 0.4.24__tar.gz → 0.5.0__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.
Files changed (753) hide show
  1. docvortex-0.5.0/Cargo.lock +138 -0
  2. docvortex-0.5.0/Cargo.toml +12 -0
  3. {docvortex-0.4.24 → docvortex-0.5.0}/MANIFEST.in +4 -0
  4. {docvortex-0.4.24/src/docvortex.egg-info → docvortex-0.5.0}/PKG-INFO +4 -1
  5. {docvortex-0.4.24 → docvortex-0.5.0}/README.md +3 -0
  6. docvortex-0.5.0/docs/ARCHITECTURE.md +138 -0
  7. docvortex-0.5.0/docs/rust-acceleration.md +234 -0
  8. {docvortex-0.4.24 → docvortex-0.5.0}/pyproject.toml +2 -2
  9. docvortex-0.5.0/rust/docvortex-core/Cargo.toml +5 -0
  10. docvortex-0.5.0/rust/docvortex-core/src/annotation_geometry.rs +82 -0
  11. docvortex-0.5.0/rust/docvortex-core/src/columns.rs +117 -0
  12. docvortex-0.5.0/rust/docvortex-core/src/dedup.rs +385 -0
  13. docvortex-0.5.0/rust/docvortex-core/src/extraction.rs +96 -0
  14. docvortex-0.5.0/rust/docvortex-core/src/geometry.rs +262 -0
  15. docvortex-0.5.0/rust/docvortex-core/src/inline_pairs.rs +142 -0
  16. docvortex-0.5.0/rust/docvortex-core/src/lib.rs +42 -0
  17. docvortex-0.5.0/rust/docvortex-core/src/note_index.rs +174 -0
  18. docvortex-0.5.0/rust/docvortex-core/src/row_geometry.rs +92 -0
  19. docvortex-0.5.0/rust/docvortex-core/src/scripts.rs +572 -0
  20. docvortex-0.5.0/rust/docvortex-core/src/spatial.rs +309 -0
  21. docvortex-0.5.0/rust/docvortex-core/src/statistics.rs +363 -0
  22. docvortex-0.5.0/rust/docvortex-core/src/tables.rs +479 -0
  23. docvortex-0.5.0/rust/docvortex-core/tests/contracts.rs +112 -0
  24. docvortex-0.5.0/rust/docvortex-python/Cargo.toml +13 -0
  25. docvortex-0.5.0/rust/docvortex-python/src/conversion.rs +26 -0
  26. docvortex-0.5.0/rust/docvortex-python/src/dedup.rs +68 -0
  27. docvortex-0.5.0/rust/docvortex-python/src/geometry.rs +214 -0
  28. docvortex-0.5.0/rust/docvortex-python/src/lib.rs +62 -0
  29. docvortex-0.5.0/rust/docvortex-python/src/pdfium.rs +226 -0
  30. docvortex-0.5.0/rust/docvortex-python/src/scripts.rs +67 -0
  31. docvortex-0.5.0/rust/docvortex-python/src/spatial.rs +107 -0
  32. docvortex-0.5.0/rust/docvortex-python/src/statistics.rs +45 -0
  33. docvortex-0.5.0/rust/docvortex-python/src/tables.rs +272 -0
  34. docvortex-0.5.0/rust-toolchain.toml +3 -0
  35. docvortex-0.5.0/setup.py +33 -0
  36. docvortex-0.5.0/src/docvortex/_compute_backend.py +57 -0
  37. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/docx_converter.py +20 -13
  38. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/tables.py +121 -43
  39. docvortex-0.5.0/src/docvortex/analyzers/native/pdf/_interval_candidates.py +70 -0
  40. docvortex-0.5.0/src/docvortex/analyzers/native/pdf/_native_geometry.py +15 -0
  41. docvortex-0.5.0/src/docvortex/analyzers/native/pdf/_ordered_statistics.py +30 -0
  42. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_script_geometry.py +68 -0
  43. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +18 -4
  44. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +61 -5
  45. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +62 -1
  46. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +83 -6
  47. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/char_geometry.py +193 -99
  48. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/common.py +17 -1
  49. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/detection.py +9 -1
  50. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/scripts.py +48 -5
  51. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/line_layout.py +84 -0
  52. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/line_merging.py +42 -4
  53. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/native_text.py +191 -14
  54. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_annotations.py +365 -12
  55. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_detection.py +1 -0
  56. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_rules.py +263 -13
  57. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +12 -25
  58. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +37 -1
  59. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/images.py +47 -4
  60. docvortex-0.5.0/src/docvortex/document/pdf/text/_pdfium_bridge.py +99 -0
  61. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/text/dedup.py +182 -4
  62. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/text/extract.py +180 -12
  63. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/visuals.py +13 -9
  64. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/version.py +1 -1
  65. {docvortex-0.4.24 → docvortex-0.5.0/src/docvortex.egg-info}/PKG-INFO +4 -1
  66. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex.egg-info/SOURCES.txt +53 -1
  67. docvortex-0.5.0/src/docvortex.egg-info/not-zip-safe +1 -0
  68. docvortex-0.5.0/tests/benchmarks/compare_native_corpus.py +115 -0
  69. docvortex-0.5.0/tests/benchmarks/compare_pdf_revisions.py +166 -0
  70. {docvortex-0.4.24 → docvortex-0.5.0}/tests/benchmarks/flash_pdf.py +61 -10
  71. {docvortex-0.4.24 → docvortex-0.5.0}/tests/benchmarks/native_pdf_table.py +68 -6
  72. docvortex-0.5.0/tests/benchmarks/pdf_memory.py +221 -0
  73. {docvortex-0.4.24 → docvortex-0.5.0}/tests/benchmarks/pipeline.py +1 -0
  74. docvortex-0.5.0/tests/benchmarks/rust_pdf.py +326 -0
  75. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_benchmark_entrypoint.py +5 -1
  76. docvortex-0.5.0/tests/test_compute_backend.py +58 -0
  77. docvortex-0.5.0/tests/test_native_parity.py +283 -0
  78. docvortex-0.5.0/tests/test_native_round3.py +256 -0
  79. docvortex-0.5.0/tests/test_native_round4.py +307 -0
  80. docvortex-0.5.0/tests/test_native_round5.py +319 -0
  81. docvortex-0.5.0/tests/test_native_statistics.py +198 -0
  82. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_cpu_evidence.py +23 -2
  83. docvortex-0.5.0/tests/test_pdfium_bridge.py +250 -0
  84. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_refactor_raster.py +94 -8
  85. docvortex-0.5.0/tests/unittest/test_docx_table_context.py +314 -0
  86. docvortex-0.5.0/tests/unittest/test_docx_table_metafiles.py +223 -0
  87. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_mhtml.py +4 -0
  88. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_tables.py +25 -0
  89. docvortex-0.5.0/tools/verify_native_abi.py +79 -0
  90. docvortex-0.5.0/tools/verify_native_wheel.py +87 -0
  91. {docvortex-0.4.24 → docvortex-0.5.0}/LICENSE.md +0 -0
  92. {docvortex-0.4.24 → docvortex-0.5.0}/demo/README.md +0 -0
  93. {docvortex-0.4.24 → docvortex-0.5.0}/demo/demo.py +0 -0
  94. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ebook/epub_01.epub +0 -0
  95. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ebook/epub_02.epub +0 -0
  96. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/README.md +0 -0
  97. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/docx_01.doc +0 -0
  98. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/docx_01.docx +0 -0
  99. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/pptx_01.ppt +0 -0
  100. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/pptx_01.pptx +0 -0
  101. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/rtf_01.rtf +0 -0
  102. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/xlsx_01.xls +0 -0
  103. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ms_office_docs/xlsx_01.xlsx +0 -0
  104. {docvortex-0.4.24 → docvortex-0.5.0}/demo/ofd/ofd_01.ofd +0 -0
  105. {docvortex-0.4.24 → docvortex-0.5.0}/demo/open_office_docs/docx_01.odt +0 -0
  106. {docvortex-0.4.24 → docvortex-0.5.0}/demo/open_office_docs/pptx_01.odp +0 -0
  107. {docvortex-0.4.24 → docvortex-0.5.0}/demo/open_office_docs/xlsx_01.ods +0 -0
  108. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
  109. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
  110. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/caibao1.pdf +0 -0
  111. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/demo1.pdf +0 -0
  112. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/demo2.pdf +0 -0
  113. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/demo3.pdf +0 -0
  114. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/demo4.pdf +0 -0
  115. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/demo6.pdf +0 -0
  116. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
  117. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
  118. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
  119. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
  120. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs/small_ocr.pdf +0 -0
  121. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
  122. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
  123. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
  124. {docvortex-0.4.24 → docvortex-0.5.0}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
  125. {docvortex-0.4.24 → docvortex-0.5.0}/demo/web_docs/html_01.html +0 -0
  126. {docvortex-0.4.24 → docvortex-0.5.0}/demo/web_docs/mhtml_01.mhtml +0 -0
  127. {docvortex-0.4.24 → docvortex-0.5.0}/docs/HTML_PROTOCOL.md +0 -0
  128. {docvortex-0.4.24 → docvortex-0.5.0}/docs/JSON_PROTOCOL.md +0 -0
  129. {docvortex-0.4.24 → docvortex-0.5.0}/docs/METADATA.md +0 -0
  130. {docvortex-0.4.24 → docvortex-0.5.0}/docs/PDF_FONTS.md +0 -0
  131. {docvortex-0.4.24 → docvortex-0.5.0}/docs/RENDER_OWNERSHIP.md +0 -0
  132. {docvortex-0.4.24 → docvortex-0.5.0}/docs/USAGE.md +0 -0
  133. {docvortex-0.4.24 → docvortex-0.5.0}/docs/flash-manual-annotations-2026-09-15.md +0 -0
  134. {docvortex-0.4.24 → docvortex-0.5.0}/docs/flash-round2-annotations-2026-09-15.md +0 -0
  135. {docvortex-0.4.24 → docvortex-0.5.0}/docs/flash-rule-generalization-2026-09-15.md +0 -0
  136. {docvortex-0.4.24 → docvortex-0.5.0}/docs/flash-spatial-layout-followup-2026-09-16.md +0 -0
  137. {docvortex-0.4.24 → docvortex-0.5.0}/docs/flash-spatial-layout-round3-2026-09-16.md +0 -0
  138. {docvortex-0.4.24 → docvortex-0.5.0}/docs/flash-title-coverage-2026-09-16.md +0 -0
  139. {docvortex-0.4.24 → docvortex-0.5.0}/docs/sdk-0.4.md +0 -0
  140. {docvortex-0.4.24 → docvortex-0.5.0}/schemas/middle-2.0.json +0 -0
  141. {docvortex-0.4.24 → docvortex-0.5.0}/schemas/model-2.0.json +0 -0
  142. {docvortex-0.4.24 → docvortex-0.5.0}/setup.cfg +0 -0
  143. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/__init__.py +0 -0
  144. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/__init__.py +0 -0
  145. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/__init__.py +0 -0
  146. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
  147. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
  148. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/image.py +0 -0
  149. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
  150. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
  151. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
  152. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
  153. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
  154. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
  155. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/names.py +0 -0
  156. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
  157. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/contracts.py +0 -0
  158. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/csv.py +0 -0
  159. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
  160. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/constants.py +0 -0
  161. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/converter.py +0 -0
  162. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/errors.py +0 -0
  163. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
  164. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/package.py +0 -0
  165. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/properties.py +0 -0
  166. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
  167. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/__init__.py +0 -0
  168. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/anchors.py +0 -0
  169. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/constants.py +0 -0
  170. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/converter.py +0 -0
  171. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/document.py +0 -0
  172. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/errors.py +0 -0
  173. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/metadata.py +0 -0
  174. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/resources.py +0 -0
  175. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/html/selector.py +0 -0
  176. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/mhtml/__init__.py +0 -0
  177. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/mhtml/converter.py +0 -0
  178. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/mhtml/resources.py +0 -0
  179. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/models.py +0 -0
  180. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
  181. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
  182. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
  183. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
  184. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
  185. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
  186. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/images.py +0 -0
  187. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
  188. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/models.py +0 -0
  189. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/package.py +0 -0
  190. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/path.py +0 -0
  191. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
  192. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
  193. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
  194. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/table.py +0 -0
  195. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/text.py +0 -0
  196. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
  197. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/__init__.py +0 -0
  198. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
  199. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
  200. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
  201. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
  202. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
  203. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
  204. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
  205. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
  206. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
  207. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
  208. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
  209. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
  210. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
  211. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
  212. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
  213. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
  214. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
  215. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
  216. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
  217. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
  218. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
  219. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
  220. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
  221. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
  222. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
  223. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
  224. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
  225. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
  226. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
  227. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
  228. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
  229. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
  230. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/errors.py +0 -0
  231. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/image.py +0 -0
  232. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
  233. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
  234. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
  235. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
  236. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/limits.py +0 -0
  237. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/metadata.py +0 -0
  238. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
  239. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
  240. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
  241. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
  242. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
  243. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
  244. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
  245. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
  246. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
  247. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
  248. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
  249. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
  250. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/opc.py +0 -0
  251. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
  252. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
  253. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
  254. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
  255. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
  256. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
  257. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
  258. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
  259. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
  260. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
  261. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
  262. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
  263. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
  264. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
  265. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
  266. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
  267. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
  268. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
  269. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
  270. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
  271. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
  272. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
  273. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
  274. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
  275. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
  276. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
  277. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
  278. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
  279. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/spreadsheet/region_discovery.py +0 -0
  280. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/streams.py +0 -0
  281. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
  282. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
  283. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
  284. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
  285. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
  286. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
  287. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
  288. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
  289. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
  290. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
  291. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
  292. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
  293. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
  294. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
  295. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
  296. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
  297. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
  298. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
  299. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
  300. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/rule_band.py +0 -0
  301. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
  302. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
  303. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
  304. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/annotation_bands.py +0 -0
  305. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +0 -0
  306. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
  307. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
  308. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
  309. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/graphics.py +0 -0
  310. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
  311. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
  312. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
  313. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
  314. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
  315. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/layout_evidence.py +0 -0
  316. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/models.py +0 -0
  317. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
  318. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
  319. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
  320. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
  321. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
  322. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
  323. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
  324. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
  325. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
  326. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
  327. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
  328. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
  329. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
  330. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/continuity.py +0 -0
  331. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
  332. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
  333. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
  334. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
  335. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/text_roles.py +0 -0
  336. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
  337. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/compact_titles.py +0 -0
  338. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
  339. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
  340. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
  341. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
  342. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
  343. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
  344. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
  345. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
  346. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/analyzers/pdf.py +0 -0
  347. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/api.py +0 -0
  348. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/assets/__init__.py +0 -0
  349. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/assets/images.py +0 -0
  350. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/assets/store.py +0 -0
  351. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/cli.py +0 -0
  352. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/__init__.py +0 -0
  353. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/html/__init__.py +0 -0
  354. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/html/contracts.py +0 -0
  355. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/html/materializer.py +0 -0
  356. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/html/parser.py +0 -0
  357. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/html/resources.py +0 -0
  358. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/codecs/json.py +0 -0
  359. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/__init__.py +0 -0
  360. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/inline.py +0 -0
  361. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/links.py +0 -0
  362. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/markup/__init__.py +0 -0
  363. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/markup/anchors.py +0 -0
  364. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/markup/formula.py +0 -0
  365. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/markup/projector.py +0 -0
  366. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/markup/styles.py +0 -0
  367. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/mathml.py +0 -0
  368. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/normalization.py +0 -0
  369. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/spans.py +0 -0
  370. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/__init__.py +0 -0
  371. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/blocks.py +0 -0
  372. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/content.py +0 -0
  373. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/document.py +0 -0
  374. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/html.py +0 -0
  375. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/models.py +0 -0
  376. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/rules.py +0 -0
  377. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/table/structure.py +0 -0
  378. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/text.py +0 -0
  379. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/content/tree.py +0 -0
  380. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/__init__.py +0 -0
  381. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/contracts.py +0 -0
  382. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/detection.py +0 -0
  383. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/filetypes.py +0 -0
  384. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/mhtml.py +0 -0
  385. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/page_range.py +0 -0
  386. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/__init__.py +0 -0
  387. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/_document.py +0 -0
  388. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/classify.py +0 -0
  389. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/constants.py +0 -0
  390. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/font_runtime.py +0 -0
  391. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/layout.py +0 -0
  392. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/metadata.py +0 -0
  393. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/native_annotations.py +0 -0
  394. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/native_contracts.py +0 -0
  395. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/native_coordinates.py +0 -0
  396. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
  397. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/native_objects.py +0 -0
  398. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
  399. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/pdfium.py +0 -0
  400. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/raster.py +0 -0
  401. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/text/__init__.py +0 -0
  402. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/text/_contracts.py +0 -0
  403. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/text/geometry.py +0 -0
  404. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/pdf/text/groups.py +0 -0
  405. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/properties.py +0 -0
  406. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/document/source.py +0 -0
  407. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/errors.py +0 -0
  408. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/export/__init__.py +0 -0
  409. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/export/_images.py +0 -0
  410. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/export/bundle.py +0 -0
  411. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/export/files.py +0 -0
  412. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/export/middle.py +0 -0
  413. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/__init__.py +0 -0
  414. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_coordinates.py +0 -0
  415. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_geometry.py +0 -0
  416. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_hyperlink.py +0 -0
  417. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_image.py +0 -0
  418. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_image_operations.py +0 -0
  419. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_image_payload.py +0 -0
  420. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_svg_raster.py +0 -0
  421. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/_text.py +0 -0
  422. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/image_encoding.py +0 -0
  423. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/language.py +0 -0
  424. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/magika.py +0 -0
  425. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/type_identity.py +0 -0
  426. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/foundation/xml_names.py +0 -0
  427. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/geometry.py +0 -0
  428. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/metadata.py +0 -0
  429. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/options.py +0 -0
  430. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/__init__.py +0 -0
  431. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/content.py +0 -0
  432. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/document.py +0 -0
  433. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/lists.py +0 -0
  434. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/page_blocks.py +0 -0
  435. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/pages.py +0 -0
  436. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/paragraphs.py +0 -0
  437. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/postprocess/visual.py +0 -0
  438. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/public_api.py +0 -0
  439. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/__init__.py +0 -0
  440. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/__init__.py +0 -0
  441. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/common/__init__.py +0 -0
  442. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/common/context.py +0 -0
  443. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/common/html_table.py +0 -0
  444. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/common/index.py +0 -0
  445. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/common/list_items.py +0 -0
  446. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/common/planner.py +0 -0
  447. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/__init__.py +0 -0
  448. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/assets.py +0 -0
  449. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/inline.py +0 -0
  450. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/math.py +0 -0
  451. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/renderer.py +0 -0
  452. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/styles.py +0 -0
  453. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/docx/table.py +0 -0
  454. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/epub/__init__.py +0 -0
  455. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/epub/assets.py +0 -0
  456. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/epub/package.py +0 -0
  457. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/epub/renderer.py +0 -0
  458. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/html/__init__.py +0 -0
  459. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/html/inline.py +0 -0
  460. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/html/renderer.py +0 -0
  461. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
  462. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/html/table.py +0 -0
  463. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/latex/__init__.py +0 -0
  464. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/latex/assets.py +0 -0
  465. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/latex/inline.py +0 -0
  466. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/latex/renderer.py +0 -0
  467. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/latex/table.py +0 -0
  468. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
  469. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/assets.py +0 -0
  470. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
  471. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
  472. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/inline.py +0 -0
  473. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
  474. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/markdown/table.py +0 -0
  475. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
  476. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/assets.py +0 -0
  477. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/diagnostics.py +0 -0
  478. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/font_plan.py +0 -0
  479. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/formula.py +0 -0
  480. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/formula_layout.py +0 -0
  481. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/inline.py +0 -0
  482. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/original.py +0 -0
  483. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/pagination.py +0 -0
  484. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/paragraph.py +0 -0
  485. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/renderer.py +0 -0
  486. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/styles.py +0 -0
  487. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/table.py +0 -0
  488. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/table_content.py +0 -0
  489. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/table_layout.py +0 -0
  490. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/pdf/title_layout.py +0 -0
  491. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
  492. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
  493. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/api.py +0 -0
  494. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/contracts.py +0 -0
  495. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/docx.py +0 -0
  496. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/epub.py +0 -0
  497. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/fragments.py +0 -0
  498. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/html.py +0 -0
  499. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/latex.py +0 -0
  500. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/markdown.py +0 -0
  501. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/pdf.py +0 -0
  502. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/render/structured_content.py +0 -0
  503. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/epub/docvortex.css +0 -0
  504. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
  505. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/fonts/NOTICE +0 -0
  506. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/fonts/manifest.json +0 -0
  507. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/html/docvortex.css +0 -0
  508. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/html/docvortex.min.css +0 -0
  509. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/resources/unicode/EquivalentUnifiedIdeograph-17.0.0.txt +0 -0
  510. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/result.py +0 -0
  511. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/schema.py +0 -0
  512. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex/visualization.py +0 -0
  513. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex.egg-info/dependency_links.txt +0 -0
  514. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex.egg-info/entry_points.txt +0 -0
  515. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex.egg-info/requires.txt +0 -0
  516. {docvortex-0.4.24 → docvortex-0.5.0}/src/docvortex.egg-info/top_level.txt +0 -0
  517. {docvortex-0.4.24 → docvortex-0.5.0}/tests/benchmarks/pdf_render.py +0 -0
  518. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
  519. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_layout_block_expectations.json +0 -0
  520. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
  521. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
  522. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_manual_annotations.json +0 -0
  523. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_manual_review_decisions.json +0 -0
  524. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_reviewed_history.json +0 -0
  525. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_round2_annotations.json +0 -0
  526. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_round2_review_decisions.json +0 -0
  527. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_round3_annotations.json +0 -0
  528. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_round3_followup_review_decisions.json +0 -0
  529. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_round3_review_decisions.json +0 -0
  530. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_rule_generalization_review_decisions.json +0 -0
  531. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/flash_title_coverage_review_decisions.json +0 -0
  532. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
  533. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
  534. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
  535. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
  536. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/pdf_char_dedup.json +0 -0
  537. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
  538. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/pdf_numeric_citations_review.json +0 -0
  539. {docvortex-0.4.24 → docvortex-0.5.0}/tests/fixtures/rtf/semantic.rtf +0 -0
  540. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_architecture.py +0 -0
  541. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_brand_protocol.py +0 -0
  542. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_cli_logging.py +0 -0
  543. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_complete_pipeline.py +0 -0
  544. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_converter_lifecycle.py +0 -0
  545. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_document_envelope.py +0 -0
  546. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_document_metadata.py +0 -0
  547. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_export_image_names.py +0 -0
  548. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_format_matrix.py +0 -0
  549. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_geometry_api.py +0 -0
  550. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_history_geometry_tools.py +0 -0
  551. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_html_namespace.py +0 -0
  552. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_magika_runtime.py +0 -0
  553. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_mixed_font_script_reference.py +0 -0
  554. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_analysis_api.py +0 -0
  555. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_font_geometry.py +0 -0
  556. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_font_runtime.py +0 -0
  557. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_model_text_normalization.py +0 -0
  558. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_numeric_citations.py +0 -0
  559. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_output_text.py +0 -0
  560. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_render_pool.py +0 -0
  561. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_source_row_merging.py +0 -0
  562. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_pdf_symbol_normalization.py +0 -0
  563. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_public_export_api.py +0 -0
  564. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_public_image_api.py +0 -0
  565. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_public_pipeline.py +0 -0
  566. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_refactor_rendering.py +0 -0
  567. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_refactor_resources.py +0 -0
  568. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_release_ci_gate.py +0 -0
  569. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_render_ownership.py +0 -0
  570. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_renderer_branding.py +0 -0
  571. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_shared_boundaries.py +0 -0
  572. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_system_font_pdf_pipeline.py +0 -0
  573. {docvortex-0.4.24 → docvortex-0.5.0}/tests/test_validated_geometry.py +0 -0
  574. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
  575. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_epub_test_utils.py +0 -0
  576. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_flash_pdf_test_utils.py +0 -0
  577. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_image_mtef_test_utils.py +0 -0
  578. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_legacy_doc_test_utils.py +0 -0
  579. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
  580. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_legacy_xls_test_utils.py +0 -0
  581. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_metafile_test_utils.py +0 -0
  582. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_mhtml_test_utils.py +0 -0
  583. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_mtef_test_utils.py +0 -0
  584. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_mtef_v5_test_utils.py +0 -0
  585. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_native_test_utils.py +0 -0
  586. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_odf_test_utils.py +0 -0
  587. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_ofd_test_utils.py +0 -0
  588. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
  589. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
  590. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/_span_test_utils.py +0 -0
  591. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/connexin.pdf +0 -0
  592. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/fornax.pdf +0 -0
  593. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/frames_v1.pdf +0 -0
  594. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/frames_v2.pdf +0 -0
  595. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/k2_treap.pdf +0 -0
  596. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/mmlu_redux.pdf +0 -0
  597. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/nash_review.pdf +0 -0
  598. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/annotated/nougat.pdf +0 -0
  599. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/bloom_form_labels.pdf +0 -0
  600. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/journal_dual_caption.pdf +0 -0
  601. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/journal_layout_tables.pdf +0 -0
  602. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/math_display_formulas.pdf +0 -0
  603. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
  604. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_layout/quantum_appendix_layout.pdf +0 -0
  605. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
  606. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
  607. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
  608. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
  609. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
  610. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
  611. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
  612. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
  613. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
  614. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
  615. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
  616. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
  617. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
  618. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
  619. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
  620. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/numeric_citations_introduction.pdf +0 -0
  621. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/pdfs/test.pdf +0 -0
  622. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_backend_architecture.py +0 -0
  623. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_backend_block_object_regressions.py +0 -0
  624. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_docx_assets.py +0 -0
  625. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_docx_complex_fields.py +0 -0
  626. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_docx_math.py +0 -0
  627. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_docx_render.py +0 -0
  628. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_docx_special_char_tables.py +0 -0
  629. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_docx_table.py +0 -0
  630. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_emfplus_integration.py +0 -0
  631. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_epub_backlinks.py +0 -0
  632. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_epub_quoted_note_types.py +0 -0
  633. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_epub_render.py +0 -0
  634. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_bbox_grid_comparison.py +0 -0
  635. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_csv.py +0 -0
  636. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_docx_equationxml.py +0 -0
  637. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_epub.py +0 -0
  638. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_html.py +0 -0
  639. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_image_mtef.py +0 -0
  640. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
  641. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_legacy_doc.py +0 -0
  642. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
  643. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_legacy_ppt.py +0 -0
  644. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_legacy_xls.py +0 -0
  645. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
  646. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_manual_annotations.py +0 -0
  647. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_markup_anchors.py +0 -0
  648. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_model.py +0 -0
  649. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_mtef_v5.py +0 -0
  650. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_odf.py +0 -0
  651. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_ofd.py +0 -0
  652. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_office_image_mtef.py +0 -0
  653. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_office_metafile.py +0 -0
  654. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_office_models.py +0 -0
  655. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
  656. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
  657. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_office_title_types.py +0 -0
  658. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
  659. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_auxiliary_text.py +0 -0
  660. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
  661. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
  662. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
  663. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_equation_images.py +0 -0
  664. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_extractor.py +0 -0
  665. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_formulas.py +0 -0
  666. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_graphics.py +0 -0
  667. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
  668. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_layout_repairs.py +0 -0
  669. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
  670. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_native_text.py +0 -0
  671. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
  672. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_reviewed_history.py +0 -0
  673. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_samples.py +0 -0
  674. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_scripts.py +0 -0
  675. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_semantics.py +0 -0
  676. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_short_tails.py +0 -0
  677. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
  678. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_text_visibility.py +0 -0
  679. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_titles.py +0 -0
  680. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
  681. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_round2_annotations.py +0 -0
  682. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_round3_annotations.py +0 -0
  683. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_rtf.py +0 -0
  684. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_rule_generalization.py +0 -0
  685. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_shared_helpers.py +0 -0
  686. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_spatial_evidence.py +0 -0
  687. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
  688. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_guess_suffix_ole2.py +0 -0
  689. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_html_css_build.py +0 -0
  690. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_html_render.py +0 -0
  691. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_html_security.py +0 -0
  692. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
  693. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_latex_render.py +0 -0
  694. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_markdown_render.py +0 -0
  695. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_middle_json_block_models.py +0 -0
  696. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_middle_json_export.py +0 -0
  697. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_middle_json_validator.py +0 -0
  698. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_model_json.py +0 -0
  699. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_native_pdf_table.py +0 -0
  700. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
  701. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
  702. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
  703. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
  704. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_native_table_performance_equivalence.py +0 -0
  705. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_ofd_assembly.py +0 -0
  706. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_ofd_vector_tables.py +0 -0
  707. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_office_demo_exports.py +0 -0
  708. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_office_demo_pages.py +0 -0
  709. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_office_parser_regressions.py +0 -0
  710. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_cjk_objects.py +0 -0
  711. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_cjk_style.py +0 -0
  712. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_cjk_wrapping.py +0 -0
  713. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_classify.py +0 -0
  714. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_demo_links.py +0 -0
  715. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_diagnostic_levels.py +0 -0
  716. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_document.py +0 -0
  717. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_formula_layout.py +0 -0
  718. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_object_clipping.py +0 -0
  719. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_original_layout.py +0 -0
  720. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_pagination.py +0 -0
  721. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_paragraph_cache.py +0 -0
  722. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_render.py +0 -0
  723. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
  724. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_structured_tables.py +0 -0
  725. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_table_cache.py +0 -0
  726. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_table_round2.py +0 -0
  727. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_text_dedup.py +0 -0
  728. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_text_styles.py +0 -0
  729. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_title_font_plan.py +0 -0
  730. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_title_space.py +0 -0
  731. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_pdf_visualization.py +0 -0
  732. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_postprocess_page_blocks.py +0 -0
  733. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_postprocess_pages.py +0 -0
  734. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_postprocess_paragraphs.py +0 -0
  735. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_postprocess_visual.py +0 -0
  736. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_render_api.py +0 -0
  737. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_render_html_table.py +0 -0
  738. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_render_image_renderer.py +0 -0
  739. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_render_list_index_utils.py +0 -0
  740. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_structured_content_render.py +0 -0
  741. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_svg_raster.py +0 -0
  742. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_table_merge.py +0 -0
  743. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_table_merge_cell_merge.py +0 -0
  744. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_text_block_anchor.py +0 -0
  745. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_text_boundary_rules.py +0 -0
  746. {docvortex-0.4.24 → docvortex-0.5.0}/tests/unittest/test_text_utils.py +0 -0
  747. {docvortex-0.4.24 → docvortex-0.5.0}/tools/__init__.py +0 -0
  748. {docvortex-0.4.24 → docvortex-0.5.0}/tools/build_html_css.py +0 -0
  749. {docvortex-0.4.24 → docvortex-0.5.0}/tools/calibrate_pdf_geometry.py +0 -0
  750. {docvortex-0.4.24 → docvortex-0.5.0}/tools/capture_baseline.py +0 -0
  751. {docvortex-0.4.24 → docvortex-0.5.0}/tools/capture_platform_layout.py +0 -0
  752. {docvortex-0.4.24 → docvortex-0.5.0}/tools/compare_font_platforms.py +0 -0
  753. {docvortex-0.4.24 → docvortex-0.5.0}/tools/font_geometry.py +0 -0
@@ -0,0 +1,138 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "docvortex-core"
7
+ version = "0.1.0"
8
+
9
+ [[package]]
10
+ name = "docvortex-python"
11
+ version = "0.1.0"
12
+ dependencies = [
13
+ "docvortex-core",
14
+ "pyo3",
15
+ ]
16
+
17
+ [[package]]
18
+ name = "heck"
19
+ version = "0.5.0"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
22
+
23
+ [[package]]
24
+ name = "libc"
25
+ version = "0.2.189"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
28
+
29
+ [[package]]
30
+ name = "once_cell"
31
+ version = "1.21.4"
32
+ source = "registry+https://github.com/rust-lang/crates.io-index"
33
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
34
+
35
+ [[package]]
36
+ name = "portable-atomic"
37
+ version = "1.15.0"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
40
+
41
+ [[package]]
42
+ name = "proc-macro2"
43
+ version = "1.0.107"
44
+ source = "registry+https://github.com/rust-lang/crates.io-index"
45
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
46
+ dependencies = [
47
+ "unicode-ident",
48
+ ]
49
+
50
+ [[package]]
51
+ name = "pyo3"
52
+ version = "0.28.2"
53
+ source = "registry+https://github.com/rust-lang/crates.io-index"
54
+ checksum = "cf85e27e86080aafd5a22eae58a162e133a589551542b3e5cee4beb27e54f8e1"
55
+ dependencies = [
56
+ "libc",
57
+ "once_cell",
58
+ "portable-atomic",
59
+ "pyo3-build-config",
60
+ "pyo3-ffi",
61
+ "pyo3-macros",
62
+ ]
63
+
64
+ [[package]]
65
+ name = "pyo3-build-config"
66
+ version = "0.28.2"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "8bf94ee265674bf76c09fa430b0e99c26e319c945d96ca0d5a8215f31bf81cf7"
69
+ dependencies = [
70
+ "target-lexicon",
71
+ ]
72
+
73
+ [[package]]
74
+ name = "pyo3-ffi"
75
+ version = "0.28.2"
76
+ source = "registry+https://github.com/rust-lang/crates.io-index"
77
+ checksum = "491aa5fc66d8059dd44a75f4580a2962c1862a1c2945359db36f6c2818b748dc"
78
+ dependencies = [
79
+ "libc",
80
+ "pyo3-build-config",
81
+ ]
82
+
83
+ [[package]]
84
+ name = "pyo3-macros"
85
+ version = "0.28.2"
86
+ source = "registry+https://github.com/rust-lang/crates.io-index"
87
+ checksum = "f5d671734e9d7a43449f8480f8b38115df67bef8d21f76837fa75ee7aaa5e52e"
88
+ dependencies = [
89
+ "proc-macro2",
90
+ "pyo3-macros-backend",
91
+ "quote",
92
+ "syn",
93
+ ]
94
+
95
+ [[package]]
96
+ name = "pyo3-macros-backend"
97
+ version = "0.28.2"
98
+ source = "registry+https://github.com/rust-lang/crates.io-index"
99
+ checksum = "22faaa1ce6c430a1f71658760497291065e6450d7b5dc2bcf254d49f66ee700a"
100
+ dependencies = [
101
+ "heck",
102
+ "proc-macro2",
103
+ "pyo3-build-config",
104
+ "quote",
105
+ "syn",
106
+ ]
107
+
108
+ [[package]]
109
+ name = "quote"
110
+ version = "1.0.47"
111
+ source = "registry+https://github.com/rust-lang/crates.io-index"
112
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
113
+ dependencies = [
114
+ "proc-macro2",
115
+ ]
116
+
117
+ [[package]]
118
+ name = "syn"
119
+ version = "2.0.119"
120
+ source = "registry+https://github.com/rust-lang/crates.io-index"
121
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
122
+ dependencies = [
123
+ "proc-macro2",
124
+ "quote",
125
+ "unicode-ident",
126
+ ]
127
+
128
+ [[package]]
129
+ name = "target-lexicon"
130
+ version = "0.13.5"
131
+ source = "registry+https://github.com/rust-lang/crates.io-index"
132
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
133
+
134
+ [[package]]
135
+ name = "unicode-ident"
136
+ version = "1.0.26"
137
+ source = "registry+https://github.com/rust-lang/crates.io-index"
138
+ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
@@ -0,0 +1,12 @@
1
+ [workspace]
2
+ members = ["rust/docvortex-core", "rust/docvortex-python"]
3
+ resolver = "2"
4
+
5
+ [profile.release]
6
+ lto = "thin"
7
+ codegen-units = 1
8
+
9
+ [workspace.package]
10
+ version = "0.1.0"
11
+ edition = "2021"
12
+ license = "MIT"
@@ -7,3 +7,7 @@ recursive-include tests *.py *.json *.pdf *.xor *.rtf
7
7
  recursive-include demo *.py *.md *.pdf *.doc *.docx *.ppt *.pptx *.xls *.xlsx *.rtf *.odt *.odp *.ods *.epub *.html *.mhtml *.ofd
8
8
  recursive-include src/docvortex/resources *
9
9
  global-exclude __pycache__ *.py[cod] .DS_Store
10
+ include Cargo.toml Cargo.lock rust-toolchain.toml
11
+ recursive-include rust *.toml *.rs
12
+ include tools/verify_native_wheel.py tools/verify_native_abi.py
13
+ global-exclude *.so *.pyd
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docvortex
3
- Version: 0.4.24
3
+ Version: 0.5.0
4
4
  Summary: A fast, multi-format document parsing and conversion engine
5
5
  License-Expression: MIT
6
6
  Project-URL: Repository, https://github.com/myhloli/DocVortex
@@ -201,6 +201,9 @@ reads metadata without parsing the document body.
201
201
 
202
202
  ## Development
203
203
 
204
+ See [Repository architecture](docs/ARCHITECTURE.md) for directory responsibilities,
205
+ the Python/Rust boundary, and pure Python or native development commands.
206
+
204
207
  From a local checkout:
205
208
 
206
209
  ```bash
@@ -147,6 +147,9 @@ reads metadata without parsing the document body.
147
147
 
148
148
  ## Development
149
149
 
150
+ See [Repository architecture](docs/ARCHITECTURE.md) for directory responsibilities,
151
+ the Python/Rust boundary, and pure Python or native development commands.
152
+
150
153
  From a local checkout:
151
154
 
152
155
  ```bash
@@ -0,0 +1,138 @@
1
+ # Repository architecture
2
+
3
+ DocVortex is a Python document engine with optional Rust acceleration. The Python
4
+ package owns the public SDK and document pipeline; the Rust crates implement private
5
+ batch computations and their Python bindings. They are built and released together.
6
+
7
+ ## Repository layout
8
+
9
+ | Location | Responsibility |
10
+ | --- | --- |
11
+ | `src/docvortex/` | Importable Python package and runtime resources |
12
+ | `rust/docvortex-core/` | Python-independent numeric kernels and Rust contract tests |
13
+ | `rust/docvortex-python/` | PyO3 argument validation, conversion, bindings and PDFium bridge |
14
+ | Root `pyproject.toml`, `setup.py`, `MANIFEST.in` | Python metadata, optional extension build and source distribution |
15
+ | Root `Cargo.toml`, `Cargo.lock`, `rust-toolchain.toml` | Shared Rust workspace, dependencies and compiler |
16
+ | `tests/` | Python unit/integration tests, Python/Rust parity tests and benchmarks |
17
+ | `tools/` | Development, regression review and distribution verification tools |
18
+ | `docs/`, `schemas/`, `demo/` | Architecture/protocol documentation, JSON schemas and runnable examples |
19
+
20
+ The Python `src` layout separates importable code from repository tools. It does not
21
+ require other languages to live under `src`. The Cargo workspace at the repository
22
+ root manages both crates, so Python and Rust development commands use the same working
23
+ directory. Rust sources are included in the sdist; the compiled extension is installed
24
+ as `docvortex._native`, alongside the Python package, rather than as a second SDK.
25
+
26
+ ## Document pipeline and ownership
27
+
28
+ The public entry points live in `docvortex.api` and are re-exported by `docvortex`:
29
+
30
+ ```text
31
+ source -> document preparation -> analyzers -> ModelJson
32
+ -> postprocess + asset materialization -> MiddleJson / DocumentResult
33
+ -> render -> RenderArtifact -> export / saved files
34
+ ```
35
+
36
+ `parse` combines analysis and postprocessing; `convert` additionally renders and
37
+ exports the result. The major package boundaries are:
38
+
39
+ - `document`: source preparation, document access and PDF primitives/handle lifetime.
40
+ - `analyzers`: format-specific interpretation and ModelJson construction.
41
+ - `postprocess`: deterministic transformation into the common document representation.
42
+ - `render`: output-format layout and rendering.
43
+ - `export`: materialized files and result bundles.
44
+ - `schema`, `result`, `assets`: document protocols, stage results and asset ownership.
45
+
46
+ `analyzers/native` means parsing information already present in the source document.
47
+ It is Python code and works without Rust. By contrast, `docvortex._native` is a private
48
+ compiled extension. These two uses of “native” describe different responsibilities.
49
+
50
+ ## Optional compute backend
51
+
52
+ ```text
53
+ Python document/PDF algorithms
54
+ -> _compute_backend.get_native()
55
+ -> Python reference implementation, or
56
+ -> docvortex._native (PyO3 validation and conversion)
57
+ -> docvortex-core (numeric batches)
58
+ -> Python-owned objects and parsing decisions
59
+ ```
60
+
61
+ Python retains Unicode/text interpretation, public objects, algorithmic decisions and
62
+ reference implementations. The core crate does not access Python objects or PDFium.
63
+ Bindings validate transport records and preserve Python error and object-reuse
64
+ semantics. Numeric work releases the GIL only at the existing explicit boundaries.
65
+
66
+ The PDFium bridge is a separate boundary: it borrows function pointers and a text-page
67
+ handle from the active pypdfium2 instance, under the existing Python guard and GIL.
68
+ It does not load another PDFium library, take ownership of handles or close them.
69
+ Subsequent numeric geometry conversion can release the GIL after reading finishes.
70
+
71
+ `DOCVORTEX_COMPUTE_BACKEND=python|rust|auto` selects the backend once per process.
72
+ `python` never imports the extension; `rust` requires a compatible extension; `auto`
73
+ falls back on a missing or incompatible extension. Computation errors propagate.
74
+ The current private protocol is **6**. Rebuild an editable extension after changing
75
+ native sources and restart processes that cached the backend. Module-only refactors
76
+ preserve the protocol and all Python-visible registrations.
77
+
78
+ Within the binding crate, `lib.rs` declares modules and registers the existing flat
79
+ Python extension interface. Rust modules do not become Python submodules:
80
+
81
+ | Module | Responsibility |
82
+ | --- | --- |
83
+ | `geometry` | Character geometry, coordinate conversion, visual runs, anchor pairs and coordinate-object reuse |
84
+ | `statistics` | Ordered clustering, typography and lane-gap statistics |
85
+ | `tables` | Table kernels, column accumulation, row geometry and note-metric state |
86
+ | `spatial` | Baseline indices, title gaps, neighboring lines and annotation geometry |
87
+ | `scripts` | Script-role classification and inline pairing |
88
+ | `dedup` | Duplicate-paint, hidden-text and mapping-run candidates |
89
+ | `conversion` | Shared box extraction, tuple conversion and transport aliases |
90
+ | `pdfium` | Borrowed PDFium calls and bounded character batches |
91
+
92
+ Keep binding helpers internal to the crate. New functions and methods must include
93
+ Chinese comments explaining their responsibility. Place numeric kernels in the core
94
+ crate, Python transport handling in the bindings, and document decisions in Python.
95
+
96
+ ## Development and verification
97
+
98
+ Run commands from the repository root in a virtual environment. For pure Python
99
+ development (no native compilation):
100
+
101
+ ```sh
102
+ DOCVORTEX_BUILD_NATIVE=0 python -m pip install -e ".[test,dev]"
103
+ DOCVORTEX_COMPUTE_BACKEND=python python -m pytest -q
104
+ ```
105
+
106
+ For release-mode native development:
107
+
108
+ ```sh
109
+ DOCVORTEX_BUILD_NATIVE=1 python -m pip install -e ".[test,dev]"
110
+ DOCVORTEX_COMPUTE_BACKEND=rust python -m pytest -q tests/test_compute_backend.py tests/test_native_parity.py tests/test_native_statistics.py tests/test_native_round3.py tests/test_native_round4.py tests/test_native_round5.py tests/test_pdfium_bridge.py tests/test_architecture.py
111
+ cargo fmt --all --check
112
+ cargo clippy --workspace --all-targets -- -D warnings
113
+ cargo test -p docvortex-core --locked
114
+ ```
115
+
116
+ These environment assignments use POSIX shell syntax. In PowerShell, set the matching
117
+ `$env:DOCVORTEX_BUILD_NATIVE` or `$env:DOCVORTEX_COMPUTE_BACKEND` before the command.
118
+ For source-only Python runs, `PYTHONPATH=src` is available; installed-wheel validation
119
+ must omit it and use a fresh environment without an editable DocVortex installation.
120
+ Disabling native compilation does not remove a binary left by an earlier editable
121
+ build; use the explicit Python runtime backend or a clean wheel installation.
122
+
123
+ Use the existing parity suites for transport, numeric and object-identity contracts,
124
+ and the core crate's tests for Python-independent kernels. Distribution checks must
125
+ cover a complete sdist, a pure Python wheel and a native wheel built from that sdist.
126
+ The existing CI owns the cross-platform matrix. See [Rust acceleration](rust-acceleration.md)
127
+ for installed-wheel smoke checks, real-document comparisons and benchmark commands.
128
+
129
+ ## Layout rationale
130
+
131
+ Keep `src/docvortex` and `rust` while Python remains the public product. Renaming `rust`
132
+ to `crates` would not change these boundaries. Independent `python` and `rust` product
133
+ roots become useful if Rust gains its own supported SDK and release lifecycle; that
134
+ is not the current distribution model.
135
+
136
+ References: [Python src layout](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/),
137
+ [Cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html),
138
+ [setuptools-rust mixed packages](https://setuptools-rust.readthedocs.io/en/latest/).
@@ -0,0 +1,234 @@
1
+ # Optional Rust PDF kernels
2
+
3
+ See [Repository architecture](ARCHITECTURE.md) for the Python/Rust ownership boundary
4
+ and binding-module layout. The current private extension protocol is **6**, shared by
5
+ the Python loader and Rust core. Protocol 4 and 5 references below describe historical
6
+ interfaces or rollout stages, not the current loader requirement. Rebuild editable
7
+ native installs and restart existing processes after updating native sources.
8
+
9
+ DocVortex keeps its Python API, document types, parsing decisions and PDFium runtime.
10
+ The private `docvortex._native` extension accelerates batches of already materialized
11
+ numbers and indices. It does not bundle or call a second PDFium library and does not
12
+ create a thread pool. The existing PDFium lock and handle lifetimes are unchanged.
13
+
14
+ ## Runtime selection
15
+
16
+ Set `DOCVORTEX_COMPUTE_BACKEND` before the first PDF computation in a process:
17
+
18
+ | Value | Behavior |
19
+ | --- | --- |
20
+ | `auto` (default) | Load a compatible native extension when available; otherwise use Python. |
21
+ | `python` | Use the Python reference kernels without importing the extension. |
22
+ | `rust` | Require the extension and its matching private protocol; missing or incompatible binaries raise an error. |
23
+
24
+ Selection is cached for the process. Restart the process after changing the variable
25
+ or rebuilding an editable extension. Computation errors are never silently retried
26
+ in Python. The few explicit algorithmic reference paths preserve extreme coordinates,
27
+ unusual Python inputs, and script-reference ties whose choice depends on Python set
28
+ iteration. These paths do not weaken any parsing decision or output comparison.
29
+
30
+ Python owns Unicode classification, normalization, font equality, version-dependent
31
+ rounding, HTML generation and public object construction. Stable table-column means
32
+ use an incremental accumulator matching the running CPython version's float-only
33
+ `sum`: sequential for 3.10–3.11 and compensated for 3.12–3.14. Integer/mixed/custom
34
+ inputs, other runtimes and intermediate overflow retain Python computation. Rust owns
35
+ numeric batches and returns source ranges or indices. Canonical geometry reuses
36
+ unchanged Python float objects and zero-rotation tuples to bound retained memory. Original `Char` references and
37
+ copy-on-merge source-index behavior are retained. Small bounded caches contain only
38
+ immutable Unicode features; they do not retain documents or use object addresses.
39
+
40
+ ## Kernels
41
+
42
+ - Ordered statistics: exact median clustering for baseline and body-height groups;
43
+ stable first/last-cluster decisions return only source indices.
44
+ - Typography and lanes: bounded font metadata reuse and batched numeric statistics;
45
+ original lane-member sorting and Python text/font-family classification remain.
46
+ - Table text: stable visual rows and lazy per-recovery occupancy reuse without changing
47
+ candidates, interval boundary ownership or diagnostics.
48
+ - Shared script geometry: baseline clusters, component membership and script roles.
49
+ - Character geometry: clipping, rotation, visual run boundaries and canonical samples.
50
+ - Character extraction: the private bridge borrows function pointers from the active
51
+ pypdfium2 instance and reads characters in one synchronous call under the original
52
+ lock and GIL. It owns no PDFium handles or callbacks and loads no second library.
53
+ Unsupported ctypes ABI/inputs use the reference reader with a recorded reason;
54
+ errors after entering the bridge propagate. Coordinate conversion can then release
55
+ the GIL. Raw numerical records stay within the call; Python records and coordinate
56
+ results are materialized in batches of at most 1,024. Font sharing, object/source IDs
57
+ and writing-direction assignment retain whole-page scope. The original protocol-4
58
+ list reader remains compatible. Wheel smoke checks require an actually completed
59
+ bridge call using bounded batches.
60
+ - Deduplication: paint buckets, translated-run evidence, source components and hidden
61
+ OCR geometry. Unicode matching and final copies remain in Python.
62
+ - Tables: region selection, batched rule coverage and merging, grid connectivity,
63
+ rectangular component checks and glyph-to-cell assignment. Candidate ordering,
64
+ confidence thresholds, diagnostics, primitive limits and HTML remain unchanged.
65
+ - Dense pages: bounded interval queries replace the quadratic candidate-list fallback;
66
+ candidate consumption preserves original line indices. Rule-table candidates retain
67
+ compact interval drafts and share note statistics before stable score materialization.
68
+ Short-tail attachment sweeps preceding rows without repeatedly scanning whole lanes.
69
+ - Visual assets: the existing rendering workers crop, orient and JPEG-encode images,
70
+ returning indexed encoded blocks instead of full-page pixels. Scheduling limits,
71
+ timeout/recovery, crop/encoding parameters and public asset bytes are preserved.
72
+ After a crop task closes its images, the worker collects the youngest Python GC
73
+ generation: closed pypdfium2 document/page reference cycles can otherwise retain
74
+ whole PDF inputs across tasks. This does not change PDFium handle ownership or
75
+ require allocator-specific memory trimming.
76
+
77
+ ## Development and distribution
78
+
79
+ The Cargo workspace contains a Python-independent core crate and a PyO3 binding crate.
80
+ `rust-toolchain.toml` pins the compiler; `Cargo.lock` pins dependencies. Build release
81
+ kernels even for editable performance testing:
82
+
83
+ ```sh
84
+ DOCVORTEX_BUILD_NATIVE=1 python -m pip install -e .
85
+ DOCVORTEX_COMPUTE_BACKEND=rust python -m pytest tests/test_native_parity.py
86
+ cargo test -p docvortex-core --locked
87
+ cargo clippy --workspace --all-targets -- -D warnings
88
+ ```
89
+
90
+ `DOCVORTEX_BUILD_NATIVE=0` builds a pure Python wheel. `auto` builds native code when
91
+ Cargo is available and otherwise builds pure Python. If a compiler is available but
92
+ compilation fails, installation fails visibly instead of publishing a broken binary.
93
+ Official binary builds always set `DOCVORTEX_BUILD_NATIVE=1`.
94
+
95
+ GIL-enabled CPython 3.10–3.14 uses `cp310-abi3` wheels for Linux x86_64/aarch64,
96
+ Windows x86_64 and macOS arm64/x86_64. Linux binary builds target manylinux_2_28;
97
+ older glibc systems can use the pure Python wheel. Other interpreters can build the
98
+ pure package; this does not extend compatibility guarantees of its dependencies.
99
+ Free-threaded native wheels are not part of this change.
100
+
101
+ The native wheel workflow tests installed artifacts against Python output and exercises
102
+ real parsing, both on Python 3.10 and 3.14. The regular CI matrix exercises Python and
103
+ Rust backends on Python 3.10–3.14. The release workflow retains the main-CI/tag gate,
104
+ then builds/tests every artifact before publishing all platform wheels, the pure wheel
105
+ and the source distribution. A local build is not evidence that remote matrix jobs passed.
106
+
107
+ On Intel macOS, the existing Magika/ONNX Runtime dependency stack currently prevents
108
+ full application installation on Python 3.14. That wheel is tested with full parsing
109
+ on Python 3.10 and 3.13, and its binary kernels are loaded and executed separately on
110
+ Python 3.14. This ABI check is not a claim that the complete dependency stack installs
111
+ there. The Rust change does not alter those existing dependency requirements.
112
+
113
+ ## Benchmarks and regression gates
114
+
115
+ Use `PYTHONPATH=src` for a source checkout; omit it when validating an installed wheel.
116
+ Every output directory must be new. Run CPU benchmarks without concurrent tests/builds.
117
+ The independent process-tree memory auditor additionally requires `psutil`.
118
+
119
+ ```sh
120
+ python tests/benchmarks/flash_pdf.py --backend python --runs 5 --profile --output output/rust/reference
121
+ python tests/benchmarks/flash_pdf.py --backend rust --runs 5 --profile --output output/rust/native --baseline output/rust/reference
122
+ python tests/benchmarks/native_pdf_table.py --backend python --runs 5 --output output/rust/table-python
123
+ python tests/benchmarks/native_pdf_table.py --backend rust --runs 5 --output output/rust/table-rust --baseline output/rust/table-python
124
+ python tests/benchmarks/rust_pdf.py --backend python --suite public --output output/rust/public-python
125
+ python tests/benchmarks/rust_pdf.py --backend rust --suite public --output output/rust/public-rust --baseline output/rust/public-python
126
+ python tests/benchmarks/rust_pdf.py --backend python --suite shared --flash-baseline output/rust/reference --output output/rust/shared-python
127
+ python tests/benchmarks/rust_pdf.py --backend rust --suite shared --flash-baseline output/rust/reference --output output/rust/shared-rust --baseline output/rust/shared-python
128
+ ```
129
+
130
+ The public/shared benchmark defaults to `caibao1`, `demo1` and `demo2`. Use repeatable
131
+ `--path` arguments for other cases. Shared benchmarking consumes frozen baseline table
132
+ regions, so a different candidate set cannot masquerade as acceleration. Timings include
133
+ conversion into Rust and Python result construction. First invocation is separate from
134
+ five warmed runs. Output comparison and memory sampling are outside timing. Public
135
+ `parse` includes geometry, image materialization and postprocessing, but not rendering
136
+ an export. Shared timings separate extraction, reuse, evidence and table recovery;
137
+ they do not include model inference or represent MinerU end-to-end latency.
138
+
139
+ Acceptance requires unchanged full outputs, related historical/manual tests, host API
140
+ and primitive-reuse tests, and installed-wheel verification. Target a 30% reduction in
141
+ each demo's public parse and shared-entry timing. Investigate sustained regressions
142
+ above 5% in time or RSS. Never refresh a gold file or remove fields to achieve parity;
143
+ record any remaining performance gap explicitly.
144
+
145
+
146
+ Optional host replay lives outside the independent engine test tree:
147
+
148
+ ```sh
149
+ python tools/mineru_native_replay.py --mineru-source ../Magic-PDF --backend python --flash-baseline output/rust/reference --output output/rust/host-python
150
+ python tools/mineru_native_replay.py --mineru-source ../Magic-PDF --backend rust --flash-baseline output/rust/reference --output output/rust/host-rust --baseline output/rust/host-python
151
+ python tests/benchmarks/compare_native_corpus.py --runs 5 --output output/rust/corpus
152
+ ```
153
+
154
+ Host replay compares actual medium/high native stages with frozen model inputs and
155
+ records fallback inputs and per-page extraction counts; it does not measure live inference.
156
+
157
+ MinerU revisions whose scheduling tests mock the old full-page raster entry can use
158
+ `python -m pytest -p tools.mineru_render_test_adapter -o addopts= HOST_TEST_PATH`.
159
+ This explicit test-only plugin forwards that mock to the encoded-crop worker boundary;
160
+ it retains page-selection, configuration, title-gating and image-closure assertions.
161
+ The frozen third-round source reproduces the unadapted mock failures too. Real worker
162
+ behavior is checked separately with engine tests and complete PDF/asset comparisons;
163
+ the plugin does not change MinerU application code or production dispatch.
164
+
165
+
166
+ Fourth-round kernels require private protocol 5. Rebuild editable native installs after
167
+ updating Python sources; an older extension is rejected by forced Rust selection.
168
+ Statistics preserve even-median arithmetic and stable tie order. Non-finite inputs use
169
+ explicit reference paths. Occupancy caches are local to one table recovery and do not
170
+ retain documents. Font metadata reuse is limited to one typography call and primitive
171
+ dictionary values.
172
+
173
+ Dense table-column clustering preserves first-match decisions and strict-prefix reuse,
174
+ but no longer re-sums each cluster's complete history. Each corridor's anchors are
175
+ prepared once; repeated row appearances still count as separate query positions.
176
+ Table-note body heights use persistent counts indexed by vertical prefixes and stable
177
+ height ranks. A core-row range may skip extra exclusion only when all occurrences of
178
+ every source ID lie inside the exclusion band; other ranges use exact member filtering.
179
+ Marker interpretation remains Python-owned and cached within one candidate build.
180
+ Marker queries visit only untested rows in the current core range and stop on the
181
+ first match. Two compact row bitmaps record tested and matching positions, with at
182
+ most 128 recently used markers per corridor. Eviction recomputes evidence; it never
183
+ removes candidates. No dense source-by-marker matrix of false results is populated.
184
+ Existing first-source cache decisions are respected, including duplicate source IDs.
185
+ Non-contiguous row selections retain the reference path.
186
+
187
+ Row geometry indices preserve original ordering, including non-monotonic bottoms.
188
+ They return coordinate source indices so Python reuses the original float objects;
189
+ ties retain the earlier value, including signed zero. Candidate scoring, all interval
190
+ candidates, annotation stopping rules and merge ordering are unchanged. Contexts keep
191
+ strong row references only within the active call and are never global caches.
192
+
193
+ Installed-wheel checks include `tests/test_native_round4.py`: every prefix's float bits,
194
+ coverage, first-match clustering, quantile ranks, repeated sources, coordinate identity
195
+ and indexed annotation chains are checked against the independent reference. The tests
196
+ assert native state is actually used, not merely that an extension can be imported.
197
+
198
+ The experimental native mapping pre-grouping kernel remains disabled in production:
199
+ whole-entry measurements showed its packing cost exceeded its calculation benefit.
200
+ It is retained for differential coverage. No additional environment switch is exposed.
201
+
202
+ For four-way revision acceptance, freeze the old checkout with its matching binary and
203
+ write `benchmark-revision.json` containing its `commit`. Then run:
204
+
205
+ ```sh
206
+ python tests/benchmarks/compare_pdf_revisions.py --reference-source OLD_CHECKOUT --extra-path LOCAL_EXTERNAL.pdf --output output/rust/revisions
207
+ python tools/generate_dense_pdf.py output/dense-table.pdf
208
+ python tools/verify_native_wheel.py output/dense-table.pdf
209
+ ```
210
+
211
+ The revision benchmark compares complete ModelJson, MiddleJson, diagnostics and asset
212
+ hashes, records real source fingerprints, checkpoints every timing run, samples process
213
+ tree RSS separately, and reverses order for regressions above 5%. Local external PDFs
214
+ are identified by SHA256 and are not uploaded to CI. The wheel matrix instead generates
215
+ a deterministic 120-row synthetic table and exercises both pypdfium2 5.10.1 and 5.13.0.
216
+
217
+ Validation tools set the upstream `ORT_DISABLE_TELEMETRY=1` before importing ONNX Runtime
218
+ and record the setting. API suppression alone cannot retract its initialization event
219
+ ([upstream details](https://github.com/microsoft/onnxruntime/blob/main/docs/Privacy.md)).
220
+ This prevents a telemetry SDK shutdown race observed on the
221
+ local macOS stack from masking completed PDF results; production runtime settings are
222
+ unchanged. Failed runs remain excluded, and formal comparisons use the same telemetry
223
+ setting for both revisions and backends. Regression retests reverse only affected pairs.
224
+
225
+ RSS is collected in a separate process after one entrypoint warmup. Public parsing is
226
+ sampled before model serialization; shared sampling retains the evidence snapshots but
227
+ does not encode or hash JSON. Output equality is checked after sampling. The complete
228
+ descendant tree includes rendering workers and multiprocessing helpers. This avoids
229
+ mistaking allocator retention from full-output JSON validation for parser memory use.
230
+ Existing timing runs can be audited without discarding their original memory records:
231
+
232
+ ```sh
233
+ python tests/benchmarks/pdf_memory.py --timing-report output/rust/revisions/report.json --output output/rust/memory-audit
234
+ ```
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools>=77.0.3", "wheel"]
2
+ requires = ["setuptools>=77.0.3", "wheel", "setuptools-rust>=1.11,<2"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
@@ -9,7 +9,7 @@ description = "A fast, multi-format document parsing and conversion engine"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10,<3.15"
11
11
  license = "MIT"
12
- license-files = ["LICENSE.md"]
12
+ license-files = ["LICENSE.md", "licenses/rust/*/LICENSE*", "licenses/rust/README.md"]
13
13
  classifiers = [
14
14
  "Programming Language :: Python :: 3 :: Only",
15
15
  "Programming Language :: Python :: 3.10",
@@ -0,0 +1,5 @@
1
+ [package]
2
+ name = "docvortex-core"
3
+ version.workspace = true
4
+ edition.workspace = true
5
+ license.workspace = true
@@ -0,0 +1,82 @@
1
+ //! 表注片段按原顺序筛选并聚合,只返回原坐标来源,不创建新的浮点对象。
2
+ use crate::geometry::Box4;
3
+ use std::collections::{HashMap, HashSet};
4
+
5
+ pub type Fragment = (usize, Box4, Box4);
6
+ pub type Output = (Vec<(usize, [usize; 4], usize)>, Option<[usize; 4]>);
7
+
8
+ pub struct AnnotationGeometry {
9
+ fragments: Vec<Fragment>,
10
+ }
11
+
12
+ impl AnnotationGeometry {
13
+ /// 保存走廊内只读片段,限制有限数值幅度以保证中间运算安全。
14
+ pub fn new(fragments: Vec<Fragment>) -> Option<Self> {
15
+ if fragments.iter().any(|f| {
16
+ f.1.iter()
17
+ .chain(f.2.iter())
18
+ .any(|v| !v.is_finite() || v.abs() > 1e100)
19
+ }) {
20
+ return None;
21
+ }
22
+ Some(Self { fragments })
23
+ }
24
+
25
+ /// 严格比较保留先出现的坐标来源,包括相等值与正负零。
26
+ fn combine(&self, a: [usize; 4], b: [usize; 4]) -> [usize; 4] {
27
+ let mut result = a;
28
+ for k in 0..4 {
29
+ let av = self.fragments[a[k]].1[k];
30
+ let bv = self.fragments[b[k]].1[k];
31
+ if (k < 2 && bv < av) || (k >= 2 && bv > av) {
32
+ result[k] = b[k];
33
+ }
34
+ }
35
+ result
36
+ }
37
+
38
+ /// 按当前候选的原片段序处理排除与重复来源,错误索引明确拒绝。
39
+ pub fn aggregate(
40
+ &self,
41
+ selected: Vec<usize>,
42
+ excluded: Vec<usize>,
43
+ local: Option<Box4>,
44
+ ) -> Option<Output> {
45
+ if selected.iter().any(|i| *i >= self.fragments.len())
46
+ || local.is_some_and(|b| b.iter().any(|v| !v.is_finite() || v.abs() > 1e100))
47
+ {
48
+ return None;
49
+ }
50
+ let excluded: HashSet<_> = excluded.into_iter().collect();
51
+ let mut positions = HashMap::new();
52
+ let mut lines: Vec<(usize, [usize; 4], usize)> = Vec::new();
53
+ for i in selected {
54
+ let (source, _, b) = self.fragments[i];
55
+ if excluded.contains(&source) {
56
+ continue;
57
+ }
58
+ if let Some(region) = local {
59
+ let smaller = (b[2] - b[0]).min(region[2] - region[0]);
60
+ let overlap = 0.0_f64.max(b[2].min(region[2]) - b[0].max(region[0]));
61
+ let ratio = if smaller > 0.0 {
62
+ overlap / smaller
63
+ } else {
64
+ 0.0
65
+ };
66
+ if b[3] > region[1] && ratio >= 0.05 {
67
+ continue;
68
+ }
69
+ }
70
+ if let Some(&position) = positions.get(&source) {
71
+ let line: &mut (usize, [usize; 4], usize) = &mut lines[position];
72
+ line.1 = self.combine(line.1, [i; 4]);
73
+ line.2 += 1;
74
+ } else {
75
+ positions.insert(source, lines.len());
76
+ lines.push((source, [i; 4], 1));
77
+ }
78
+ }
79
+ let union = lines.iter().map(|v| v.1).reduce(|a, b| self.combine(a, b));
80
+ Some((lines, union))
81
+ }
82
+ }