mineru-next-dev 4.0.0.dev20260625__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 (339) hide show
  1. mineru/__init__.py +35 -0
  2. mineru/backend/__init__.py +1 -0
  3. mineru/backend/flash/__init__.py +1 -0
  4. mineru/backend/flash/pdf_extractor.py +48 -0
  5. mineru/backend/hybrid/__init__.py +1 -0
  6. mineru/backend/hybrid/hybrid_analyze.py +1032 -0
  7. mineru/backend/hybrid/hybrid_magic_model.py +508 -0
  8. mineru/backend/hybrid/model_output_to_middle_json.py +170 -0
  9. mineru/backend/office/__init__.py +1 -0
  10. mineru/backend/office/docx_analyze.py +60 -0
  11. mineru/backend/office/model_output_to_middle_json.py +179 -0
  12. mineru/backend/office/office_magic_model.py +794 -0
  13. mineru/backend/office/pptx_analyze.py +66 -0
  14. mineru/backend/office/xlsx_analyze.py +66 -0
  15. mineru/backend/pipeline/__init__.py +1 -0
  16. mineru/backend/pipeline/batch_analyze.py +930 -0
  17. mineru/backend/pipeline/model_init.py +391 -0
  18. mineru/backend/pipeline/model_list.py +10 -0
  19. mineru/backend/pipeline/model_output_to_middle_json.py +200 -0
  20. mineru/backend/pipeline/para_split.py +423 -0
  21. mineru/backend/pipeline/pipeline_analyze.py +368 -0
  22. mineru/backend/pipeline/pipeline_magic_model.py +525 -0
  23. mineru/backend/pipeline/pipeline_middle_json_mkcontent.py +418 -0
  24. mineru/backend/utils/__init__.py +1 -0
  25. mineru/backend/utils/boxbase.py +230 -0
  26. mineru/backend/utils/char_utils.py +55 -0
  27. mineru/backend/utils/html_image_utils.py +159 -0
  28. mineru/backend/utils/magic_model_utils.py +185 -0
  29. mineru/backend/utils/markdown_utils.py +44 -0
  30. mineru/backend/utils/middle_json_utils.py +108 -0
  31. mineru/backend/utils/ocr_det_utils.py +60 -0
  32. mineru/backend/utils/office_chart.py +973 -0
  33. mineru/backend/utils/office_image.py +199 -0
  34. mineru/backend/utils/para_block_utils.py +370 -0
  35. mineru/backend/utils/runtime_utils.py +50 -0
  36. mineru/backend/utils/span_block_fix.py +152 -0
  37. mineru/backend/utils/span_pre_proc.py +408 -0
  38. mineru/backend/utils/table_continuation.py +42 -0
  39. mineru/backend/utils/table_merge.py +1154 -0
  40. mineru/backend/utils/visual_magic_model_utils.py +708 -0
  41. mineru/backend/vlm/__init__.py +1 -0
  42. mineru/backend/vlm/model_output_to_middle_json.py +99 -0
  43. mineru/backend/vlm/utils.py +251 -0
  44. mineru/backend/vlm/vlm_analyze.py +641 -0
  45. mineru/backend/vlm/vlm_magic_model.py +368 -0
  46. mineru/backend/vlm/vlm_middle_json_mkcontent.py +366 -0
  47. mineru/cli/__init__.py +6 -0
  48. mineru/cli/commands/__init__.py +33 -0
  49. mineru/cli/commands/cleanup.py +88 -0
  50. mineru/cli/commands/config.py +199 -0
  51. mineru/cli/commands/forget.py +43 -0
  52. mineru/cli/commands/invalidate.py +45 -0
  53. mineru/cli/commands/list_resources.py +123 -0
  54. mineru/cli/commands/parse.py +402 -0
  55. mineru/cli/commands/read.py +54 -0
  56. mineru/cli/commands/scan.py +74 -0
  57. mineru/cli/commands/search.py +51 -0
  58. mineru/cli/commands/server.py +304 -0
  59. mineru/cli/commands/show.py +95 -0
  60. mineru/cli/commands/telemetry.py +80 -0
  61. mineru/cli/commands/watch.py +114 -0
  62. mineru/cli/json_errors.py +41 -0
  63. mineru/cli/main.py +210 -0
  64. mineru/cli/output.py +465 -0
  65. mineru/cli/path_utils.py +10 -0
  66. mineru/cli/telemetry.py +117 -0
  67. mineru/cli_old/__init__.py +1 -0
  68. mineru/cli_old/api_client.py +1021 -0
  69. mineru/cli_old/api_protocol.py +4 -0
  70. mineru/cli_old/api_request.py +215 -0
  71. mineru/cli_old/client.py +1179 -0
  72. mineru/cli_old/client_side_output.py +73 -0
  73. mineru/cli_old/common.py +1012 -0
  74. mineru/cli_old/fast_api.py +1470 -0
  75. mineru/cli_old/gradio_app.py +2004 -0
  76. mineru/cli_old/models_download.py +187 -0
  77. mineru/cli_old/output_paths.py +58 -0
  78. mineru/cli_old/public_http_client_policy.py +65 -0
  79. mineru/cli_old/router.py +1673 -0
  80. mineru/cli_old/visualization.py +89 -0
  81. mineru/cli_old/vlm_preload.py +85 -0
  82. mineru/cli_old/vlm_server.py +62 -0
  83. mineru/config.py +294 -0
  84. mineru/data/__init__.py +1 -0
  85. mineru/data/data_reader_writer/__init__.py +38 -0
  86. mineru/data/data_reader_writer/base.py +64 -0
  87. mineru/data/data_reader_writer/dummy.py +12 -0
  88. mineru/data/data_reader_writer/filebase.py +63 -0
  89. mineru/data/data_reader_writer/multi_bucket_s3.py +158 -0
  90. mineru/data/data_reader_writer/s3.py +73 -0
  91. mineru/data/io/__init__.py +18 -0
  92. mineru/data/io/base.py +43 -0
  93. mineru/data/io/http.py +37 -0
  94. mineru/data/io/s3.py +127 -0
  95. mineru/data/utils/__init__.py +1 -0
  96. mineru/data/utils/exceptions.py +40 -0
  97. mineru/data/utils/path_utils.py +33 -0
  98. mineru/data/utils/schemas.py +13 -0
  99. mineru/doclib/__init__.py +1 -0
  100. mineru/doclib/app.py +557 -0
  101. mineru/doclib/background/__init__.py +27 -0
  102. mineru/doclib/background/compaction.py +172 -0
  103. mineru/doclib/background/device_monitor.py +75 -0
  104. mineru/doclib/background/ingest.py +133 -0
  105. mineru/doclib/background/parse_server_health.py +192 -0
  106. mineru/doclib/background/parse_worker.py +95 -0
  107. mineru/doclib/background/scan_worker.py +69 -0
  108. mineru/doclib/background/telemetry_flush.py +40 -0
  109. mineru/doclib/background/watch.py +171 -0
  110. mineru/doclib/base.py +796 -0
  111. mineru/doclib/client.py +528 -0
  112. mineru/doclib/config_defaults.py +20 -0
  113. mineru/doclib/constants.py +67 -0
  114. mineru/doclib/core/__init__.py +17 -0
  115. mineru/doclib/core/db.py +206 -0
  116. mineru/doclib/core/file_io.py +166 -0
  117. mineru/doclib/core/fts.py +148 -0
  118. mineru/doclib/endpoint.py +114 -0
  119. mineru/doclib/locators.py +87 -0
  120. mineru/doclib/migrations/001_init.sql +180 -0
  121. mineru/doclib/migrations/__init__.py +1 -0
  122. mineru/doclib/rows.py +278 -0
  123. mineru/doclib/server.py +2078 -0
  124. mineru/doclib/services/__init__.py +41 -0
  125. mineru/doclib/services/cleanup_svc.py +219 -0
  126. mineru/doclib/services/config_svc.py +271 -0
  127. mineru/doclib/services/parse_svc.py +1425 -0
  128. mineru/doclib/services/scan_svc.py +442 -0
  129. mineru/doclib/services/search_svc.py +154 -0
  130. mineru/doclib/telemetry/__init__.py +26 -0
  131. mineru/doclib/telemetry/buckets.py +65 -0
  132. mineru/doclib/telemetry/caller.py +122 -0
  133. mineru/doclib/telemetry/constants.py +198 -0
  134. mineru/doclib/telemetry/context.py +49 -0
  135. mineru/doclib/telemetry/observation.py +16 -0
  136. mineru/doclib/telemetry/payload.py +223 -0
  137. mineru/doclib/telemetry/service.py +271 -0
  138. mineru/doclib/telemetry/store.py +234 -0
  139. mineru/doclib/telemetry/transport.py +24 -0
  140. mineru/doclib/types.py +661 -0
  141. mineru/doclib/utils/__init__.py +1 -0
  142. mineru/doclib/utils/route_utils.py +66 -0
  143. mineru/errors.py +163 -0
  144. mineru/kit/__init__.py +3 -0
  145. mineru/kit/commands/__init__.py +5 -0
  146. mineru/kit/commands/api_server.py +84 -0
  147. mineru/kit/commands/models.py +186 -0
  148. mineru/kit/commands/parse.py +92 -0
  149. mineru/kit/commands/vlm_server.py +26 -0
  150. mineru/kit/common.py +197 -0
  151. mineru/kit/errors.py +19 -0
  152. mineru/kit/main.py +126 -0
  153. mineru/kit/output.py +7 -0
  154. mineru/model/__init__.py +1 -0
  155. mineru/model/docx/__init__.py +1 -0
  156. mineru/model/docx/docx_converter.py +3315 -0
  157. mineru/model/docx/main.py +51 -0
  158. mineru/model/docx/package_normalizer.py +291 -0
  159. mineru/model/docx/tools/__init__.py +1 -0
  160. mineru/model/docx/tools/math/__init__.py +1 -0
  161. mineru/model/docx/tools/math/latex_dict.py +325 -0
  162. mineru/model/docx/tools/math/omml.py +573 -0
  163. mineru/model/docx/tools/office_xml.py +56 -0
  164. mineru/model/layout/__init__.py +1 -0
  165. mineru/model/layout/pp_doclayoutv2.py +1548 -0
  166. mineru/model/mfr/__init__.py +1 -0
  167. mineru/model/mfr/pp_formulanet_plus_m/__init__.py +1 -0
  168. mineru/model/mfr/pp_formulanet_plus_m/predict_formula.py +211 -0
  169. mineru/model/mfr/pp_formulanet_plus_m/processors.py +658 -0
  170. mineru/model/mfr/unimernet/Unimernet.py +176 -0
  171. mineru/model/mfr/unimernet/__init__.py +1 -0
  172. mineru/model/mfr/unimernet/unimernet_hf/__init__.py +14 -0
  173. mineru/model/mfr/unimernet/unimernet_hf/modeling_unimernet.py +177 -0
  174. mineru/model/mfr/unimernet/unimernet_hf/unimer_mbart/__init__.py +9 -0
  175. mineru/model/mfr/unimernet/unimernet_hf/unimer_mbart/configuration_unimer_mbart.py +163 -0
  176. mineru/model/mfr/unimernet/unimernet_hf/unimer_mbart/modeling_unimer_mbart.py +2361 -0
  177. mineru/model/mfr/unimernet/unimernet_hf/unimer_mbart/tokenization_unimer_mbart.py +1 -0
  178. mineru/model/mfr/unimernet/unimernet_hf/unimer_swin/__init__.py +10 -0
  179. mineru/model/mfr/unimernet/unimernet_hf/unimer_swin/configuration_unimer_swin.py +132 -0
  180. mineru/model/mfr/unimernet/unimernet_hf/unimer_swin/image_processing_unimer_swin.py +180 -0
  181. mineru/model/mfr/unimernet/unimernet_hf/unimer_swin/modeling_unimer_swin.py +1084 -0
  182. mineru/model/mfr/utils.py +448 -0
  183. mineru/model/ocr/__init__.py +1 -0
  184. mineru/model/ocr/pytorch_paddle.py +407 -0
  185. mineru/model/ocr/seal_crop.py +402 -0
  186. mineru/model/ocr/seal_det_warp.py +823 -0
  187. mineru/model/office_stream.py +17 -0
  188. mineru/model/pptx/__init__.py +1 -0
  189. mineru/model/pptx/main.py +19 -0
  190. mineru/model/pptx/package_normalizer.py +341 -0
  191. mineru/model/pptx/pptx_converter.py +2170 -0
  192. mineru/model/pptx/xycut_pp_sorter.py +414 -0
  193. mineru/model/table/__init__.py +1 -0
  194. mineru/model/table/cls/__init__.py +1 -0
  195. mineru/model/table/cls/mineru_table_ori_cls.py +369 -0
  196. mineru/model/table/cls/paddle_table_cls.py +149 -0
  197. mineru/model/table/rec/__init__.py +1 -0
  198. mineru/model/table/rec/onnxruntime_provider.py +50 -0
  199. mineru/model/table/rec/slanet_plus/__init__.py +1 -0
  200. mineru/model/table/rec/slanet_plus/main.py +213 -0
  201. mineru/model/table/rec/slanet_plus/matcher.py +298 -0
  202. mineru/model/table/rec/slanet_plus/matcher_utils.py +247 -0
  203. mineru/model/table/rec/slanet_plus/table_structure.py +113 -0
  204. mineru/model/table/rec/slanet_plus/table_structure_utils.py +436 -0
  205. mineru/model/table/rec/unet_table/__init__.py +1 -0
  206. mineru/model/table/rec/unet_table/main.py +364 -0
  207. mineru/model/table/rec/unet_table/table_recover.py +215 -0
  208. mineru/model/table/rec/unet_table/table_structure_unet.py +211 -0
  209. mineru/model/table/rec/unet_table/utils.py +484 -0
  210. mineru/model/table/rec/unet_table/utils_table_line_rec.py +431 -0
  211. mineru/model/table/rec/unet_table/utils_table_recover.py +845 -0
  212. mineru/model/utils/__init__.py +1 -0
  213. mineru/model/utils/pytorchocr/__init__.py +1 -0
  214. mineru/model/utils/pytorchocr/base_ocr_v20.py +40 -0
  215. mineru/model/utils/pytorchocr/data/__init__.py +9 -0
  216. mineru/model/utils/pytorchocr/data/imaug/__init__.py +49 -0
  217. mineru/model/utils/pytorchocr/data/imaug/operators.py +424 -0
  218. mineru/model/utils/pytorchocr/modeling/__init__.py +1 -0
  219. mineru/model/utils/pytorchocr/modeling/architectures/__init__.py +25 -0
  220. mineru/model/utils/pytorchocr/modeling/architectures/base_model.py +106 -0
  221. mineru/model/utils/pytorchocr/modeling/backbones/__init__.py +66 -0
  222. mineru/model/utils/pytorchocr/modeling/backbones/det_mobilenet_v3.py +270 -0
  223. mineru/model/utils/pytorchocr/modeling/backbones/rec_donut_swin.py +1278 -0
  224. mineru/model/utils/pytorchocr/modeling/backbones/rec_hgnet.py +291 -0
  225. mineru/model/utils/pytorchocr/modeling/backbones/rec_lcnetv3.py +517 -0
  226. mineru/model/utils/pytorchocr/modeling/backbones/rec_mobilenet_v3.py +137 -0
  227. mineru/model/utils/pytorchocr/modeling/backbones/rec_mv1_enhance.py +235 -0
  228. mineru/model/utils/pytorchocr/modeling/backbones/rec_pphgnetv2.py +1624 -0
  229. mineru/model/utils/pytorchocr/modeling/backbones/rec_svtrnet.py +639 -0
  230. mineru/model/utils/pytorchocr/modeling/common.py +77 -0
  231. mineru/model/utils/pytorchocr/modeling/heads/__init__.py +45 -0
  232. mineru/model/utils/pytorchocr/modeling/heads/cls_head.py +24 -0
  233. mineru/model/utils/pytorchocr/modeling/heads/det_db_head.py +110 -0
  234. mineru/model/utils/pytorchocr/modeling/heads/rec_ctc_head.py +55 -0
  235. mineru/model/utils/pytorchocr/modeling/heads/rec_multi_head.py +59 -0
  236. mineru/model/utils/pytorchocr/modeling/heads/rec_ppformulanet_head.py +1384 -0
  237. mineru/model/utils/pytorchocr/modeling/heads/rec_unimernet_head.py +2632 -0
  238. mineru/model/utils/pytorchocr/modeling/necks/__init__.py +29 -0
  239. mineru/model/utils/pytorchocr/modeling/necks/db_fpn.py +457 -0
  240. mineru/model/utils/pytorchocr/modeling/necks/intracl.py +118 -0
  241. mineru/model/utils/pytorchocr/modeling/necks/rnn.py +242 -0
  242. mineru/model/utils/pytorchocr/postprocess/__init__.py +34 -0
  243. mineru/model/utils/pytorchocr/postprocess/cls_postprocess.py +21 -0
  244. mineru/model/utils/pytorchocr/postprocess/db_postprocess.py +240 -0
  245. mineru/model/utils/pytorchocr/postprocess/rec_postprocess.py +790 -0
  246. mineru/model/utils/pytorchocr/utils/__init__.py +1 -0
  247. mineru/model/utils/pytorchocr/utils/resources/arch_config.yaml +544 -0
  248. mineru/model/utils/pytorchocr/utils/resources/dict/ka_dict.txt +153 -0
  249. mineru/model/utils/pytorchocr/utils/resources/dict/ppocr_keys_v1.txt +6623 -0
  250. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv4_doc_dict.txt +15629 -0
  251. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_arabic_dict.txt +747 -0
  252. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_cyrillic_dict.txt +850 -0
  253. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_devanagari_dict.txt +568 -0
  254. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_dict.txt +18383 -0
  255. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_el_dict.txt +354 -0
  256. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_en_dict.txt +436 -0
  257. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_eslav_dict.txt +517 -0
  258. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_korean_dict.txt +11945 -0
  259. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_latin_dict.txt +836 -0
  260. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_ta_dict.txt +513 -0
  261. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_te_dict.txt +540 -0
  262. mineru/model/utils/pytorchocr/utils/resources/dict/ppocrv5_th_dict.txt +524 -0
  263. mineru/model/utils/pytorchocr/utils/resources/models_config.yml +77 -0
  264. mineru/model/utils/pytorchocr/utils/resources/pp_formulanet_arch_config.yaml +24 -0
  265. mineru/model/utils/tools/__init__.py +1 -0
  266. mineru/model/utils/tools/infer/__init__.py +1 -0
  267. mineru/model/utils/tools/infer/predict_cls.py +107 -0
  268. mineru/model/utils/tools/infer/predict_det.py +350 -0
  269. mineru/model/utils/tools/infer/predict_rec.py +438 -0
  270. mineru/model/utils/tools/infer/predict_system.py +105 -0
  271. mineru/model/utils/tools/infer/pytorchocr_utility.py +231 -0
  272. mineru/model/vlm/__init__.py +1 -0
  273. mineru/model/vlm/lmdeploy_server.py +94 -0
  274. mineru/model/vlm/vllm_server.py +69 -0
  275. mineru/model/xlsx/__init__.py +1 -0
  276. mineru/model/xlsx/main.py +18 -0
  277. mineru/model/xlsx/package_normalizer.py +283 -0
  278. mineru/model/xlsx/xlsx_converter.py +1481 -0
  279. mineru/parser/__init__.py +191 -0
  280. mineru/parser/api_client.py +460 -0
  281. mineru/parser/api_server.py +2214 -0
  282. mineru/parser/base.py +227 -0
  283. mineru/parser/html.py +166 -0
  284. mineru/parser/office.py +73 -0
  285. mineru/parser/pdf.py +353 -0
  286. mineru/parser/tier.py +74 -0
  287. mineru/render/__init__.py +9 -0
  288. mineru/render/content_list.py +165 -0
  289. mineru/render/markdown.py +107 -0
  290. mineru/render/markdown_table.py +282 -0
  291. mineru/render/merge.py +225 -0
  292. mineru/render/merge_visual.py +228 -0
  293. mineru/render/office/__init__.py +0 -0
  294. mineru/render/office/merge.py +949 -0
  295. mineru/render/office/output.py +720 -0
  296. mineru/render/union_make.py +167 -0
  297. mineru/resources/fasttext-langdetect/lid.176.ftz +0 -0
  298. mineru/resources/gradio_app.css +430 -0
  299. mineru/resources/gradio_app.js +519 -0
  300. mineru/resources/gradio_header.html +159 -0
  301. mineru/schema/__init__.py +1 -0
  302. mineru/schema/middle_json/__init__.py +385 -0
  303. mineru/schema/middle_json/envelope.py +6 -0
  304. mineru/types.py +519 -0
  305. mineru/utils/__init__.py +1 -0
  306. mineru/utils/bbox_utils.py +56 -0
  307. mineru/utils/check_sys_env.py +39 -0
  308. mineru/utils/cli_parser.py +57 -0
  309. mineru/utils/config_reader.py +194 -0
  310. mineru/utils/cut_image.py +45 -0
  311. mineru/utils/docx_formatting.py +24 -0
  312. mineru/utils/draw_bbox.py +454 -0
  313. mineru/utils/engine_utils.py +77 -0
  314. mineru/utils/enum_class.py +20 -0
  315. mineru/utils/guess_suffix_or_lang.py +190 -0
  316. mineru/utils/hash_utils.py +30 -0
  317. mineru/utils/image_utils.py +27 -0
  318. mineru/utils/language.py +48 -0
  319. mineru/utils/llm_aided.py +381 -0
  320. mineru/utils/model_utils.py +265 -0
  321. mineru/utils/models_download_utils.py +77 -0
  322. mineru/utils/ocr_utils.py +485 -0
  323. mineru/utils/office_rich_text.py +366 -0
  324. mineru/utils/os_env_config.py +36 -0
  325. mineru/utils/pdf_classify.py +634 -0
  326. mineru/utils/pdf_document.py +186 -0
  327. mineru/utils/pdf_image_tools.py +561 -0
  328. mineru/utils/pdf_page_id.py +47 -0
  329. mineru/utils/pdf_reader.py +53 -0
  330. mineru/utils/pdf_text_tool.py +92 -0
  331. mineru/utils/pdfium_guard.py +148 -0
  332. mineru/utils/title_level_postprocess.py +65 -0
  333. mineru/version.py +1 -0
  334. mineru_next_dev-4.0.0.dev20260625.dist-info/METADATA +494 -0
  335. mineru_next_dev-4.0.0.dev20260625.dist-info/RECORD +339 -0
  336. mineru_next_dev-4.0.0.dev20260625.dist-info/WHEEL +5 -0
  337. mineru_next_dev-4.0.0.dev20260625.dist-info/entry_points.txt +4 -0
  338. mineru_next_dev-4.0.0.dev20260625.dist-info/licenses/LICENSE.md +57 -0
  339. mineru_next_dev-4.0.0.dev20260625.dist-info/top_level.txt +1 -0
mineru/__init__.py ADDED
@@ -0,0 +1,35 @@
1
+ # Copyright (c) Opendatalab. All rights reserved.
2
+ from .parser import ( # noqa: F401
3
+ DocumentParser,
4
+ DocxParser,
5
+ HtmlParser,
6
+ MinerUApiParser,
7
+ ParseResult,
8
+ PdfFlashParser,
9
+ PdfHybridParser,
10
+ PdfPipelineParser,
11
+ PdfVlmParser,
12
+ PptxParser,
13
+ XlsxParser,
14
+ parse,
15
+ )
16
+ from .types import Block, Line, PageInfo, Span # noqa: F401
17
+
18
+ __all__ = [
19
+ "Block",
20
+ "DocumentParser",
21
+ "DocxParser",
22
+ "HtmlParser",
23
+ "Line",
24
+ "MinerUApiParser",
25
+ "PageInfo",
26
+ "ParseResult",
27
+ "PdfFlashParser",
28
+ "PdfHybridParser",
29
+ "PdfPipelineParser",
30
+ "PdfVlmParser",
31
+ "PptxParser",
32
+ "Span",
33
+ "XlsxParser",
34
+ "parse",
35
+ ]
@@ -0,0 +1 @@
1
+ # Copyright (c) Opendatalab. All rights reserved.
@@ -0,0 +1 @@
1
+ # Flash tier: CPU-only lightweight PDF text extraction.
@@ -0,0 +1,48 @@
1
+ """Flash tier PDF extractor — CPU-only text extraction via pypdfium2."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import pypdfium2
6
+
7
+ from ...utils.pdfium_guard import close_pdfium_child, close_pdfium_document, open_pdfium_document, pdfium_guard
8
+
9
+
10
+ def extract_pages_text(filepath: str, start_page: int = 0, end_page: int | None = None) -> list[str]:
11
+ """Extract plain text from each PDF page, preserving empty pages."""
12
+
13
+ pdf = open_pdfium_document(pypdfium2.PdfDocument, filepath)
14
+ try:
15
+ with pdfium_guard():
16
+ total = len(pdf)
17
+ end = total if end_page is None else min(end_page, total)
18
+
19
+ pages: list[str] = []
20
+ for i in range(start_page, end):
21
+ page = None
22
+ text_page = None
23
+ try:
24
+ with pdfium_guard():
25
+ page = pdf[i]
26
+ text_page = page.get_textpage()
27
+ pages.append(text_page.get_text_range() or "")
28
+ finally:
29
+ close_pdfium_child(text_page)
30
+ close_pdfium_child(page)
31
+ return pages
32
+ finally:
33
+ close_pdfium_document(pdf)
34
+
35
+
36
+ def extract_text(filepath: str, start_page: int = 0, end_page: int | None = None) -> str:
37
+ """Extract plain text from a PDF file using pypdfium2.
38
+
39
+ Args:
40
+ filepath: Path to the PDF file.
41
+ start_page: 0-based start page (inclusive).
42
+ end_page: 0-based end page (exclusive). None means all pages.
43
+
44
+ Returns:
45
+ Extracted text as a string, one page per `\\n\\n`.
46
+ """
47
+
48
+ return "\n\n".join(text for text in extract_pages_text(filepath, start_page, end_page) if text)
@@ -0,0 +1 @@
1
+ # Copyright (c) Opendatalab. All rights reserved.