docvortex 0.2.1__py3-none-any.whl

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 (364) hide show
  1. docvortex/__init__.py +21 -0
  2. docvortex/analyzers/__init__.py +3 -0
  3. docvortex/analyzers/native/__init__.py +37 -0
  4. docvortex/analyzers/native/_shared/__init__.py +3 -0
  5. docvortex/analyzers/native/_shared/hyperlink.py +16 -0
  6. docvortex/analyzers/native/_shared/image.py +8 -0
  7. docvortex/analyzers/native/_shared/markup/__init__.py +47 -0
  8. docvortex/analyzers/native/_shared/markup/anchors.py +30 -0
  9. docvortex/analyzers/native/_shared/markup/formula.py +37 -0
  10. docvortex/analyzers/native/_shared/markup/projector.py +57 -0
  11. docvortex/analyzers/native/_shared/markup/styles.py +19 -0
  12. docvortex/analyzers/native/_shared/mathml.py +17 -0
  13. docvortex/analyzers/native/_shared/names.py +7 -0
  14. docvortex/analyzers/native/_shared/xycut.py +414 -0
  15. docvortex/analyzers/native/contracts.py +44 -0
  16. docvortex/analyzers/native/csv.py +351 -0
  17. docvortex/analyzers/native/epub/__init__.py +18 -0
  18. docvortex/analyzers/native/epub/constants.py +45 -0
  19. docvortex/analyzers/native/epub/converter.py +80 -0
  20. docvortex/analyzers/native/epub/errors.py +20 -0
  21. docvortex/analyzers/native/epub/metadata.py +31 -0
  22. docvortex/analyzers/native/epub/package.py +649 -0
  23. docvortex/analyzers/native/epub/xhtml.py +306 -0
  24. docvortex/analyzers/native/html/__init__.py +6 -0
  25. docvortex/analyzers/native/html/anchors.py +271 -0
  26. docvortex/analyzers/native/html/constants.py +25 -0
  27. docvortex/analyzers/native/html/contracts.py +7 -0
  28. docvortex/analyzers/native/html/converter.py +117 -0
  29. docvortex/analyzers/native/html/document.py +389 -0
  30. docvortex/analyzers/native/html/errors.py +12 -0
  31. docvortex/analyzers/native/html/resources.py +365 -0
  32. docvortex/analyzers/native/html/selector.py +421 -0
  33. docvortex/analyzers/native/models.py +209 -0
  34. docvortex/analyzers/native/ofd/__init__.py +14 -0
  35. docvortex/analyzers/native/ofd/constants.py +59 -0
  36. docvortex/analyzers/native/ofd/converter.py +31 -0
  37. docvortex/analyzers/native/ofd/errors.py +16 -0
  38. docvortex/analyzers/native/ofd/geometry.py +215 -0
  39. docvortex/analyzers/native/ofd/images.py +124 -0
  40. docvortex/analyzers/native/ofd/metadata.py +53 -0
  41. docvortex/analyzers/native/ofd/models.py +170 -0
  42. docvortex/analyzers/native/ofd/package.py +346 -0
  43. docvortex/analyzers/native/ofd/path.py +201 -0
  44. docvortex/analyzers/native/ofd/reading_order.py +293 -0
  45. docvortex/analyzers/native/ofd/resources.py +122 -0
  46. docvortex/analyzers/native/ofd/scene.py +347 -0
  47. docvortex/analyzers/native/ofd/table.py +240 -0
  48. docvortex/analyzers/native/ofd/text.py +521 -0
  49. docvortex/analyzers/native/office/__init__.py +3 -0
  50. docvortex/analyzers/native/office/doc/__init__.py +3 -0
  51. docvortex/analyzers/native/office/doc/bookmarks.py +81 -0
  52. docvortex/analyzers/native/office/doc/doc_converter.py +573 -0
  53. docvortex/analyzers/native/office/doc/fib.py +261 -0
  54. docvortex/analyzers/native/office/doc/fields.py +101 -0
  55. docvortex/analyzers/native/office/doc/formatting.py +171 -0
  56. docvortex/analyzers/native/office/doc/images.py +162 -0
  57. docvortex/analyzers/native/office/doc/lists.py +356 -0
  58. docvortex/analyzers/native/office/doc/models.py +164 -0
  59. docvortex/analyzers/native/office/doc/parser.py +851 -0
  60. docvortex/analyzers/native/office/doc/pieces.py +256 -0
  61. docvortex/analyzers/native/office/doc/records.py +40 -0
  62. docvortex/analyzers/native/office/doc/sprm.py +269 -0
  63. docvortex/analyzers/native/office/doc/styles.py +215 -0
  64. docvortex/analyzers/native/office/docx/__init__.py +3 -0
  65. docvortex/analyzers/native/office/docx/context.py +71 -0
  66. docvortex/analyzers/native/office/docx/docx_converter.py +614 -0
  67. docvortex/analyzers/native/office/docx/equationxml.py +119 -0
  68. docvortex/analyzers/native/office/docx/fields.py +816 -0
  69. docvortex/analyzers/native/office/docx/formatting_types.py +23 -0
  70. docvortex/analyzers/native/office/docx/main.py +50 -0
  71. docvortex/analyzers/native/office/docx/numbering.py +491 -0
  72. docvortex/analyzers/native/office/docx/office_xml.py +57 -0
  73. docvortex/analyzers/native/office/docx/package_normalizer.py +248 -0
  74. docvortex/analyzers/native/office/docx/resources.py +526 -0
  75. docvortex/analyzers/native/office/docx/styles.py +693 -0
  76. docvortex/analyzers/native/office/docx/tables.py +515 -0
  77. docvortex/analyzers/native/office/equation/__init__.py +3 -0
  78. docvortex/analyzers/native/office/equation/image.py +470 -0
  79. docvortex/analyzers/native/office/equation/latex_dict.py +324 -0
  80. docvortex/analyzers/native/office/equation/mtef.py +885 -0
  81. docvortex/analyzers/native/office/equation/mtef_v5.py +941 -0
  82. docvortex/analyzers/native/office/equation/omml.py +561 -0
  83. docvortex/analyzers/native/office/equation/ooxml.py +62 -0
  84. docvortex/analyzers/native/office/errors.py +33 -0
  85. docvortex/analyzers/native/office/image.py +307 -0
  86. docvortex/analyzers/native/office/legacy/__init__.py +3 -0
  87. docvortex/analyzers/native/office/legacy/binary.py +43 -0
  88. docvortex/analyzers/native/office/legacy/officeart.py +362 -0
  89. docvortex/analyzers/native/office/legacy/ole.py +110 -0
  90. docvortex/analyzers/native/office/limits.py +12 -0
  91. docvortex/analyzers/native/office/odf/__init__.py +3 -0
  92. docvortex/analyzers/native/office/odf/chart.py +76 -0
  93. docvortex/analyzers/native/office/odf/constants.py +70 -0
  94. docvortex/analyzers/native/office/odf/converters.py +403 -0
  95. docvortex/analyzers/native/office/odf/errors.py +18 -0
  96. docvortex/analyzers/native/office/odf/metadata.py +91 -0
  97. docvortex/analyzers/native/office/odf/models.py +176 -0
  98. docvortex/analyzers/native/office/odf/package.py +270 -0
  99. docvortex/analyzers/native/office/odf/styles.py +329 -0
  100. docvortex/analyzers/native/office/odf/table.py +469 -0
  101. docvortex/analyzers/native/office/odf/text.py +1002 -0
  102. docvortex/analyzers/native/office/ooxml_chart.py +1016 -0
  103. docvortex/analyzers/native/office/opc.py +38 -0
  104. docvortex/analyzers/native/office/ppt/__init__.py +3 -0
  105. docvortex/analyzers/native/office/ppt/models.py +118 -0
  106. docvortex/analyzers/native/office/ppt/parser.py +1895 -0
  107. docvortex/analyzers/native/office/ppt/ppt_converter.py +292 -0
  108. docvortex/analyzers/native/office/ppt/records.py +131 -0
  109. docvortex/analyzers/native/office/ppt/style_text.py +247 -0
  110. docvortex/analyzers/native/office/pptx/__init__.py +3 -0
  111. docvortex/analyzers/native/office/pptx/context.py +113 -0
  112. docvortex/analyzers/native/office/pptx/lists.py +558 -0
  113. docvortex/analyzers/native/office/pptx/main.py +20 -0
  114. docvortex/analyzers/native/office/pptx/package_normalizer.py +321 -0
  115. docvortex/analyzers/native/office/pptx/pptx_converter.py +323 -0
  116. docvortex/analyzers/native/office/pptx/resources.py +329 -0
  117. docvortex/analyzers/native/office/pptx/shapes.py +393 -0
  118. docvortex/analyzers/native/office/pptx/text_styles.py +625 -0
  119. docvortex/analyzers/native/office/pptx/titles.py +178 -0
  120. docvortex/analyzers/native/office/rich_text.py +420 -0
  121. docvortex/analyzers/native/office/rtf/__init__.py +3 -0
  122. docvortex/analyzers/native/office/rtf/converter.py +708 -0
  123. docvortex/analyzers/native/office/rtf/lexer.py +213 -0
  124. docvortex/analyzers/native/office/rtf/math.py +339 -0
  125. docvortex/analyzers/native/office/rtf/models.py +185 -0
  126. docvortex/analyzers/native/office/rtf/parser.py +1553 -0
  127. docvortex/analyzers/native/office/spreadsheet/__init__.py +3 -0
  128. docvortex/analyzers/native/office/spreadsheet/html.py +81 -0
  129. docvortex/analyzers/native/office/spreadsheet/models.py +79 -0
  130. docvortex/analyzers/native/office/spreadsheet/projector.py +928 -0
  131. docvortex/analyzers/native/office/streams.py +18 -0
  132. docvortex/analyzers/native/office/xls/__init__.py +3 -0
  133. docvortex/analyzers/native/office/xls/chart.py +132 -0
  134. docvortex/analyzers/native/office/xls/embedded_chart.py +299 -0
  135. docvortex/analyzers/native/office/xls/models.py +109 -0
  136. docvortex/analyzers/native/office/xls/number_format.py +521 -0
  137. docvortex/analyzers/native/office/xls/parser.py +1145 -0
  138. docvortex/analyzers/native/office/xls/records.py +201 -0
  139. docvortex/analyzers/native/office/xls/strings.py +205 -0
  140. docvortex/analyzers/native/office/xls/xls_converter.py +354 -0
  141. docvortex/analyzers/native/office/xlsx/__init__.py +3 -0
  142. docvortex/analyzers/native/office/xlsx/main.py +20 -0
  143. docvortex/analyzers/native/office/xlsx/ooxml_ole.py +522 -0
  144. docvortex/analyzers/native/office/xlsx/package_normalizer.py +310 -0
  145. docvortex/analyzers/native/office/xlsx/xlsx_converter.py +716 -0
  146. docvortex/analyzers/native/pdf/__init__.py +3 -0
  147. docvortex/analyzers/native/pdf/auxiliary_text.py +1671 -0
  148. docvortex/analyzers/native/pdf/char_geometry.py +1662 -0
  149. docvortex/analyzers/native/pdf/code_blocks.py +535 -0
  150. docvortex/analyzers/native/pdf/formulas.py +1985 -0
  151. docvortex/analyzers/native/pdf/geometry.py +281 -0
  152. docvortex/analyzers/native/pdf/graphics.py +1501 -0
  153. docvortex/analyzers/native/pdf/index_blocks.py +268 -0
  154. docvortex/analyzers/native/pdf/inline/__init__.py +3 -0
  155. docvortex/analyzers/native/pdf/inline/common.py +112 -0
  156. docvortex/analyzers/native/pdf/inline/detection.py +590 -0
  157. docvortex/analyzers/native/pdf/inline/matching.py +1185 -0
  158. docvortex/analyzers/native/pdf/inline/materialize.py +457 -0
  159. docvortex/analyzers/native/pdf/inline/scripts.py +975 -0
  160. docvortex/analyzers/native/pdf/inline/types.py +385 -0
  161. docvortex/analyzers/native/pdf/line_layout.py +1106 -0
  162. docvortex/analyzers/native/pdf/line_merging.py +1223 -0
  163. docvortex/analyzers/native/pdf/models.py +246 -0
  164. docvortex/analyzers/native/pdf/native_text.py +1004 -0
  165. docvortex/analyzers/native/pdf/pipeline.py +1390 -0
  166. docvortex/analyzers/native/pdf/script_geometry.py +636 -0
  167. docvortex/analyzers/native/pdf/shared.py +30 -0
  168. docvortex/analyzers/native/pdf/spatial_text.py +383 -0
  169. docvortex/analyzers/native/pdf/table_annotations.py +446 -0
  170. docvortex/analyzers/native/pdf/table_constants.py +48 -0
  171. docvortex/analyzers/native/pdf/table_detection.py +227 -0
  172. docvortex/analyzers/native/pdf/table_filled_grid.py +218 -0
  173. docvortex/analyzers/native/pdf/table_geometry.py +40 -0
  174. docvortex/analyzers/native/pdf/table_materialization.py +444 -0
  175. docvortex/analyzers/native/pdf/table_recovery/__init__.py +15 -0
  176. docvortex/analyzers/native/pdf/table_recovery/candidate.py +356 -0
  177. docvortex/analyzers/native/pdf/table_recovery/contracts.py +154 -0
  178. docvortex/analyzers/native/pdf/table_recovery/engine.py +609 -0
  179. docvortex/analyzers/native/pdf/table_recovery/geometry.py +164 -0
  180. docvortex/analyzers/native/pdf/table_recovery/sparse_common.py +85 -0
  181. docvortex/analyzers/native/pdf/table_recovery/sparse_hybrid.py +804 -0
  182. docvortex/analyzers/native/pdf/table_recovery/sparse_multiline.py +1122 -0
  183. docvortex/analyzers/native/pdf/table_recovery/text.py +414 -0
  184. docvortex/analyzers/native/pdf/table_recovery/text_grid.py +618 -0
  185. docvortex/analyzers/native/pdf/table_recovery/vector.py +1931 -0
  186. docvortex/analyzers/native/pdf/table_rows.py +34 -0
  187. docvortex/analyzers/native/pdf/table_rules.py +1129 -0
  188. docvortex/analyzers/native/pdf/table_text_styles.py +283 -0
  189. docvortex/analyzers/native/pdf/tables.py +147 -0
  190. docvortex/analyzers/native/pdf/text_assembly/__init__.py +3 -0
  191. docvortex/analyzers/native/pdf/text_assembly/annotations.py +581 -0
  192. docvortex/analyzers/native/pdf/text_assembly/assembly.py +292 -0
  193. docvortex/analyzers/native/pdf/text_assembly/common.py +477 -0
  194. docvortex/analyzers/native/pdf/text_assembly/footnotes.py +394 -0
  195. docvortex/analyzers/native/pdf/text_assembly/merging.py +1274 -0
  196. docvortex/analyzers/native/pdf/text_assembly/rows.py +692 -0
  197. docvortex/analyzers/native/pdf/text_blocks.py +82 -0
  198. docvortex/analyzers/native/pdf/text_styles.py +55 -0
  199. docvortex/analyzers/native/pdf/title_analysis/__init__.py +3 -0
  200. docvortex/analyzers/native/pdf/title_analysis/body_profile.py +215 -0
  201. docvortex/analyzers/native/pdf/title_analysis/common.py +117 -0
  202. docvortex/analyzers/native/pdf/title_analysis/document_profile.py +164 -0
  203. docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +758 -0
  204. docvortex/analyzers/native/pdf/title_analysis/page_titles.py +1024 -0
  205. docvortex/analyzers/native/pdf/title_analysis/prototype.py +194 -0
  206. docvortex/analyzers/native/pdf/title_analysis/structural.py +1081 -0
  207. docvortex/analyzers/native/pdf/titles.py +75 -0
  208. docvortex/analyzers/native/pdf/typography.py +19 -0
  209. docvortex/analyzers/native/pdf/visual_annotations.py +1262 -0
  210. docvortex/api.py +180 -0
  211. docvortex/assets/__init__.py +5 -0
  212. docvortex/assets/store.py +51 -0
  213. docvortex/cli.py +54 -0
  214. docvortex/codecs/__init__.py +3 -0
  215. docvortex/codecs/html/__init__.py +22 -0
  216. docvortex/codecs/html/contracts.py +236 -0
  217. docvortex/codecs/html/materializer.py +331 -0
  218. docvortex/codecs/html/parser.py +763 -0
  219. docvortex/codecs/html/resources.py +34 -0
  220. docvortex/codecs/json.py +17 -0
  221. docvortex/content/__init__.py +5 -0
  222. docvortex/content/inline.py +248 -0
  223. docvortex/content/markup/__init__.py +44 -0
  224. docvortex/content/markup/anchors.py +188 -0
  225. docvortex/content/markup/formula.py +280 -0
  226. docvortex/content/markup/projector.py +1237 -0
  227. docvortex/content/markup/styles.py +327 -0
  228. docvortex/content/mathml.py +167 -0
  229. docvortex/content/normalization.py +188 -0
  230. docvortex/content/spans.py +183 -0
  231. docvortex/content/table/__init__.py +18 -0
  232. docvortex/content/table/blocks.py +152 -0
  233. docvortex/content/table/content.py +425 -0
  234. docvortex/content/table/document.py +104 -0
  235. docvortex/content/table/html.py +399 -0
  236. docvortex/content/table/models.py +76 -0
  237. docvortex/content/table/rules.py +42 -0
  238. docvortex/content/table/structure.py +221 -0
  239. docvortex/content/tree.py +5 -0
  240. docvortex/document/__init__.py +3 -0
  241. docvortex/document/contracts.py +22 -0
  242. docvortex/document/detection.py +389 -0
  243. docvortex/document/filetypes.py +175 -0
  244. docvortex/document/page_range.py +167 -0
  245. docvortex/document/pdf/__init__.py +19 -0
  246. docvortex/document/pdf/classify.py +1138 -0
  247. docvortex/document/pdf/constants.py +132 -0
  248. docvortex/document/pdf/diagnostics.py +350 -0
  249. docvortex/document/pdf/document.py +582 -0
  250. docvortex/document/pdf/font_runtime.py +335 -0
  251. docvortex/document/pdf/geometry.py +31 -0
  252. docvortex/document/pdf/images.py +654 -0
  253. docvortex/document/pdf/native_annotations.py +367 -0
  254. docvortex/document/pdf/native_contracts.py +169 -0
  255. docvortex/document/pdf/native_coordinates.py +216 -0
  256. docvortex/document/pdf/native_lifecycle.py +16 -0
  257. docvortex/document/pdf/native_objects.py +902 -0
  258. docvortex/document/pdf/native_text_geometry.py +315 -0
  259. docvortex/document/pdf/pdfium.py +325 -0
  260. docvortex/document/pdf/raster.py +46 -0
  261. docvortex/document/pdf/text/__init__.py +62 -0
  262. docvortex/document/pdf/text/contracts.py +211 -0
  263. docvortex/document/pdf/text/extract.py +165 -0
  264. docvortex/document/pdf/text/geometry.py +16 -0
  265. docvortex/document/pdf/text/groups.py +162 -0
  266. docvortex/document/pdf/visual_geometry.py +201 -0
  267. docvortex/document/pdf/visuals.py +343 -0
  268. docvortex/document/source.py +92 -0
  269. docvortex/errors.py +21 -0
  270. docvortex/export/__init__.py +3 -0
  271. docvortex/export/bundle.py +98 -0
  272. docvortex/export/files.py +66 -0
  273. docvortex/export/middle.py +208 -0
  274. docvortex/foundation/__init__.py +3 -0
  275. docvortex/foundation/geometry.py +125 -0
  276. docvortex/foundation/hyperlink.py +65 -0
  277. docvortex/foundation/image.py +48 -0
  278. docvortex/foundation/image_encoding.py +30 -0
  279. docvortex/foundation/image_payload.py +280 -0
  280. docvortex/foundation/language.py +92 -0
  281. docvortex/foundation/platform.py +38 -0
  282. docvortex/foundation/text.py +153 -0
  283. docvortex/foundation/type_identity.py +20 -0
  284. docvortex/foundation/xml_names.py +20 -0
  285. docvortex/options.py +30 -0
  286. docvortex/postprocess/__init__.py +3 -0
  287. docvortex/postprocess/content.py +53 -0
  288. docvortex/postprocess/document.py +19 -0
  289. docvortex/postprocess/lists.py +236 -0
  290. docvortex/postprocess/page_blocks.py +214 -0
  291. docvortex/postprocess/pages.py +95 -0
  292. docvortex/postprocess/paragraphs.py +580 -0
  293. docvortex/postprocess/visual.py +715 -0
  294. docvortex/render/__init__.py +48 -0
  295. docvortex/render/_internal/__init__.py +3 -0
  296. docvortex/render/_internal/common/__init__.py +3 -0
  297. docvortex/render/_internal/common/context.py +43 -0
  298. docvortex/render/_internal/common/html_table.py +178 -0
  299. docvortex/render/_internal/common/index.py +33 -0
  300. docvortex/render/_internal/common/list_items.py +158 -0
  301. docvortex/render/_internal/common/planner.py +140 -0
  302. docvortex/render/_internal/docx/__init__.py +3 -0
  303. docvortex/render/_internal/docx/assets.py +202 -0
  304. docvortex/render/_internal/docx/inline.py +434 -0
  305. docvortex/render/_internal/docx/math.py +220 -0
  306. docvortex/render/_internal/docx/renderer.py +905 -0
  307. docvortex/render/_internal/docx/styles.py +195 -0
  308. docvortex/render/_internal/docx/table.py +442 -0
  309. docvortex/render/_internal/epub/__init__.py +5 -0
  310. docvortex/render/_internal/epub/assets.py +173 -0
  311. docvortex/render/_internal/epub/package.py +249 -0
  312. docvortex/render/_internal/epub/renderer.py +1156 -0
  313. docvortex/render/_internal/html/__init__.py +3 -0
  314. docvortex/render/_internal/html/inline.py +346 -0
  315. docvortex/render/_internal/html/renderer.py +1041 -0
  316. docvortex/render/_internal/html/sanitizer.py +478 -0
  317. docvortex/render/_internal/html/table.py +121 -0
  318. docvortex/render/_internal/latex/__init__.py +1 -0
  319. docvortex/render/_internal/latex/assets.py +85 -0
  320. docvortex/render/_internal/latex/inline.py +145 -0
  321. docvortex/render/_internal/latex/renderer.py +506 -0
  322. docvortex/render/_internal/latex/table.py +347 -0
  323. docvortex/render/_internal/markdown/__init__.py +3 -0
  324. docvortex/render/_internal/markdown/assets.py +78 -0
  325. docvortex/render/_internal/markdown/blocks.py +635 -0
  326. docvortex/render/_internal/markdown/escaping.py +51 -0
  327. docvortex/render/_internal/markdown/inline.py +260 -0
  328. docvortex/render/_internal/markdown/renderer.py +93 -0
  329. docvortex/render/_internal/markdown/table.py +281 -0
  330. docvortex/render/_internal/pdf/__init__.py +3 -0
  331. docvortex/render/_internal/pdf/assets.py +197 -0
  332. docvortex/render/_internal/pdf/formula.py +417 -0
  333. docvortex/render/_internal/pdf/inline.py +343 -0
  334. docvortex/render/_internal/pdf/renderer.py +734 -0
  335. docvortex/render/_internal/pdf/styles.py +206 -0
  336. docvortex/render/_internal/pdf/table.py +272 -0
  337. docvortex/render/_internal/structured_content/__init__.py +3 -0
  338. docvortex/render/_internal/structured_content/renderer.py +193 -0
  339. docvortex/render/api.py +199 -0
  340. docvortex/render/contracts.py +205 -0
  341. docvortex/render/docx.py +38 -0
  342. docvortex/render/epub.py +35 -0
  343. docvortex/render/fragments.py +70 -0
  344. docvortex/render/html.py +29 -0
  345. docvortex/render/latex.py +24 -0
  346. docvortex/render/markdown.py +50 -0
  347. docvortex/render/pdf.py +25 -0
  348. docvortex/render/structured_content.py +23 -0
  349. docvortex/resources/epub/docvortex.css +91 -0
  350. docvortex/resources/fasttext-langdetect/lid.176.ftz +0 -0
  351. docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
  352. docvortex/resources/fonts/NOTICE +190 -0
  353. docvortex/resources/fonts/manifest.json +9 -0
  354. docvortex/resources/html/docvortex.css +601 -0
  355. docvortex/resources/html/docvortex.min.css +1 -0
  356. docvortex/result.py +91 -0
  357. docvortex/schema.py +1141 -0
  358. docvortex/version.py +3 -0
  359. docvortex-0.2.1.dist-info/METADATA +193 -0
  360. docvortex-0.2.1.dist-info/RECORD +364 -0
  361. docvortex-0.2.1.dist-info/WHEEL +5 -0
  362. docvortex-0.2.1.dist-info/entry_points.txt +2 -0
  363. docvortex-0.2.1.dist-info/licenses/LICENSE.md +21 -0
  364. docvortex-0.2.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,385 @@
1
+ """定义原生 PDF 行内样式证据、区间及内部投影类型。"""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ from dataclasses import dataclass
7
+ from typing import Any, Literal, TypeVar
8
+
9
+ from .....schema import RAW_ALGORITHM, RAW_CAPTION, RAW_FOOTNOTE, RAW_PHONETIC, BBox, BlockType
10
+
11
+ TEXT_DECORATION_MIN_LENGTH_HEIGHT_RATIO = 1.8
12
+
13
+ STRIKETHROUGH_CENTER_TOLERANCE_HEIGHT_RATIO = 0.2
14
+
15
+ UNDERLINE_BOTTOM_TOLERANCE_HEIGHT_RATIO = 0.2
16
+
17
+ TEXT_DECORATION_MAX_WIDTH_HEIGHT_RATIO = 0.2
18
+
19
+ TEXT_DECORATION_MIN_TEXT_COVERAGE_RATIO = 0.55
20
+
21
+ TEXT_DECORATION_ENDPOINT_TOLERANCE_HEIGHT_RATIO = 0.5
22
+
23
+ UNDERLINE_FRACTION_MAX_GAP_HEIGHT_RATIO = 0.15
24
+
25
+ UNDERLINE_FRACTION_MIN_LOWER_LINE_COVERAGE = 0.8
26
+
27
+ PDF_FONT_ITALIC_FLAG = 1 << 6
28
+
29
+ PDF_FONT_FORCE_BOLD_FLAG = 1 << 18
30
+
31
+ PDF_BOLD_MIN_WEIGHT = 600.0
32
+
33
+ PDF_BOLD_MIN_COMPARABLE_CHAR_COUNT = 2
34
+
35
+ PDF_LINK_CHAR_OVERLAP_THRESHOLD = 0.5
36
+
37
+ PDFTextStyle = Literal[
38
+ "bold",
39
+ "italic",
40
+ "underline",
41
+ "strikethrough",
42
+ "superscript",
43
+ "subscript",
44
+ ]
45
+
46
+ PDFScriptStyle = Literal["superscript", "subscript"]
47
+
48
+ _PDF_LINK_INTERVALS_KEY = "_inline_link_intervals"
49
+
50
+ _PDF_STYLE_INTERVALS_KEY = "_inline_style_intervals"
51
+
52
+ PDF_NATIVE_SCRIPT_MARKUP_KEY = "_pdf_native_script_markup"
53
+
54
+ _NATIVE_SCRIPT_TAG_RE = re.compile(r"<(?P<closing>/)?(?P<tag>sup|sub)>")
55
+
56
+ _PDF_INLINE_SPAN_BLOCK_TYPES = {
57
+ BlockType.TEXT,
58
+ BlockType.REF_TEXT,
59
+ BlockType.DOC_TITLE,
60
+ BlockType.PARAGRAPH_TITLE,
61
+ BlockType.HEADER,
62
+ BlockType.FOOTER,
63
+ BlockType.PAGE_NUMBER,
64
+ BlockType.ASIDE_TEXT,
65
+ BlockType.PAGE_FOOTNOTE,
66
+ BlockType.LIST,
67
+ BlockType.INDEX,
68
+ RAW_ALGORITHM,
69
+ RAW_CAPTION,
70
+ RAW_FOOTNOTE,
71
+ RAW_PHONETIC,
72
+ }
73
+
74
+ PDFTextDecoration = Literal["underline", "strikethrough"]
75
+
76
+ PDF_TEXT_STYLE_ORDER: tuple[PDFTextStyle, ...] = (
77
+ "bold",
78
+ "italic",
79
+ "underline",
80
+ "strikethrough",
81
+ "superscript",
82
+ "subscript",
83
+ )
84
+
85
+ _PDF_TEXT_DECORATION_ORDER: tuple[PDFTextDecoration, ...] = (
86
+ "underline",
87
+ "strikethrough",
88
+ )
89
+
90
+ PDF_NATURAL_TEXT_STYLE_BLOCK_TYPES = frozenset(
91
+ {
92
+ BlockType.TEXT,
93
+ BlockType.REF_TEXT,
94
+ BlockType.DOC_TITLE,
95
+ BlockType.PARAGRAPH_TITLE,
96
+ BlockType.LIST,
97
+ BlockType.INDEX,
98
+ BlockType.HEADER,
99
+ BlockType.FOOTER,
100
+ BlockType.PAGE_NUMBER,
101
+ BlockType.ASIDE_TEXT,
102
+ BlockType.PAGE_FOOTNOTE,
103
+ RAW_CAPTION,
104
+ RAW_FOOTNOTE,
105
+ }
106
+ )
107
+
108
+ _PDF_TEXT_STYLE_TARGET_BLOCK_TYPES: dict[PDFTextStyle, frozenset[str]] = {
109
+ "bold": frozenset({BlockType.TEXT}),
110
+ "italic": frozenset(),
111
+ "underline": frozenset({BlockType.TEXT}),
112
+ "strikethrough": PDF_NATURAL_TEXT_STYLE_BLOCK_TYPES,
113
+ "superscript": PDF_NATURAL_TEXT_STYLE_BLOCK_TYPES,
114
+ "subscript": PDF_NATURAL_TEXT_STYLE_BLOCK_TYPES,
115
+ }
116
+
117
+ _PDF_FONT_SUBSET_PREFIX_RE = re.compile(r"^[A-Z]{6}\+")
118
+
119
+ _PDF_BOLD_FONT_NAME_RE = re.compile(
120
+ r"bold|demi|black|heavy|(?:^|[-_,])(?:bd|bi)(?:mt)?$|gbi$|(?:^|[-_,])w[6-9]$",
121
+ re.IGNORECASE,
122
+ )
123
+
124
+ _PDF_LIST_MARKER_CHARS = frozenset("•◦‣⁃▪▫●○■□∙·▶▷►▸▹\uf0b7")
125
+
126
+ _PDF_GEOMETRIC_TEXT_STYLES = frozenset({"underline", "strikethrough"})
127
+
128
+ _PDF_CONTROL_CHAR_RE = re.compile(r"[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]")
129
+
130
+ _PDF_SEPARATOR_SPACE_CHARS = frozenset(
131
+ "\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000"
132
+ )
133
+
134
+ _PDF_ZERO_WIDTH_CHARS = frozenset({"\u200b", "\u2060", "\ufeff"})
135
+
136
+ _LIGATURE_REPLACEMENTS = {
137
+ "ff": "ff",
138
+ "fi": "fi",
139
+ "fl": "fl",
140
+ "ffi": "ffi",
141
+ "ffl": "ffl",
142
+ "ſt": "ft",
143
+ "st": "st",
144
+ }
145
+
146
+ _PDF_SCRIPT_TOKEN_CONNECTORS = frozenset({"^", "_", "ˆ", "~"})
147
+
148
+ _PDF_SCRIPT_COMPACT_JOINERS = frozenset({"-", "−", "–"})
149
+
150
+ _PDF_SCRIPT_CITATION_BRACKETS = {
151
+ "[": "]",
152
+ "[": "]",
153
+ }
154
+
155
+ _PDF_SCRIPT_AUTHOR_MARKS = frozenset({"*", "†", "‡", "∗"})
156
+
157
+ _PDF_SCRIPT_SIGN_CHARS = frozenset({"+", "-", "−", "–", "⁻", "⁺"})
158
+
159
+ _PDF_SCRIPT_SPACED_OPERATORS = frozenset({"+", "-", "−", "–"})
160
+
161
+ _PDF_SCRIPT_TRAILING_MARKS = frozenset({")", ")"})
162
+
163
+ _PDF_SCRIPT_MATH_BASE_CHARS = frozenset({"∆", "Δ", "σ", "Σ", "φ", "Φ", "μ", "µ", "Ω", "Ω", "λ", "γ", "δ", "ρ", "β", "α"})
164
+
165
+
166
+ @dataclass(frozen=True, slots=True)
167
+ class PDFTextStyleRange:
168
+ """保存可比较文本中的一个半开样式区间。"""
169
+
170
+ start: int
171
+ end: int
172
+ styles: tuple[PDFTextStyle, ...]
173
+
174
+
175
+ @dataclass(frozen=True, slots=True)
176
+ class PDFTextStyleLine:
177
+ """保存一个视觉文本 run 的几何、可比较文本和样式区间。"""
178
+
179
+ bbox: BBox
180
+ text: str
181
+ style_ranges: tuple[PDFTextStyleRange, ...]
182
+ source_index: int
183
+
184
+
185
+ @dataclass(frozen=True, slots=True)
186
+ class PDFTextScriptRange:
187
+ """保存 Flash 上下标的文本区间、页面 tight bbox 与稳定性证据。"""
188
+
189
+ start: int
190
+ end: int
191
+ style: PDFScriptStyle
192
+ bbox: BBox
193
+ stable_body_count: int
194
+ formula_region: bool
195
+
196
+
197
+ @dataclass(frozen=True, slots=True)
198
+ class PDFTextScriptLine:
199
+ """保存一个 Flash 视觉行的紧凑文本及上下标候选。"""
200
+
201
+ bbox: BBox
202
+ text: str
203
+ script_ranges: tuple[PDFTextScriptRange, ...]
204
+ source_index: int
205
+ angle: int
206
+
207
+
208
+ @dataclass(frozen=True, slots=True)
209
+ class PDFTextLinkRange:
210
+ """保存可比较文本中的一个半开超链接区间。"""
211
+
212
+ start: int
213
+ end: int
214
+ target: str
215
+
216
+
217
+ @dataclass(frozen=True, slots=True)
218
+ class PDFTextLinkLine:
219
+ """保存视觉文本 run 的几何、可比较文本和超链接区间。"""
220
+
221
+ bbox: BBox
222
+ text: str
223
+ link_ranges: tuple[PDFTextLinkRange, ...]
224
+ source_index: int
225
+
226
+
227
+ PDFTextEvidenceLine = TypeVar(
228
+ "PDFTextEvidenceLine",
229
+ PDFTextStyleLine,
230
+ PDFTextLinkLine,
231
+ PDFTextScriptLine,
232
+ )
233
+
234
+
235
+ @dataclass(frozen=True, slots=True)
236
+ class _VisibleChar:
237
+ """保存参与文本装饰线几何判断的可见字符。"""
238
+
239
+ source_index: int
240
+ bbox: BBox
241
+
242
+
243
+ @dataclass(slots=True)
244
+ class _LineCandidate:
245
+ """保存字体与文本装饰线匹配阶段使用的视觉文本行指标。"""
246
+
247
+ bbox: BBox
248
+ chars: list[dict[str, Any]]
249
+ visible_chars: list[_VisibleChar]
250
+ median_height: float
251
+ center_y: float
252
+ bottom_y: float
253
+ source_index: int
254
+ font_styles: list[frozenset[PDFTextStyle]]
255
+ decoration_ranges: dict[PDFTextDecoration, list[tuple[int, int]]]
256
+
257
+
258
+ @dataclass(frozen=True, slots=True)
259
+ class _DrawingMatch:
260
+ """保存单条 drawing 对单个文本行的匹配结果和排序指标。"""
261
+
262
+ style: PDFTextDecoration
263
+ start_index: int
264
+ end_index: int
265
+ target_distance_ratio: float
266
+ horizontal_overlap_ratio: float
267
+
268
+
269
+ @dataclass(frozen=True, slots=True)
270
+ class _ProjectedChar:
271
+ """保存 model content 可比较字符到原字符串位置的映射。"""
272
+
273
+ value: str
274
+ raw_start: int
275
+ raw_end: int
276
+ existing_styles: frozenset[PDFTextStyle]
277
+ formula_gap_before: bool
278
+ inside_hyperlink: bool
279
+
280
+
281
+ @dataclass(frozen=True, slots=True)
282
+ class _RawStyleInterval:
283
+ """保存 model content 原字符串中的半开样式区间。"""
284
+
285
+ start: int
286
+ end: int
287
+ styles: tuple[PDFTextStyle, ...]
288
+
289
+
290
+ @dataclass(frozen=True, slots=True)
291
+ class _NativeScriptMarkup:
292
+ """保存 detector-owned 上下标标签边界及对应原文样式区间。"""
293
+
294
+ marker_ranges: tuple[tuple[int, int], ...]
295
+ style_intervals: tuple[tuple[int, int, str], ...]
296
+
297
+
298
+ @dataclass(frozen=True, slots=True)
299
+ class _MatchedLinkRange:
300
+ """保存已经对齐到 block 可比较文本的链接区间与物理行身份。"""
301
+
302
+ start: int
303
+ end: int
304
+ target: str
305
+ source_index: int
306
+
307
+
308
+ @dataclass(frozen=True, slots=True)
309
+ class _RawLinkInterval:
310
+ """保存 model content 原字符串中的半开链接区间。"""
311
+
312
+ start: int
313
+ end: int
314
+ target: str
315
+ source_index: int
316
+
317
+
318
+ @dataclass(frozen=True, slots=True)
319
+ class _LineProjectionMatch:
320
+ """保存物理行跨公式空洞对齐到 block 可比较文本的结果。"""
321
+
322
+ start: int
323
+ end: int
324
+ source_to_projected: tuple[int | None, ...]
325
+
326
+
327
+ __all__ = [
328
+ "TEXT_DECORATION_MIN_LENGTH_HEIGHT_RATIO",
329
+ "STRIKETHROUGH_CENTER_TOLERANCE_HEIGHT_RATIO",
330
+ "UNDERLINE_BOTTOM_TOLERANCE_HEIGHT_RATIO",
331
+ "TEXT_DECORATION_MAX_WIDTH_HEIGHT_RATIO",
332
+ "TEXT_DECORATION_MIN_TEXT_COVERAGE_RATIO",
333
+ "TEXT_DECORATION_ENDPOINT_TOLERANCE_HEIGHT_RATIO",
334
+ "UNDERLINE_FRACTION_MAX_GAP_HEIGHT_RATIO",
335
+ "UNDERLINE_FRACTION_MIN_LOWER_LINE_COVERAGE",
336
+ "PDF_FONT_ITALIC_FLAG",
337
+ "PDF_FONT_FORCE_BOLD_FLAG",
338
+ "PDF_BOLD_MIN_WEIGHT",
339
+ "PDF_BOLD_MIN_COMPARABLE_CHAR_COUNT",
340
+ "PDF_LINK_CHAR_OVERLAP_THRESHOLD",
341
+ "PDFTextStyle",
342
+ "PDFScriptStyle",
343
+ "_PDF_LINK_INTERVALS_KEY",
344
+ "_PDF_STYLE_INTERVALS_KEY",
345
+ "PDF_NATIVE_SCRIPT_MARKUP_KEY",
346
+ "_NATIVE_SCRIPT_TAG_RE",
347
+ "_PDF_INLINE_SPAN_BLOCK_TYPES",
348
+ "PDFTextDecoration",
349
+ "PDF_TEXT_STYLE_ORDER",
350
+ "_PDF_TEXT_DECORATION_ORDER",
351
+ "PDF_NATURAL_TEXT_STYLE_BLOCK_TYPES",
352
+ "_PDF_TEXT_STYLE_TARGET_BLOCK_TYPES",
353
+ "_PDF_FONT_SUBSET_PREFIX_RE",
354
+ "_PDF_BOLD_FONT_NAME_RE",
355
+ "_PDF_LIST_MARKER_CHARS",
356
+ "_PDF_GEOMETRIC_TEXT_STYLES",
357
+ "_PDF_CONTROL_CHAR_RE",
358
+ "_PDF_SEPARATOR_SPACE_CHARS",
359
+ "_PDF_ZERO_WIDTH_CHARS",
360
+ "_LIGATURE_REPLACEMENTS",
361
+ "_PDF_SCRIPT_TOKEN_CONNECTORS",
362
+ "_PDF_SCRIPT_COMPACT_JOINERS",
363
+ "_PDF_SCRIPT_CITATION_BRACKETS",
364
+ "_PDF_SCRIPT_AUTHOR_MARKS",
365
+ "_PDF_SCRIPT_SIGN_CHARS",
366
+ "_PDF_SCRIPT_SPACED_OPERATORS",
367
+ "_PDF_SCRIPT_TRAILING_MARKS",
368
+ "_PDF_SCRIPT_MATH_BASE_CHARS",
369
+ "PDFTextStyleRange",
370
+ "PDFTextStyleLine",
371
+ "PDFTextScriptRange",
372
+ "PDFTextScriptLine",
373
+ "PDFTextLinkRange",
374
+ "PDFTextLinkLine",
375
+ "PDFTextEvidenceLine",
376
+ "_VisibleChar",
377
+ "_LineCandidate",
378
+ "_DrawingMatch",
379
+ "_ProjectedChar",
380
+ "_RawStyleInterval",
381
+ "_NativeScriptMarkup",
382
+ "_MatchedLinkRange",
383
+ "_RawLinkInterval",
384
+ "_LineProjectionMatch",
385
+ ]