docvortex 0.5.5__tar.gz → 0.5.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (837) hide show
  1. {docvortex-0.5.5 → docvortex-0.5.6}/PKG-INFO +1 -1
  2. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/lib.rs +1 -1
  3. docvortex-0.5.6/rust/docvortex-pdfium/src/drawing_lines.rs +282 -0
  4. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/lib.rs +1 -0
  5. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/objects.rs +3 -1
  6. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/lib.rs +6 -0
  7. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/pdfium.rs +51 -0
  8. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/_compute_backend.py +1 -1
  9. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +60 -45
  10. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/graphics.py +78 -23
  11. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/models.py +14 -0
  12. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/_object_bridge.py +68 -1
  13. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/classify.py +64 -39
  14. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_objects.py +81 -47
  15. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/version.py +1 -1
  16. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/PKG-INFO +1 -1
  17. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/SOURCES.txt +5 -0
  18. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_parity.py +4 -1
  19. docvortex-0.5.6/tests/test_pdf_classify_page_loading.py +219 -0
  20. docvortex-0.5.6/tests/test_pdf_classify_resource_graph.py +206 -0
  21. docvortex-0.5.6/tests/test_pdf_drawing_lines_extraction.py +237 -0
  22. docvortex-0.5.6/tests/test_pdf_native_graphics_components.py +174 -0
  23. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_object_bridge.py +18 -0
  24. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_auxiliary_text.py +24 -0
  25. {docvortex-0.5.5 → docvortex-0.5.6}/Cargo.lock +0 -0
  26. {docvortex-0.5.5 → docvortex-0.5.6}/Cargo.toml +0 -0
  27. {docvortex-0.5.5 → docvortex-0.5.6}/LICENSE.md +0 -0
  28. {docvortex-0.5.5 → docvortex-0.5.6}/MANIFEST.in +0 -0
  29. {docvortex-0.5.5 → docvortex-0.5.6}/README.md +0 -0
  30. {docvortex-0.5.5 → docvortex-0.5.6}/demo/README.md +0 -0
  31. {docvortex-0.5.5 → docvortex-0.5.6}/demo/demo.py +0 -0
  32. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ebook/epub_01.epub +0 -0
  33. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ebook/epub_02.epub +0 -0
  34. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/README.md +0 -0
  35. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/docx_01.doc +0 -0
  36. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/docx_01.docx +0 -0
  37. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/pptx_01.ppt +0 -0
  38. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/pptx_01.pptx +0 -0
  39. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/rtf_01.rtf +0 -0
  40. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/xlsx_01.xls +0 -0
  41. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ms_office_docs/xlsx_01.xlsx +0 -0
  42. {docvortex-0.5.5 → docvortex-0.5.6}/demo/ofd/ofd_01.ofd +0 -0
  43. {docvortex-0.5.5 → docvortex-0.5.6}/demo/open_office_docs/docx_01.odt +0 -0
  44. {docvortex-0.5.5 → docvortex-0.5.6}/demo/open_office_docs/pptx_01.odp +0 -0
  45. {docvortex-0.5.5 → docvortex-0.5.6}/demo/open_office_docs/xlsx_01.ods +0 -0
  46. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
  47. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
  48. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/caibao1.pdf +0 -0
  49. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo1.pdf +0 -0
  50. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo2.pdf +0 -0
  51. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo3.pdf +0 -0
  52. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo4.pdf +0 -0
  53. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/demo6.pdf +0 -0
  54. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
  55. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
  56. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
  57. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
  58. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs/small_ocr.pdf +0 -0
  59. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
  60. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
  61. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
  62. {docvortex-0.5.5 → docvortex-0.5.6}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
  63. {docvortex-0.5.5 → docvortex-0.5.6}/demo/web_docs/html_01.html +0 -0
  64. {docvortex-0.5.5 → docvortex-0.5.6}/demo/web_docs/mhtml_01.mhtml +0 -0
  65. {docvortex-0.5.5 → docvortex-0.5.6}/docs/ARCHITECTURE.md +0 -0
  66. {docvortex-0.5.5 → docvortex-0.5.6}/docs/HTML_PROTOCOL.md +0 -0
  67. {docvortex-0.5.5 → docvortex-0.5.6}/docs/JSON_PROTOCOL.md +0 -0
  68. {docvortex-0.5.5 → docvortex-0.5.6}/docs/METADATA.md +0 -0
  69. {docvortex-0.5.5 → docvortex-0.5.6}/docs/PDF_FONTS.md +0 -0
  70. {docvortex-0.5.5 → docvortex-0.5.6}/docs/RENDER_OWNERSHIP.md +0 -0
  71. {docvortex-0.5.5 → docvortex-0.5.6}/docs/USAGE.md +0 -0
  72. {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-manual-annotations-2026-09-15.md +0 -0
  73. {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-round2-annotations-2026-09-15.md +0 -0
  74. {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-rule-generalization-2026-09-15.md +0 -0
  75. {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-spatial-layout-followup-2026-09-16.md +0 -0
  76. {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-spatial-layout-round3-2026-09-16.md +0 -0
  77. {docvortex-0.5.5 → docvortex-0.5.6}/docs/flash-title-coverage-2026-09-16.md +0 -0
  78. {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-native-kernel-next.md +0 -0
  79. {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-native-kernel-p4-execution.md +0 -0
  80. {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-native-kernel.md +0 -0
  81. {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-render-worker-leases.md +0 -0
  82. {docvortex-0.5.5 → docvortex-0.5.6}/docs/pdf-tight-spacing-2026-09-28.md +0 -0
  83. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-acceleration.md +0 -0
  84. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-round7.md +0 -0
  85. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage11-classification-render.md +0 -0
  86. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage12-geometry.md +0 -0
  87. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage13-owned-geometry.md +0 -0
  88. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage14-line-metrics.md +0 -0
  89. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage15-table-candidates.md +0 -0
  90. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage16-bitmap-crops.md +0 -0
  91. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage17-inline-styles.md +0 -0
  92. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage5-render.md +0 -0
  93. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage6-text.md +0 -0
  94. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage7-content.md +0 -0
  95. {docvortex-0.5.5 → docvortex-0.5.6}/docs/rust-pdf-stage9-inline.md +0 -0
  96. {docvortex-0.5.5 → docvortex-0.5.6}/docs/sdk-0.4.md +0 -0
  97. {docvortex-0.5.5 → docvortex-0.5.6}/pyproject.toml +0 -0
  98. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/Cargo.toml +0 -0
  99. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/annotation_geometry.rs +0 -0
  100. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/columns.rs +0 -0
  101. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/dedup.rs +0 -0
  102. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/extraction.rs +0 -0
  103. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry.rs +0 -0
  104. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_lines.rs +0 -0
  105. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_risk.rs +0 -0
  106. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_runs.rs +0 -0
  107. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/geometry_style.rs +0 -0
  108. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/inline_pairs.rs +0 -0
  109. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/inline_styles.rs +0 -0
  110. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/note_index.rs +0 -0
  111. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/pixels.rs +0 -0
  112. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/row_geometry.rs +0 -0
  113. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/scripts.rs +0 -0
  114. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/spatial.rs +0 -0
  115. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/statistics.rs +0 -0
  116. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/table_candidates.rs +0 -0
  117. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/table_merge.rs +0 -0
  118. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/tables.rs +0 -0
  119. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_assignment.rs +0 -0
  120. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_classification.rs +0 -0
  121. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_content.rs +0 -0
  122. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_pipeline.rs +0 -0
  123. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_snapshot.rs +0 -0
  124. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/src/text_spacing.rs +0 -0
  125. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-core/tests/contracts.rs +0 -0
  126. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/Cargo.toml +0 -0
  127. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/classification.rs +0 -0
  128. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/fonts.rs +0 -0
  129. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/paths.rs +0 -0
  130. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-pdfium/src/text_colors.rs +0 -0
  131. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/Cargo.toml +0 -0
  132. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/classification.rs +0 -0
  133. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/conversion.rs +0 -0
  134. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/dedup.rs +0 -0
  135. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/fonts.rs +0 -0
  136. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry.rs +0 -0
  137. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry_document.rs +0 -0
  138. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry_risk.rs +0 -0
  139. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/geometry_runs.rs +0 -0
  140. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/inline_styles.rs +0 -0
  141. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/pixels.rs +0 -0
  142. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/script_snapshot.rs +0 -0
  143. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/scripts.rs +0 -0
  144. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/snapshot.rs +0 -0
  145. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/spatial.rs +0 -0
  146. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/statistics.rs +0 -0
  147. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/table_candidates.rs +0 -0
  148. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/table_merge.rs +0 -0
  149. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/tables.rs +0 -0
  150. {docvortex-0.5.5 → docvortex-0.5.6}/rust/docvortex-python/src/text_pipeline.rs +0 -0
  151. {docvortex-0.5.5 → docvortex-0.5.6}/rust-toolchain.toml +0 -0
  152. {docvortex-0.5.5 → docvortex-0.5.6}/schemas/middle-2.0.json +0 -0
  153. {docvortex-0.5.5 → docvortex-0.5.6}/schemas/model-2.0.json +0 -0
  154. {docvortex-0.5.5 → docvortex-0.5.6}/setup.cfg +0 -0
  155. {docvortex-0.5.5 → docvortex-0.5.6}/setup.py +0 -0
  156. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/__init__.py +0 -0
  157. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/__init__.py +0 -0
  158. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/__init__.py +0 -0
  159. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
  160. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
  161. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/image.py +0 -0
  162. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
  163. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
  164. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
  165. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
  166. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
  167. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
  168. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/names.py +0 -0
  169. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
  170. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/contracts.py +0 -0
  171. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/csv.py +0 -0
  172. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
  173. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/constants.py +0 -0
  174. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/converter.py +0 -0
  175. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/errors.py +0 -0
  176. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
  177. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/package.py +0 -0
  178. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/properties.py +0 -0
  179. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
  180. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/__init__.py +0 -0
  181. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/anchors.py +0 -0
  182. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/constants.py +0 -0
  183. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/converter.py +0 -0
  184. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/document.py +0 -0
  185. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/errors.py +0 -0
  186. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/metadata.py +0 -0
  187. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/resources.py +0 -0
  188. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/html/selector.py +0 -0
  189. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/mhtml/__init__.py +0 -0
  190. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/mhtml/converter.py +0 -0
  191. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/mhtml/resources.py +0 -0
  192. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/models.py +0 -0
  193. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
  194. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
  195. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
  196. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
  197. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
  198. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
  199. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/images.py +0 -0
  200. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
  201. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/models.py +0 -0
  202. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/package.py +0 -0
  203. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/path.py +0 -0
  204. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
  205. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
  206. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
  207. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/table.py +0 -0
  208. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/text.py +0 -0
  209. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
  210. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/__init__.py +0 -0
  211. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
  212. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
  213. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
  214. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
  215. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
  216. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
  217. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
  218. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
  219. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
  220. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
  221. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
  222. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
  223. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
  224. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
  225. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
  226. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
  227. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
  228. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
  229. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
  230. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
  231. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
  232. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
  233. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
  234. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
  235. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
  236. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
  237. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
  238. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
  239. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
  240. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
  241. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
  242. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
  243. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
  244. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
  245. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/errors.py +0 -0
  246. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/image.py +0 -0
  247. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
  248. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
  249. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
  250. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
  251. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/limits.py +0 -0
  252. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/metadata.py +0 -0
  253. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
  254. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
  255. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
  256. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
  257. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
  258. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
  259. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
  260. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
  261. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
  262. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
  263. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
  264. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
  265. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/opc.py +0 -0
  266. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
  267. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
  268. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
  269. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
  270. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
  271. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
  272. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
  273. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
  274. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
  275. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
  276. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
  277. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
  278. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
  279. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
  280. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
  281. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
  282. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
  283. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
  284. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
  285. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
  286. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
  287. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
  288. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
  289. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
  290. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
  291. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
  292. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
  293. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
  294. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/spreadsheet/region_discovery.py +0 -0
  295. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/streams.py +0 -0
  296. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
  297. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
  298. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
  299. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
  300. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
  301. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
  302. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
  303. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
  304. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
  305. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
  306. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
  307. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
  308. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
  309. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
  310. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
  311. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_interval_candidates.py +0 -0
  312. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_native_geometry.py +0 -0
  313. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_native_table_merge.py +0 -0
  314. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_ordered_statistics.py +0 -0
  315. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
  316. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
  317. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
  318. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
  319. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
  320. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
  321. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/rule_band.py +0 -0
  322. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
  323. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
  324. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
  325. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
  326. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
  327. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
  328. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/annotation_bands.py +0 -0
  329. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
  330. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
  331. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
  332. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
  333. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
  334. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
  335. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
  336. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
  337. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
  338. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
  339. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/owned_styles.py +0 -0
  340. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
  341. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/spacing.py +0 -0
  342. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
  343. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/layout_evidence.py +0 -0
  344. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/line_layout.py +0 -0
  345. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/line_merging.py +0 -0
  346. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/native_text.py +0 -0
  347. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
  348. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
  349. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
  350. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
  351. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_detection.py +0 -0
  352. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
  353. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
  354. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
  355. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
  356. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_rules.py +0 -0
  357. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
  358. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
  359. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
  360. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
  361. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
  362. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
  363. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/continuity.py +0 -0
  364. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
  365. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
  366. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
  367. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
  368. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/text_roles.py +0 -0
  369. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
  370. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
  371. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
  372. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/compact_titles.py +0 -0
  373. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
  374. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
  375. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
  376. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
  377. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
  378. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
  379. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
  380. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
  381. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/analyzers/pdf.py +0 -0
  382. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/api.py +0 -0
  383. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/assets/__init__.py +0 -0
  384. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/assets/images.py +0 -0
  385. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/assets/store.py +0 -0
  386. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/cli.py +0 -0
  387. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/__init__.py +0 -0
  388. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/__init__.py +0 -0
  389. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/contracts.py +0 -0
  390. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/materializer.py +0 -0
  391. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/parser.py +0 -0
  392. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/html/resources.py +0 -0
  393. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/codecs/json.py +0 -0
  394. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/__init__.py +0 -0
  395. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/inline.py +0 -0
  396. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/links.py +0 -0
  397. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/__init__.py +0 -0
  398. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/anchors.py +0 -0
  399. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/formula.py +0 -0
  400. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/projector.py +0 -0
  401. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/markup/styles.py +0 -0
  402. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/mathml.py +0 -0
  403. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/normalization.py +0 -0
  404. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/spans.py +0 -0
  405. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/__init__.py +0 -0
  406. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/blocks.py +0 -0
  407. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/content.py +0 -0
  408. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/document.py +0 -0
  409. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/html.py +0 -0
  410. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/models.py +0 -0
  411. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/rules.py +0 -0
  412. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/table/structure.py +0 -0
  413. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/text.py +0 -0
  414. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/content/tree.py +0 -0
  415. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/__init__.py +0 -0
  416. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/contracts.py +0 -0
  417. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/detection.py +0 -0
  418. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/filetypes.py +0 -0
  419. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/mhtml.py +0 -0
  420. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/page_range.py +0 -0
  421. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/__init__.py +0 -0
  422. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/_document.py +0 -0
  423. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/classification_bridge.py +0 -0
  424. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/constants.py +0 -0
  425. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/font_runtime.py +0 -0
  426. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/images.py +0 -0
  427. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/layout.py +0 -0
  428. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/metadata.py +0 -0
  429. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_annotations.py +0 -0
  430. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_contracts.py +0 -0
  431. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_coordinates.py +0 -0
  432. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
  433. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
  434. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/pdfium.py +0 -0
  435. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/raster.py +0 -0
  436. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/render_session.py +0 -0
  437. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/snapshot.py +0 -0
  438. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/snapshot_bridge.py +0 -0
  439. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/__init__.py +0 -0
  440. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/_contracts.py +0 -0
  441. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/_pdfium_bridge.py +0 -0
  442. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/dedup.py +0 -0
  443. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/extract.py +0 -0
  444. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/geometry.py +0 -0
  445. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/groups.py +0 -0
  446. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/text/spacing.py +0 -0
  447. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/pdf/visuals.py +0 -0
  448. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/properties.py +0 -0
  449. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/document/source.py +0 -0
  450. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/errors.py +0 -0
  451. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/__init__.py +0 -0
  452. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/_images.py +0 -0
  453. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/bundle.py +0 -0
  454. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/files.py +0 -0
  455. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/export/middle.py +0 -0
  456. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/__init__.py +0 -0
  457. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_coordinates.py +0 -0
  458. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_geometry.py +0 -0
  459. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_hyperlink.py +0 -0
  460. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_image.py +0 -0
  461. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_image_operations.py +0 -0
  462. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_image_payload.py +0 -0
  463. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_svg_raster.py +0 -0
  464. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/_text.py +0 -0
  465. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/image_encoding.py +0 -0
  466. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/language.py +0 -0
  467. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/magika.py +0 -0
  468. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/type_identity.py +0 -0
  469. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/foundation/xml_names.py +0 -0
  470. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/geometry.py +0 -0
  471. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/metadata.py +0 -0
  472. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/options.py +0 -0
  473. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/__init__.py +0 -0
  474. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/content.py +0 -0
  475. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/document.py +0 -0
  476. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/lists.py +0 -0
  477. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/page_blocks.py +0 -0
  478. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/pages.py +0 -0
  479. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/paragraphs.py +0 -0
  480. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/postprocess/visual.py +0 -0
  481. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/public_api.py +0 -0
  482. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/__init__.py +0 -0
  483. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/__init__.py +0 -0
  484. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/__init__.py +0 -0
  485. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/context.py +0 -0
  486. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/html_table.py +0 -0
  487. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/index.py +0 -0
  488. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/list_items.py +0 -0
  489. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/common/planner.py +0 -0
  490. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/__init__.py +0 -0
  491. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/assets.py +0 -0
  492. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/inline.py +0 -0
  493. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/math.py +0 -0
  494. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/renderer.py +0 -0
  495. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/styles.py +0 -0
  496. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/docx/table.py +0 -0
  497. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/__init__.py +0 -0
  498. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/assets.py +0 -0
  499. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/package.py +0 -0
  500. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/epub/renderer.py +0 -0
  501. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/__init__.py +0 -0
  502. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/inline.py +0 -0
  503. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/renderer.py +0 -0
  504. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
  505. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/html/table.py +0 -0
  506. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/__init__.py +0 -0
  507. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/assets.py +0 -0
  508. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/inline.py +0 -0
  509. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/renderer.py +0 -0
  510. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/latex/table.py +0 -0
  511. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
  512. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/assets.py +0 -0
  513. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
  514. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
  515. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/inline.py +0 -0
  516. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
  517. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/markdown/table.py +0 -0
  518. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
  519. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/assets.py +0 -0
  520. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/diagnostics.py +0 -0
  521. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/font_plan.py +0 -0
  522. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/formula.py +0 -0
  523. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/formula_layout.py +0 -0
  524. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/inline.py +0 -0
  525. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/original.py +0 -0
  526. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/pagination.py +0 -0
  527. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/paragraph.py +0 -0
  528. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/renderer.py +0 -0
  529. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/styles.py +0 -0
  530. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/table.py +0 -0
  531. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/table_content.py +0 -0
  532. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/table_layout.py +0 -0
  533. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/pdf/title_layout.py +0 -0
  534. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
  535. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
  536. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/api.py +0 -0
  537. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/contracts.py +0 -0
  538. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/docx.py +0 -0
  539. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/epub.py +0 -0
  540. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/fragments.py +0 -0
  541. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/html.py +0 -0
  542. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/latex.py +0 -0
  543. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/markdown.py +0 -0
  544. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/pdf.py +0 -0
  545. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/render/structured_content.py +0 -0
  546. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/epub/docvortex.css +0 -0
  547. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
  548. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/fonts/NOTICE +0 -0
  549. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/fonts/manifest.json +0 -0
  550. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/html/docvortex.css +0 -0
  551. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/html/docvortex.min.css +0 -0
  552. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/resources/unicode/EquivalentUnifiedIdeograph-17.0.0.txt +0 -0
  553. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/result.py +0 -0
  554. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/schema.py +0 -0
  555. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex/visualization.py +0 -0
  556. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/dependency_links.txt +0 -0
  557. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/entry_points.txt +0 -0
  558. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/not-zip-safe +0 -0
  559. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/requires.txt +0 -0
  560. {docvortex-0.5.5 → docvortex-0.5.6}/src/docvortex.egg-info/top_level.txt +0 -0
  561. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/compare_native_corpus.py +0 -0
  562. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/compare_pdf_revisions.py +0 -0
  563. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/flash_pdf.py +0 -0
  564. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/native_pdf_table.py +0 -0
  565. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_corpus.py +0 -0
  566. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_input.py +0 -0
  567. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_memory.py +0 -0
  568. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pdf_render.py +0 -0
  569. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/pipeline.py +0 -0
  570. {docvortex-0.5.5 → docvortex-0.5.6}/tests/benchmarks/rust_pdf.py +0 -0
  571. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
  572. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_layout_block_expectations.json +0 -0
  573. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
  574. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
  575. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_manual_annotations.json +0 -0
  576. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_manual_review_decisions.json +0 -0
  577. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_reviewed_history.json +0 -0
  578. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round2_annotations.json +0 -0
  579. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round2_review_decisions.json +0 -0
  580. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round3_annotations.json +0 -0
  581. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round3_followup_review_decisions.json +0 -0
  582. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_round3_review_decisions.json +0 -0
  583. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_rule_generalization_review_decisions.json +0 -0
  584. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/flash_title_coverage_review_decisions.json +0 -0
  585. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
  586. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
  587. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
  588. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
  589. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_char_dedup.json +0 -0
  590. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
  591. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_numeric_citations_review.json +0 -0
  592. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/pdf_tight_spacing_review_decisions.json +0 -0
  593. {docvortex-0.5.5 → docvortex-0.5.6}/tests/fixtures/rtf/semantic.rtf +0 -0
  594. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_architecture.py +0 -0
  595. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_benchmark_entrypoint.py +0 -0
  596. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_brand_protocol.py +0 -0
  597. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_cli_logging.py +0 -0
  598. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_complete_pipeline.py +0 -0
  599. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_compute_backend.py +0 -0
  600. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_converter_lifecycle.py +0 -0
  601. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_document_envelope.py +0 -0
  602. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_document_metadata.py +0 -0
  603. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_export_image_names.py +0 -0
  604. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_format_matrix.py +0 -0
  605. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_geometry_api.py +0 -0
  606. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_history_geometry_tools.py +0 -0
  607. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_html_namespace.py +0 -0
  608. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_magika_runtime.py +0 -0
  609. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_mixed_font_script_reference.py +0 -0
  610. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_model_tape.py +0 -0
  611. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_bitmap_crops.py +0 -0
  612. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_classification.py +0 -0
  613. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_font_runtime.py +0 -0
  614. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_inline_styles.py +0 -0
  615. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round3.py +0 -0
  616. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round4.py +0 -0
  617. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round5.py +0 -0
  618. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round6.py +0 -0
  619. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_round7.py +0 -0
  620. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_statistics.py +0 -0
  621. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_table_candidates.py +0 -0
  622. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_text_pipeline.py +0 -0
  623. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_native_text_snapshot.py +0 -0
  624. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_analysis_api.py +0 -0
  625. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_cpu_evidence.py +0 -0
  626. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_font_geometry.py +0 -0
  627. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_font_runtime.py +0 -0
  628. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_model_text_normalization.py +0 -0
  629. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_numeric_citations.py +0 -0
  630. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_output_text.py +0 -0
  631. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_render_pool.py +0 -0
  632. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_render_session.py +0 -0
  633. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_snapshot.py +0 -0
  634. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_source_row_merging.py +0 -0
  635. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_symbol_normalization.py +0 -0
  636. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdf_tight_spacing.py +0 -0
  637. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_pdfium_bridge.py +0 -0
  638. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_public_export_api.py +0 -0
  639. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_public_image_api.py +0 -0
  640. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_public_pipeline.py +0 -0
  641. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_refactor_raster.py +0 -0
  642. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_refactor_rendering.py +0 -0
  643. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_refactor_resources.py +0 -0
  644. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_release_ci_gate.py +0 -0
  645. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_render_ownership.py +0 -0
  646. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_renderer_branding.py +0 -0
  647. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_shared_boundaries.py +0 -0
  648. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_system_font_pdf_pipeline.py +0 -0
  649. {docvortex-0.5.5 → docvortex-0.5.6}/tests/test_validated_geometry.py +0 -0
  650. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
  651. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_epub_test_utils.py +0 -0
  652. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_flash_pdf_test_utils.py +0 -0
  653. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_image_mtef_test_utils.py +0 -0
  654. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_legacy_doc_test_utils.py +0 -0
  655. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
  656. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_legacy_xls_test_utils.py +0 -0
  657. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_metafile_test_utils.py +0 -0
  658. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_mhtml_test_utils.py +0 -0
  659. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_mtef_test_utils.py +0 -0
  660. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_mtef_v5_test_utils.py +0 -0
  661. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_native_test_utils.py +0 -0
  662. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_odf_test_utils.py +0 -0
  663. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_ofd_test_utils.py +0 -0
  664. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
  665. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
  666. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/_span_test_utils.py +0 -0
  667. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/connexin.pdf +0 -0
  668. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/fornax.pdf +0 -0
  669. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/frames_v1.pdf +0 -0
  670. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/frames_v2.pdf +0 -0
  671. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/k2_treap.pdf +0 -0
  672. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/mmlu_redux.pdf +0 -0
  673. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/nash_review.pdf +0 -0
  674. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/annotated/nougat.pdf +0 -0
  675. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/bloom_form_labels.pdf +0 -0
  676. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/journal_dual_caption.pdf +0 -0
  677. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/journal_layout_tables.pdf +0 -0
  678. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/math_display_formulas.pdf +0 -0
  679. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
  680. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_layout/quantum_appendix_layout.pdf +0 -0
  681. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
  682. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
  683. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
  684. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
  685. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
  686. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
  687. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
  688. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
  689. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
  690. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
  691. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
  692. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
  693. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
  694. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
  695. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
  696. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/numeric_citations_introduction.pdf +0 -0
  697. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/pdfs/test.pdf +0 -0
  698. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_backend_architecture.py +0 -0
  699. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_backend_block_object_regressions.py +0 -0
  700. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_assets.py +0 -0
  701. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_complex_fields.py +0 -0
  702. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_math.py +0 -0
  703. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_render.py +0 -0
  704. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_special_char_tables.py +0 -0
  705. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_table.py +0 -0
  706. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_table_context.py +0 -0
  707. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_docx_table_metafiles.py +0 -0
  708. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_emfplus_integration.py +0 -0
  709. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_epub_backlinks.py +0 -0
  710. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_epub_quoted_note_types.py +0 -0
  711. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_epub_render.py +0 -0
  712. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_bbox_grid_comparison.py +0 -0
  713. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_csv.py +0 -0
  714. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_docx_equationxml.py +0 -0
  715. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_epub.py +0 -0
  716. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_html.py +0 -0
  717. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_image_mtef.py +0 -0
  718. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
  719. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_doc.py +0 -0
  720. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
  721. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_ppt.py +0 -0
  722. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_xls.py +0 -0
  723. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
  724. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_manual_annotations.py +0 -0
  725. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_markup_anchors.py +0 -0
  726. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_mhtml.py +0 -0
  727. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_model.py +0 -0
  728. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_mtef_v5.py +0 -0
  729. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_odf.py +0 -0
  730. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_ofd.py +0 -0
  731. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_image_mtef.py +0 -0
  732. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_metafile.py +0 -0
  733. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_models.py +0 -0
  734. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
  735. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
  736. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_office_title_types.py +0 -0
  737. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
  738. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
  739. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
  740. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
  741. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_equation_images.py +0 -0
  742. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_extractor.py +0 -0
  743. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_formulas.py +0 -0
  744. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_graphics.py +0 -0
  745. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
  746. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_layout_repairs.py +0 -0
  747. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
  748. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_native_text.py +0 -0
  749. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
  750. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_reviewed_history.py +0 -0
  751. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_samples.py +0 -0
  752. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_scripts.py +0 -0
  753. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_semantics.py +0 -0
  754. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_short_tails.py +0 -0
  755. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_tables.py +0 -0
  756. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
  757. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_text_visibility.py +0 -0
  758. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_titles.py +0 -0
  759. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
  760. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_round2_annotations.py +0 -0
  761. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_round3_annotations.py +0 -0
  762. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_rtf.py +0 -0
  763. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_rule_generalization.py +0 -0
  764. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_shared_helpers.py +0 -0
  765. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_spatial_evidence.py +0 -0
  766. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
  767. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_guess_suffix_ole2.py +0 -0
  768. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_guess_suffix_ooxml.py +0 -0
  769. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_html_css_build.py +0 -0
  770. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_html_render.py +0 -0
  771. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_html_security.py +0 -0
  772. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
  773. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_latex_render.py +0 -0
  774. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_markdown_render.py +0 -0
  775. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_middle_json_block_models.py +0 -0
  776. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_middle_json_export.py +0 -0
  777. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_middle_json_validator.py +0 -0
  778. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_model_json.py +0 -0
  779. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table.py +0 -0
  780. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
  781. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
  782. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
  783. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
  784. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_native_table_performance_equivalence.py +0 -0
  785. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_ofd_assembly.py +0 -0
  786. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_ofd_vector_tables.py +0 -0
  787. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_demo_exports.py +0 -0
  788. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_demo_pages.py +0 -0
  789. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_image_alt_text.py +0 -0
  790. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_parser_regressions.py +0 -0
  791. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_office_robust_fixtures.py +0 -0
  792. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_cjk_objects.py +0 -0
  793. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_cjk_style.py +0 -0
  794. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_cjk_wrapping.py +0 -0
  795. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_classify.py +0 -0
  796. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_demo_links.py +0 -0
  797. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_diagnostic_levels.py +0 -0
  798. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_document.py +0 -0
  799. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_formula_layout.py +0 -0
  800. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_object_clipping.py +0 -0
  801. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_original_layout.py +0 -0
  802. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_pagination.py +0 -0
  803. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_paragraph_cache.py +0 -0
  804. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_render.py +0 -0
  805. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
  806. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_structured_tables.py +0 -0
  807. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_table_cache.py +0 -0
  808. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_table_round2.py +0 -0
  809. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_text_dedup.py +0 -0
  810. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_text_styles.py +0 -0
  811. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_title_font_plan.py +0 -0
  812. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_title_space.py +0 -0
  813. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_pdf_visualization.py +0 -0
  814. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_page_blocks.py +0 -0
  815. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_pages.py +0 -0
  816. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_paragraphs.py +0 -0
  817. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_postprocess_visual.py +0 -0
  818. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_api.py +0 -0
  819. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_html_table.py +0 -0
  820. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_image_renderer.py +0 -0
  821. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_render_list_index_utils.py +0 -0
  822. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_structured_content_render.py +0 -0
  823. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_svg_raster.py +0 -0
  824. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_table_merge.py +0 -0
  825. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_table_merge_cell_merge.py +0 -0
  826. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_text_block_anchor.py +0 -0
  827. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_text_boundary_rules.py +0 -0
  828. {docvortex-0.5.5 → docvortex-0.5.6}/tests/unittest/test_text_utils.py +0 -0
  829. {docvortex-0.5.5 → docvortex-0.5.6}/tools/__init__.py +0 -0
  830. {docvortex-0.5.5 → docvortex-0.5.6}/tools/build_html_css.py +0 -0
  831. {docvortex-0.5.5 → docvortex-0.5.6}/tools/calibrate_pdf_geometry.py +0 -0
  832. {docvortex-0.5.5 → docvortex-0.5.6}/tools/capture_baseline.py +0 -0
  833. {docvortex-0.5.5 → docvortex-0.5.6}/tools/capture_platform_layout.py +0 -0
  834. {docvortex-0.5.5 → docvortex-0.5.6}/tools/compare_font_platforms.py +0 -0
  835. {docvortex-0.5.5 → docvortex-0.5.6}/tools/font_geometry.py +0 -0
  836. {docvortex-0.5.5 → docvortex-0.5.6}/tools/verify_native_abi.py +0 -0
  837. {docvortex-0.5.5 → docvortex-0.5.6}/tools/verify_native_wheel.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docvortex
3
- Version: 0.5.5
3
+ Version: 0.5.6
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
@@ -1,6 +1,6 @@
1
1
  //! 不访问 Python 对象或 PDFium 的单线程批量计算内核。
2
2
 
3
- pub const PROTOCOL_VERSION: u32 = 23;
3
+ pub const PROTOCOL_VERSION: u32 = 24;
4
4
  pub mod columns;
5
5
  pub mod note_index;
6
6
  pub mod row_geometry;
@@ -0,0 +1,282 @@
1
+ //! 在受支持的简单描边页上批量提取轴向线,复杂对象交由 Python 参考实现。
2
+
3
+ use crate::{objects, ReadError};
4
+ use std::ffi::{c_float, c_int, c_uint, c_void};
5
+ use std::sync::Mutex;
6
+ use std::time::Instant;
7
+
8
+ pub type Line = ((f64, f64), (f64, f64), (f64, f64, f64, f64), f64, i32);
9
+ static LAST_STAGE_NS: Mutex<(u64, u64, u64)> = Mutex::new((0, 0, 0));
10
+
11
+ /// 返回最近一次启用绘图线剖析后的对象读取、线段读取和几何计算纳秒数。
12
+ pub fn stage_stats() -> (u64, u64, u64) {
13
+ *LAST_STAGE_NS
14
+ .lock()
15
+ .unwrap_or_else(|poisoned| poisoned.into_inner())
16
+ }
17
+
18
+ type Segment = *mut c_void;
19
+ type Object = *mut c_void;
20
+ type CountFn = unsafe extern "system" fn(Object) -> c_int;
21
+ type GetFn = unsafe extern "system" fn(Object, c_int) -> Segment;
22
+ type PointFn = unsafe extern "system" fn(Segment, *mut c_float, *mut c_float) -> c_int;
23
+ type SegmentFlagFn = unsafe extern "system" fn(Segment) -> c_int;
24
+ type DrawModeFn = unsafe extern "system" fn(Object, *mut c_int, *mut c_int) -> c_int;
25
+ type StrokeColorFn =
26
+ unsafe extern "system" fn(Object, *mut c_uint, *mut c_uint, *mut c_uint, *mut c_uint) -> c_int;
27
+ type StrokeWidthFn = unsafe extern "system" fn(Object, *mut c_float) -> c_int;
28
+
29
+ struct Api {
30
+ count: CountFn,
31
+ get: GetFn,
32
+ point: PointFn,
33
+ kind: SegmentFlagFn,
34
+ closes: SegmentFlagFn,
35
+ draw_mode: DrawModeFn,
36
+ stroke_color: StrokeColorFn,
37
+ stroke_width: StrokeWidthFn,
38
+ }
39
+
40
+ /// 按 Python 页面视觉坐标规则变换点,运算顺序与参考路径一致。
41
+ fn visual_point(point: (f64, f64), bbox: [f64; 4], rotation: i32) -> (f64, f64) {
42
+ let (x, y) = point;
43
+ let [left, bottom, right, top] = bbox;
44
+ match rotation {
45
+ 90 => (y - bottom, x - left),
46
+ 180 => (right - x, y - bottom),
47
+ 270 => (top - y, right - x),
48
+ _ => (x - left, top - y),
49
+ }
50
+ }
51
+
52
+ /// 对单个线段应用与 Python `_make_axis_drawing_line` 相同的轴线和页面裁剪判断。
53
+ fn axis_line(
54
+ raw_start: (f64, f64),
55
+ raw_end: (f64, f64),
56
+ stroke_width: f64,
57
+ bbox: [f64; 4],
58
+ rotation: i32,
59
+ ) -> Option<Line> {
60
+ let start = visual_point(raw_start, bbox, rotation);
61
+ let end = visual_point(raw_end, bbox, rotation);
62
+ let (page_width, page_height) = if rotation == 90 || rotation == 270 {
63
+ (bbox[3] - bbox[1], bbox[2] - bbox[0])
64
+ } else {
65
+ (bbox[2] - bbox[0], bbox[3] - bbox[1])
66
+ };
67
+ let (x0, y0) = start;
68
+ let (x1, y1) = end;
69
+ if ![x0, y0, x1, y1, stroke_width].iter().all(|v| v.is_finite()) {
70
+ return None;
71
+ }
72
+ let delta_x = (x1 - x0).abs();
73
+ let delta_y = (y1 - y0).abs();
74
+ if delta_x >= delta_y && delta_y <= 1.0_f64.max(delta_x * 0.02) {
75
+ let coordinate = (y0 + y1) / 2.0;
76
+ if coordinate < 0.0 || coordinate > page_height {
77
+ return None;
78
+ }
79
+ let main_start = 0.0_f64.max(x0.min(x1));
80
+ let main_end = page_width.min(x0.max(x1));
81
+ if main_end - main_start < 1.0 {
82
+ return None;
83
+ }
84
+ let width = 0.0_f64.max(stroke_width).max(delta_y);
85
+ let half_width = width / 2.0;
86
+ return Some((
87
+ (main_start, coordinate),
88
+ (main_end, coordinate),
89
+ (
90
+ main_start,
91
+ 0.0_f64.max(coordinate - half_width),
92
+ main_end,
93
+ page_height.min(coordinate + half_width),
94
+ ),
95
+ width,
96
+ 0,
97
+ ));
98
+ }
99
+ if delta_y > delta_x && delta_x <= 1.0_f64.max(delta_y * 0.02) {
100
+ let coordinate = (x0 + x1) / 2.0;
101
+ if coordinate < 0.0 || coordinate > page_width {
102
+ return None;
103
+ }
104
+ let main_start = 0.0_f64.max(y0.min(y1));
105
+ let main_end = page_height.min(y0.max(y1));
106
+ if main_end - main_start < 1.0 {
107
+ return None;
108
+ }
109
+ let width = 0.0_f64.max(stroke_width).max(delta_x);
110
+ let half_width = width / 2.0;
111
+ return Some((
112
+ (coordinate, main_start),
113
+ (coordinate, main_end),
114
+ (
115
+ 0.0_f64.max(coordinate - half_width),
116
+ main_start,
117
+ page_width.min(coordinate + half_width),
118
+ main_end,
119
+ ),
120
+ width,
121
+ 1,
122
+ ));
123
+ }
124
+ None
125
+ }
126
+
127
+ /// 仅在显式剖析时测量轴线判定,常规路径不增加计时器开销。
128
+ fn measured_axis_line(
129
+ start: (f64, f64),
130
+ end: (f64, f64),
131
+ width: f64,
132
+ bbox: [f64; 4],
133
+ rotation: i32,
134
+ profile: bool,
135
+ geometry_ns: &mut u64,
136
+ ) -> Option<Line> {
137
+ if !profile {
138
+ return axis_line(start, end, width, bbox, rotation);
139
+ }
140
+ let started = Instant::now();
141
+ let result = axis_line(start, end, width, bbox, rotation);
142
+ *geometry_ns += started.elapsed().as_nanos() as u64;
143
+ result
144
+ }
145
+
146
+ /// 只在所有 Path 都是无矩阵、无裁剪、无填充的描边时返回原生线;其他页整体回退。
147
+ ///
148
+ /// # Safety
149
+ /// 调用方须验证全部 PDFium ABI,持有页面及同库函数引用,并在全局锁内调用。
150
+ pub unsafe fn read_fast_lines(
151
+ addresses: Vec<usize>,
152
+ handle: usize,
153
+ bbox: [f64; 4],
154
+ rotation: i32,
155
+ ) -> Result<Option<Vec<Line>>, ReadError> {
156
+ if addresses.len() != 19
157
+ || addresses.contains(&0)
158
+ || handle == 0
159
+ || ![0, 90, 180, 270].contains(&rotation)
160
+ {
161
+ return Err(ReadError::InvalidInput(
162
+ "invalid drawing line bridge arguments",
163
+ ));
164
+ }
165
+ if !bbox.iter().all(|value| value.is_finite()) || bbox[2] <= bbox[0] || bbox[3] <= bbox[1] {
166
+ return Ok(None);
167
+ }
168
+ let api = Api {
169
+ count: std::mem::transmute::<usize, CountFn>(addresses[11]),
170
+ get: std::mem::transmute::<usize, GetFn>(addresses[12]),
171
+ point: std::mem::transmute::<usize, PointFn>(addresses[13]),
172
+ kind: std::mem::transmute::<usize, SegmentFlagFn>(addresses[14]),
173
+ closes: std::mem::transmute::<usize, SegmentFlagFn>(addresses[15]),
174
+ draw_mode: std::mem::transmute::<usize, DrawModeFn>(addresses[16]),
175
+ stroke_color: std::mem::transmute::<usize, StrokeColorFn>(addresses[17]),
176
+ stroke_width: std::mem::transmute::<usize, StrokeWidthFn>(addresses[18]),
177
+ };
178
+ let profile = std::env::var_os("DOCVORTEX_PROFILE_DRAWING_LINES").is_some();
179
+ let object_started = Instant::now();
180
+ let objects = objects::read_objects(addresses[..11].to_vec(), handle, 2, 15)?;
181
+ let object_ns = if profile {
182
+ object_started.elapsed().as_nanos() as u64
183
+ } else {
184
+ 0
185
+ };
186
+ let path_started = Instant::now();
187
+ let mut geometry_ns = 0_u64;
188
+ let mut lines = Vec::new();
189
+ for (address, matrix, _parent, depth, clip) in objects {
190
+ if depth != 0 || clip.is_some() || matrix != [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] {
191
+ return Ok(None);
192
+ }
193
+ let raw = address as Object;
194
+ let (mut fill_mode, mut stroke) = (0, 0);
195
+ if (api.draw_mode)(raw, &mut fill_mode, &mut stroke) == 0 {
196
+ continue;
197
+ }
198
+ if fill_mode != 0 {
199
+ return Ok(None);
200
+ }
201
+ if stroke == 0 {
202
+ continue;
203
+ }
204
+ let (mut red, mut green, mut blue, mut alpha) = (0, 0, 0, 255);
205
+ if (api.stroke_color)(raw, &mut red, &mut green, &mut blue, &mut alpha) != 0 && alpha == 0 {
206
+ continue;
207
+ }
208
+ let mut raw_width: c_float = 0.0;
209
+ let width = if (api.stroke_width)(raw, &mut raw_width) != 0 {
210
+ let value = f64::from(raw_width).abs();
211
+ if value.is_finite() {
212
+ value
213
+ } else {
214
+ 0.0
215
+ }
216
+ } else {
217
+ 0.0
218
+ };
219
+ let mut current: Option<(f64, f64)> = None;
220
+ let mut subpath_start: Option<(f64, f64)> = None;
221
+ for index in 0..(api.count)(raw).max(0) {
222
+ let segment = (api.get)(raw, index);
223
+ if segment.is_null() {
224
+ continue;
225
+ }
226
+ let (mut x, mut y) = (0.0, 0.0);
227
+ if (api.point)(segment, &mut x, &mut y) == 0 {
228
+ continue;
229
+ }
230
+ let point = (f64::from(x), f64::from(y));
231
+ let segment_type = (api.kind)(segment);
232
+ if segment_type == 2 {
233
+ current = Some(point);
234
+ subpath_start = Some(point);
235
+ } else if let Some(previous) = current {
236
+ if segment_type == 0 {
237
+ if let Some(line) = measured_axis_line(
238
+ previous,
239
+ point,
240
+ width,
241
+ bbox,
242
+ rotation,
243
+ profile,
244
+ &mut geometry_ns,
245
+ ) {
246
+ lines.push(line);
247
+ }
248
+ }
249
+ current = Some(point);
250
+ } else {
251
+ current = Some(point);
252
+ subpath_start = Some(point);
253
+ }
254
+ if (api.closes)(segment) != 0 {
255
+ if let (Some(last), Some(first)) = (current, subpath_start) {
256
+ if last != first {
257
+ if let Some(line) = measured_axis_line(
258
+ last,
259
+ first,
260
+ width,
261
+ bbox,
262
+ rotation,
263
+ profile,
264
+ &mut geometry_ns,
265
+ ) {
266
+ lines.push(line);
267
+ }
268
+ }
269
+ current = Some(first);
270
+ }
271
+ }
272
+ }
273
+ }
274
+ if profile {
275
+ let segment_ns = (path_started.elapsed().as_nanos() as u64).saturating_sub(geometry_ns);
276
+ *LAST_STAGE_NS
277
+ .lock()
278
+ .unwrap_or_else(|poisoned| poisoned.into_inner()) =
279
+ (object_ns, segment_ns, geometry_ns);
280
+ }
281
+ Ok(Some(lines))
282
+ }
@@ -2,6 +2,7 @@
2
2
  use std::collections::HashMap;
3
3
  use std::ffi::{c_double, c_float, c_int, c_uint, c_ulong, c_void};
4
4
  pub mod classification;
5
+ pub mod drawing_lines;
5
6
  pub mod fonts;
6
7
  pub mod objects;
7
8
  pub mod paths;
@@ -134,9 +134,10 @@ impl Api {
134
134
  continue;
135
135
  }
136
136
  let combined = multiply(matrix.values.map(f64::from), parent);
137
- let clip = self.clip_bounds(raw, parent, inherited);
138
137
  let object_kind = (self.kind)(raw);
138
+ // 类型先于裁剪判断:类型不匹配的叶子(如纯路径页上的 Path)不必读 clip。
139
139
  if object_kind == 5 {
140
+ let clip = self.clip_bounds(raw, parent, inherited);
140
141
  self.walk(
141
142
  raw,
142
143
  true,
@@ -148,6 +149,7 @@ impl Api {
148
149
  output,
149
150
  );
150
151
  } else if object_kind == kind {
152
+ let clip = self.clip_bounds(raw, parent, inherited);
151
153
  output.push((raw as usize, combined, parent, depth, clip));
152
154
  }
153
155
  }
@@ -80,8 +80,14 @@ fn _native(module: &Bound<'_, PyModule>) -> PyResult<()> {
80
80
  module.add_class::<pdfium::PdfiumCharacterBatches>()?;
81
81
  module.add_class::<pdfium::PdfiumVisualCharacterBatches>()?;
82
82
  module.add_class::<pdfium::PdfiumObjectBatches>()?;
83
+ module.add_class::<pdfium::PdfiumDrawingLineBatches>()?;
83
84
  module.add_function(wrap_pyfunction!(pdfium::read_pdfium_subpaths, module)?)?;
84
85
  module.add_function(wrap_pyfunction!(pdfium::read_pdfium_objects, module)?)?;
86
+ module.add_function(wrap_pyfunction!(pdfium::read_pdfium_drawing_lines, module)?)?;
87
+ module.add_function(wrap_pyfunction!(
88
+ pdfium::pdfium_drawing_line_stage_stats,
89
+ module
90
+ )?)?;
85
91
  module.add_function(wrap_pyfunction!(
86
92
  pdfium::read_pdfium_visual_batches,
87
93
  module
@@ -96,6 +96,57 @@ pub fn read_pdfium_objects(
96
96
  })
97
97
  }
98
98
 
99
+ /// 按固定批次向 Python 物化轴线数值记录,避免整页同时持有两份大列表。
100
+ #[pyclass(module = "docvortex._native")]
101
+ pub struct PdfiumDrawingLineBatches {
102
+ records: std::vec::IntoIter<docvortex_pdfium::drawing_lines::Line>,
103
+ }
104
+
105
+ #[pymethods]
106
+ impl PdfiumDrawingLineBatches {
107
+ /// 返回当前迭代器以供页面作用域内同步消费。
108
+ fn __iter__(slf: PyRef<'_, Self>) -> PyRef<'_, Self> {
109
+ slf
110
+ }
111
+
112
+ /// 每次最多返回 1024 条线,剩余记录仍留在 Rust 内。
113
+ fn __next__(&mut self) -> Option<Vec<docvortex_pdfium::drawing_lines::Line>> {
114
+ let records: Vec<_> = self.records.by_ref().take(RECORD_BATCH_SIZE).collect();
115
+ if records.is_empty() {
116
+ None
117
+ } else {
118
+ Some(records)
119
+ }
120
+ }
121
+ }
122
+
123
+ /// 对简单描边 Path 批量提取轴线;不支持的复杂页返回 None 供参考实现处理。
124
+ #[pyfunction]
125
+ pub fn read_pdfium_drawing_lines(
126
+ addresses: Vec<usize>,
127
+ handle: usize,
128
+ bbox: [f64; 4],
129
+ rotation: i32,
130
+ ) -> PyResult<Option<PdfiumDrawingLineBatches>> {
131
+ let records = unsafe {
132
+ docvortex_pdfium::drawing_lines::read_fast_lines(addresses, handle, bbox, rotation)
133
+ }
134
+ .map_err(|error| match error {
135
+ ReadError::InvalidInput(message) => PyValueError::new_err(message),
136
+ ReadError::Pdfium(message) => PdfiumReadError::new_err(message),
137
+ ReadError::Allocation(message) => PyMemoryError::new_err(message),
138
+ })?;
139
+ Ok(records.map(|items| PdfiumDrawingLineBatches {
140
+ records: items.into_iter(),
141
+ }))
142
+ }
143
+
144
+ /// 暴露最近一次显式剖析的绘图线读取阶段耗时,单位为纳秒。
145
+ #[pyfunction]
146
+ pub fn pdfium_drawing_line_stage_stats() -> (u64, u64, u64) {
147
+ docvortex_pdfium::drawing_lines::stage_stats()
148
+ }
149
+
99
150
  type VisualRecord = (
100
151
  u32,
101
152
  f64,
@@ -10,7 +10,7 @@ from functools import lru_cache
10
10
  from pathlib import Path
11
11
  from types import ModuleType
12
12
 
13
- _PROTOCOL_VERSION = 23
13
+ _PROTOCOL_VERSION = 24
14
14
  _SELECTED_MODE = None
15
15
  _LOAD_FAILURE = None
16
16
 
@@ -49,6 +49,7 @@ def _classify_page_auxiliary_text(prepared: _PreparedPage) -> None:
49
49
  prepared.table_bboxes,
50
50
  prepared.drawing_lines,
51
51
  prepared.page_size,
52
+ prepared=prepared,
52
53
  )
53
54
  prepared.page_footnote_groups += _classify_page_footnotes(
54
55
  prepared.remaining_lines,
@@ -56,6 +57,7 @@ def _classify_page_auxiliary_text(prepared: _PreparedPage) -> None:
56
57
  prepared.drawing_lines,
57
58
  prepared.page_size,
58
59
  visual_bboxes=[block["bbox"] for block in prepared.fixed_blocks if block.get("type") == "image"],
60
+ prepared=prepared,
59
61
  )
60
62
 
61
63
 
@@ -163,6 +165,7 @@ def _classify_image_footnotes(
163
165
  page_size: tuple[float, float],
164
166
  *,
165
167
  reference_body_height: float | None = None,
168
+ prepared: _PreparedPage | None = None,
166
169
  ) -> None:
167
170
  """用图片、下缘长横线和紧凑小字的联合关系识别图表脚注。"""
168
171
 
@@ -202,12 +205,11 @@ def _classify_image_footnotes(
202
205
  body_samples = [_line_effective_height(line, bbox) for line, bbox in line_geometry]
203
206
  body_height = max(0.1, statistics.median(body_samples))
204
207
  local_images = [_rotate_bbox_to_upright(bbox, page_size, dominant_angle) for bbox in image_bboxes]
205
- local_axis_lines = _transform_axis_lines(
206
- drawing_lines,
207
- page_size,
208
- dominant_angle,
209
- )
210
-
208
+ if prepared is None:
209
+ local_axis_lines = _transform_axis_lines(drawing_lines, page_size, dominant_angle)
210
+ table_lines = _confirmed_table_horizontal_lines(local_axis_lines, table_bboxes)
211
+ else:
212
+ local_axis_lines, table_lines = _prepared_local_axis_table_lines(prepared, dominant_angle)
211
213
  matched_source_indices: set[int] = set()
212
214
  for image_bbox in local_images:
213
215
  image_width = max(0.1, image_bbox[2] - image_bbox[0])
@@ -229,8 +231,7 @@ def _classify_image_footnotes(
229
231
  and 0.0 <= axis_line.bbox[1] - row_bottom <= max(0.01 * local_page_height, 0.75 * body_height)
230
232
  and not _rule_belongs_to_confirmed_table(
231
233
  axis_line,
232
- local_axis_lines,
233
- table_bboxes,
234
+ table_lines,
234
235
  local_page_width,
235
236
  )
236
237
  ]
@@ -270,6 +271,7 @@ def _classify_deferred_image_footnotes(
270
271
  prepared.drawing_lines,
271
272
  prepared.page_size,
272
273
  reference_body_height=body_height,
274
+ prepared=prepared,
273
275
  )
274
276
 
275
277
 
@@ -361,6 +363,7 @@ def _classify_page_footnotes(
361
363
  page_size: tuple[float, float],
362
364
  *,
363
365
  visual_bboxes: list[BBox] | None = None,
366
+ prepared: _PreparedPage | None = None,
364
367
  ) -> list[set[int]]:
365
368
  """识别主方向页脚注,并按触发分隔线返回来源编号分组。"""
366
369
 
@@ -401,11 +404,11 @@ def _classify_page_footnotes(
401
404
  # 脚注分隔线应对齐稳定栏锚点,不能被页眉或跨栏关键词的宽行扩张污染。
402
405
  recalculate_intervals=False,
403
406
  )
404
- local_axis_lines = _transform_axis_lines(
405
- drawing_lines,
406
- page_size,
407
- dominant_angle,
408
- )
407
+ if prepared is None:
408
+ local_axis_lines = _transform_axis_lines(drawing_lines, page_size, dominant_angle)
409
+ table_lines = _confirmed_table_horizontal_lines(local_axis_lines, table_bboxes)
410
+ else:
411
+ local_axis_lines, table_lines = _prepared_local_axis_table_lines(prepared, dominant_angle)
409
412
 
410
413
  candidate_groups: list[set[int]] = []
411
414
  visual_bboxes = visual_bboxes or []
@@ -435,8 +438,7 @@ def _classify_page_footnotes(
435
438
  # 表格边界会产生断裂横线;除框内线段外,也排除与其同高且近邻的框外线段。
436
439
  if _rule_belongs_to_confirmed_table(
437
440
  axis_line,
438
- local_axis_lines,
439
- table_bboxes,
441
+ table_lines,
440
442
  local_page_width,
441
443
  ):
442
444
  continue
@@ -535,29 +537,52 @@ def _augment_footnote_groups_with_edge_markers(
535
537
  group.add(line.source_index)
536
538
 
537
539
 
538
- def _rule_belongs_to_confirmed_table(
539
- candidate: _LocalAxisLine,
540
+ def _prepared_local_axis_table_lines(
541
+ prepared: _PreparedPage,
542
+ dominant_angle: int,
543
+ ) -> tuple[list[_LocalAxisLine], list[_LocalAxisLine]]:
544
+ """按页和主方向复用轴线变换及确认表格横线,输入身份变化时重新计算。"""
545
+
546
+ key = (dominant_angle, id(prepared.drawing_lines), id(prepared.table_bboxes))
547
+ cached = prepared.local_axis_table_cache.get(key)
548
+ if cached is not None:
549
+ return cached
550
+ local_axis_lines = _transform_axis_lines(prepared.drawing_lines, prepared.page_size, dominant_angle)
551
+ table_lines = _confirmed_table_horizontal_lines(local_axis_lines, prepared.table_bboxes)
552
+ result = (local_axis_lines, table_lines)
553
+ prepared.local_axis_table_cache[key] = result
554
+ return result
555
+
556
+
557
+ def _confirmed_table_horizontal_lines(
540
558
  local_axis_lines: list[_LocalAxisLine],
541
559
  table_bboxes: list[BBox],
560
+ ) -> list[_LocalAxisLine]:
561
+ """按页预计算与确认表格框相交的横线,供所有候选排除判断复用。"""
562
+
563
+ return [
564
+ table_line
565
+ for table_line in local_axis_lines
566
+ if table_line.orientation == "horizontal"
567
+ and any(
568
+ _bbox_intersects(
569
+ _expand_bbox(table_line.original_bbox, max(0.5, table_line.width)),
570
+ table_bbox,
571
+ )
572
+ for table_bbox in table_bboxes
573
+ )
574
+ ]
575
+
576
+
577
+ def _rule_belongs_to_confirmed_table(
578
+ candidate: _LocalAxisLine,
579
+ table_lines: list[_LocalAxisLine],
542
580
  local_page_width: float,
543
581
  ) -> bool:
544
582
  """把表格框内横线及其同高近邻断裂段一并排除,避免框外残段触发脚注。"""
545
583
 
546
- if not table_bboxes:
547
- return False
548
584
  maximum_segment_gap = 0.04 * local_page_width
549
- for table_line in local_axis_lines:
550
- if table_line.orientation != "horizontal":
551
- continue
552
- table_margin = max(0.5, table_line.width)
553
- if not any(
554
- _bbox_intersects(
555
- _expand_bbox(table_line.original_bbox, table_margin),
556
- table_bbox,
557
- )
558
- for table_bbox in table_bboxes
559
- ):
560
- continue
585
+ for table_line in table_lines:
561
586
  center_tolerance = max(1.0, candidate.width, table_line.width)
562
587
  if abs(_bbox_center_y(candidate.bbox) - _bbox_center_y(table_line.bbox)) > center_tolerance:
563
588
  continue
@@ -800,11 +825,7 @@ def _classify_rule_delimited_headers(pages: list[_PreparedPage]) -> None:
800
825
  ]
801
826
  heights = [_line_effective_height(line, bbox) for line, bbox in local_lines]
802
827
  median_height = statistics.median(heights) if heights else 1.0
803
- local_axis_lines = _transform_axis_lines(
804
- page.drawing_lines,
805
- page.page_size,
806
- dominant_angle,
807
- )
828
+ local_axis_lines, table_lines = _prepared_local_axis_table_lines(page, dominant_angle)
808
829
  candidates = [
809
830
  axis_line
810
831
  for axis_line in local_axis_lines
@@ -814,8 +835,7 @@ def _classify_rule_delimited_headers(pages: list[_PreparedPage]) -> None:
814
835
  and any(bbox[3] <= _bbox_center_y(axis_line.bbox) for bbox in header_evidence_bboxes)
815
836
  and not _rule_belongs_to_confirmed_table(
816
837
  axis_line,
817
- local_axis_lines,
818
- page.table_bboxes,
838
+ table_lines,
819
839
  local_page_width,
820
840
  )
821
841
  and not _rule_overlaps_fixed_container(
@@ -856,11 +876,7 @@ def _classify_rule_delimited_footers(pages: list[_PreparedPage]) -> None:
856
876
  local_page_width, local_page_height = local_page_size
857
877
  if local_page_width <= 0 or local_page_height <= 0:
858
878
  continue
859
- local_axis_lines = _transform_axis_lines(
860
- page.drawing_lines,
861
- page.page_size,
862
- dominant_angle,
863
- )
879
+ local_axis_lines, table_lines = _prepared_local_axis_table_lines(page, dominant_angle)
864
880
  rules = [
865
881
  rule
866
882
  for rule in local_axis_lines
@@ -869,8 +885,7 @@ def _classify_rule_delimited_footers(pages: list[_PreparedPage]) -> None:
869
885
  and rule.bbox[2] - rule.bbox[0] >= 0.2 * local_page_width
870
886
  and not _rule_belongs_to_confirmed_table(
871
887
  rule,
872
- local_axis_lines,
873
- page.table_bboxes,
888
+ table_lines,
874
889
  local_page_width,
875
890
  )
876
891
  and not _rule_overlaps_fixed_container(