edgeparse 0.1.1__tar.gz → 0.2.1__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 (228) hide show
  1. {edgeparse-0.1.1 → edgeparse-0.2.1}/Cargo.lock +163 -8
  2. {edgeparse-0.1.1 → edgeparse-0.2.1}/Cargo.toml +2 -2
  3. {edgeparse-0.1.1 → edgeparse-0.2.1}/PKG-INFO +1 -1
  4. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/Cargo.toml +7 -5
  5. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/lib.rs +103 -2
  6. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/document.rs +5 -0
  7. edgeparse-0.2.1/crates/edgeparse-core/src/output/markdown.rs +13719 -0
  8. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/mod.rs +1 -0
  9. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/loader.rs +33 -0
  10. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/mod.rs +1 -0
  11. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/raster_table_ocr.rs +797 -0
  12. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/parallel.rs +51 -12
  13. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/cluster_table_detector.rs +1046 -0
  14. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/heading_detector.rs +8 -3
  15. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/paragraph_detector.rs +47 -3
  16. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/reading_order.rs +13 -2
  17. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/text_block_grouper.rs +34 -4
  18. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/xycut.rs +172 -27
  19. edgeparse-0.2.1/crates/pdf-cos/.gitignore +12 -0
  20. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/Cargo.toml +1 -1
  21. edgeparse-0.2.1/crates/pdf-cos/assets/AnnotationDemo.pdf +0 -0
  22. edgeparse-0.2.1/crates/pdf-cos/assets/Incremental.pdf +0 -0
  23. edgeparse-0.2.1/crates/pdf-cos/assets/encrypted.pdf +0 -0
  24. edgeparse-0.2.1/crates/pdf-cos/assets/example.pdf +27 -0
  25. edgeparse-0.2.1/crates/pdf-cos/assets/unicode.pdf +0 -0
  26. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/parser/mod.rs +4 -1
  27. edgeparse-0.1.1/crates/edgeparse-core/src/output/markdown.rs +0 -3183
  28. edgeparse-0.1.1/crates/pdf-cos/.gitignore +0 -9
  29. edgeparse-0.1.1/crates/pdf-cos/Cargo.lock +0 -2262
  30. {edgeparse-0.1.1 → edgeparse-0.2.1}/README.md +0 -0
  31. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/README.md +0 -0
  32. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/api/batch.rs +0 -0
  33. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/api/config.rs +0 -0
  34. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/api/config_loader.rs +0 -0
  35. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/api/filter.rs +0 -0
  36. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/api/mod.rs +0 -0
  37. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/hybrid.rs +0 -0
  38. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/bbox.rs +0 -0
  39. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/chunks.rs +0 -0
  40. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/content.rs +0 -0
  41. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/enums.rs +0 -0
  42. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/list.rs +0 -0
  43. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/mod.rs +0 -0
  44. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/semantic.rs +0 -0
  45. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/table.rs +0 -0
  46. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/models/text.rs +0 -0
  47. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/csv.rs +0 -0
  48. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/docx.rs +0 -0
  49. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/html.rs +0 -0
  50. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/json.rs +0 -0
  51. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/legacy_json.rs +0 -0
  52. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/text.rs +0 -0
  53. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/output/toc_builder.rs +0 -0
  54. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/annotation_enrichment.rs +0 -0
  55. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/annotation_extractor.rs +0 -0
  56. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/bookmark_extractor.rs +0 -0
  57. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/chunk_parser.rs +0 -0
  58. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/data/glyphlist.txt +0 -0
  59. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/encryption.rs +0 -0
  60. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/font.rs +0 -0
  61. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/form_extractor.rs +0 -0
  62. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/graphics_state.rs +0 -0
  63. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/hyperlink_extractor.rs +0 -0
  64. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/image_extractor.rs +0 -0
  65. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/line_extractor.rs +0 -0
  66. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/metadata_writer.rs +0 -0
  67. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/page_info.rs +0 -0
  68. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pdf/text_extractor.rs +0 -0
  69. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/error_recovery.rs +0 -0
  70. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/logging.rs +0 -0
  71. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/mod.rs +0 -0
  72. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/orchestrator.rs +0 -0
  73. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/boxed_heading_promoter.rs +0 -0
  74. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/caption_linker.rs +0 -0
  75. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/column_detector.rs +0 -0
  76. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/content_filter.rs +0 -0
  77. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/content_sanitizer.rs +0 -0
  78. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/cross_page_linker.rs +0 -0
  79. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/figure_detector.rs +0 -0
  80. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/footnote_detector.rs +0 -0
  81. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/footnote_linker.rs +0 -0
  82. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/header_footer.rs +0 -0
  83. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/id_assignment.rs +0 -0
  84. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/list_detector.rs +0 -0
  85. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/list_pass2.rs +0 -0
  86. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/mod.rs +0 -0
  87. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/nesting_level.rs +0 -0
  88. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/output_builder.rs +0 -0
  89. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/table_content_assigner.rs +0 -0
  90. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/table_detector.rs +0 -0
  91. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/text_line_grouper.rs +0 -0
  92. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/toc_detector.rs +0 -0
  93. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/pipeline/stages/watermark_detector.rs +0 -0
  94. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/tagged/mod.rs +0 -0
  95. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/tagged/processor.rs +0 -0
  96. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/tagged/struct_tree.rs +0 -0
  97. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/diff.rs +0 -0
  98. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/font_metrics_cache.rs +0 -0
  99. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/image_dedup.rs +0 -0
  100. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/language_detector.rs +0 -0
  101. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/layout_analysis.rs +0 -0
  102. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/mod.rs +0 -0
  103. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/page_range.rs +0 -0
  104. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/sanitizer.rs +0 -0
  105. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/statistics.rs +0 -0
  106. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/text_normalizer.rs +0 -0
  107. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/src/utils/xref_index.rs +0 -0
  108. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/tests/integration_tests.rs +0 -0
  109. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-core/tests/perf_benchmarks.rs +0 -0
  110. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-python/Cargo.toml +0 -0
  111. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/edgeparse-python/src/lib.rs +0 -0
  112. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.cargo_vcs_info.json +0 -0
  113. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.chglog/CHANGELOG.tpl.md +0 -0
  114. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.chglog/config.yml +0 -0
  115. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.editorconfig +0 -0
  116. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.gitattributes +0 -0
  117. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.github/workflows/ci.yml +0 -0
  118. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.vscode/launch.json +0 -0
  119. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/.vscode/settings.json +0 -0
  120. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/CHANGELOG.md +0 -0
  121. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/LICENSE +0 -0
  122. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/README.md +0 -0
  123. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/pdf_icon.jpg +0 -0
  124. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/L16.png +0 -0
  125. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/L8.jpg +0 -0
  126. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/La16.png +0 -0
  127. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/La8.png +0 -0
  128. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/Rgb16.png +0 -0
  129. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/Rgb8.jpg +0 -0
  130. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/Rgba16.png +0 -0
  131. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/assets/supported_color_type/Rgba8.png +0 -0
  132. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/benches/datetime.rs +0 -0
  133. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/benches/parse.rs +0 -0
  134. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/add_barcode.rs +0 -0
  135. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/analyze_object_streams.rs +0 -0
  136. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/analyze_page_contents.rs +0 -0
  137. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/analyze_pdf.rs +0 -0
  138. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/analyze_references.rs +0 -0
  139. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/check_raw_objstream.rs +0 -0
  140. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/compress_existing_pdf.rs +0 -0
  141. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/create.rs +0 -0
  142. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/create_text_heavy_pdf.rs +0 -0
  143. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/debug_compression_detailed.rs +0 -0
  144. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/debug_compression_full.rs +0 -0
  145. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/debug_object_stream.rs +0 -0
  146. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/debug_save_with_objstreams.rs +0 -0
  147. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/decrypt.rs +0 -0
  148. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/encrypt.rs +0 -0
  149. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/extract_text.rs +0 -0
  150. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/extract_toc.rs +0 -0
  151. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/final_compression_test.rs +0 -0
  152. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/inspect_object_stream.rs +0 -0
  153. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/merge.rs +0 -0
  154. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/object_streams.rs +0 -0
  155. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/print_annotations.rs +0 -0
  156. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/replace_partial_text.rs +0 -0
  157. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/rotate.rs +0 -0
  158. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_better_compression.rs +0 -0
  159. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_decryption.rs +0 -0
  160. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_direct_objstream.rs +0 -0
  161. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_filter_roundtrip.rs +0 -0
  162. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_metadata.rs +0 -0
  163. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_object_stream_creation.rs +0 -0
  164. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_object_stream_roundtrip.rs +0 -0
  165. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_real_pdf_compression_with_fix.rs +0 -0
  166. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/test_structural_compression.rs +0 -0
  167. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/verify_decryption.rs +0 -0
  168. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/verify_page_compression.rs +0 -0
  169. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/verify_pdf.rs +0 -0
  170. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/examples/verify_trailer_compression_fix.rs +0 -0
  171. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/rustfmt.toml +0 -0
  172. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/bookmarks.rs +0 -0
  173. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/cmap_section.rs +0 -0
  174. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/common_data_structures/mod.rs +0 -0
  175. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/content.rs +0 -0
  176. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/creator.rs +0 -0
  177. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/datetime.rs +0 -0
  178. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/destinations.rs +0 -0
  179. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/document.rs +0 -0
  180. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encodings/cmap.rs +0 -0
  181. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encodings/glyphnames.rs +0 -0
  182. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encodings/mappings.rs +0 -0
  183. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encodings/mod.rs +0 -0
  184. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encryption/algorithms.rs +0 -0
  185. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encryption/crypt_filters.rs +0 -0
  186. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encryption/pkcs5.rs +0 -0
  187. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encryption/rc4.rs +0 -0
  188. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/encryption.rs +0 -0
  189. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/error.rs +0 -0
  190. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/filters/mod.rs +0 -0
  191. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/filters/png.rs +0 -0
  192. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/font.rs +0 -0
  193. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/incremental_document.rs +0 -0
  194. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/lib.rs +0 -0
  195. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/object.rs +0 -0
  196. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/object_stream.rs +0 -0
  197. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/outlines.rs +0 -0
  198. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/parser/cmap_parser.rs +0 -0
  199. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/parser_aux.rs +0 -0
  200. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/processor.rs +0 -0
  201. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/reader.rs +0 -0
  202. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/save_options.rs +0 -0
  203. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/toc.rs +0 -0
  204. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/writer.rs +0 -0
  205. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/xobject.rs +0 -0
  206. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/src/xref.rs +0 -0
  207. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/annotation.rs +0 -0
  208. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/catalog_compression_integration_test.rs +0 -0
  209. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/decryption.rs +0 -0
  210. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/extract_test.rs +0 -0
  211. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/font_test.rs +0 -0
  212. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/incremental_document.rs +0 -0
  213. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/metadata_test.rs +0 -0
  214. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/modify.rs +0 -0
  215. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/object_stream_comprehensive_test.rs +0 -0
  216. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/object_stream_edge_cases_test.rs +0 -0
  217. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/object_stream_methods_test.rs +0 -0
  218. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/object_stream_performance_test.rs +0 -0
  219. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/resources/fonts/Montserrat-Regular.ttf +0 -0
  220. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/simple_object_stream_test.rs +0 -0
  221. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/trailer_reference_compression_test.rs +0 -0
  222. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/unicode.rs +0 -0
  223. {edgeparse-0.1.1 → edgeparse-0.2.1}/crates/pdf-cos/tests/utils.rs +0 -0
  224. {edgeparse-0.1.1 → edgeparse-0.2.1}/edgeparse/__init__.py +0 -0
  225. {edgeparse-0.1.1 → edgeparse-0.2.1}/edgeparse/_types.py +0 -0
  226. {edgeparse-0.1.1 → edgeparse-0.2.1}/edgeparse/cli.py +0 -0
  227. {edgeparse-0.1.1 → edgeparse-0.2.1}/edgeparse/py.typed +0 -0
  228. {edgeparse-0.1.1 → edgeparse-0.2.1}/pyproject.toml +0 -0
@@ -170,6 +170,17 @@ dependencies = [
170
170
  "stable_deref_trait",
171
171
  ]
172
172
 
173
+ [[package]]
174
+ name = "async-trait"
175
+ version = "0.1.89"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
178
+ dependencies = [
179
+ "proc-macro2 1.0.106",
180
+ "quote 1.0.45",
181
+ "syn",
182
+ ]
183
+
173
184
  [[package]]
174
185
  name = "atomic-waker"
175
186
  version = "1.1.2"
@@ -306,6 +317,12 @@ version = "1.11.1"
306
317
  source = "registry+https://github.com/rust-lang/crates.io-index"
307
318
  checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
308
319
 
320
+ [[package]]
321
+ name = "cast"
322
+ version = "0.3.0"
323
+ source = "registry+https://github.com/rust-lang/crates.io-index"
324
+ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
325
+
309
326
  [[package]]
310
327
  name = "cbc"
311
328
  version = "0.1.2"
@@ -422,6 +439,17 @@ dependencies = [
422
439
  "wasm-bindgen",
423
440
  ]
424
441
 
442
+ [[package]]
443
+ name = "console_log"
444
+ version = "1.0.0"
445
+ source = "registry+https://github.com/rust-lang/crates.io-index"
446
+ checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f"
447
+ dependencies = [
448
+ "log",
449
+ "wasm-bindgen",
450
+ "web-sys",
451
+ ]
452
+
425
453
  [[package]]
426
454
  name = "convert_case"
427
455
  version = "0.6.0"
@@ -608,7 +636,7 @@ dependencies = [
608
636
 
609
637
  [[package]]
610
638
  name = "edgeparse-cli"
611
- version = "0.1.1"
639
+ version = "0.2.1"
612
640
  dependencies = [
613
641
  "anyhow",
614
642
  "clap",
@@ -622,7 +650,7 @@ dependencies = [
622
650
 
623
651
  [[package]]
624
652
  name = "edgeparse-core"
625
- version = "0.1.1"
653
+ version = "0.2.1"
626
654
  dependencies = [
627
655
  "anyhow",
628
656
  "base64",
@@ -646,7 +674,7 @@ dependencies = [
646
674
 
647
675
  [[package]]
648
676
  name = "edgeparse-node"
649
- version = "0.1.1"
677
+ version = "0.2.1"
650
678
  dependencies = [
651
679
  "edgeparse-core",
652
680
  "napi",
@@ -658,13 +686,30 @@ dependencies = [
658
686
 
659
687
  [[package]]
660
688
  name = "edgeparse-python"
661
- version = "0.1.1"
689
+ version = "0.2.1"
662
690
  dependencies = [
663
691
  "edgeparse-core",
664
692
  "pyo3",
665
693
  "serde_json",
666
694
  ]
667
695
 
696
+ [[package]]
697
+ name = "edgeparse-wasm"
698
+ version = "0.2.1"
699
+ dependencies = [
700
+ "console_error_panic_hook",
701
+ "console_log",
702
+ "edgeparse-core",
703
+ "js-sys",
704
+ "log",
705
+ "serde",
706
+ "serde-wasm-bindgen",
707
+ "serde_json",
708
+ "wasm-bindgen",
709
+ "wasm-bindgen-test 0.3.64",
710
+ "web-sys",
711
+ ]
712
+
668
713
  [[package]]
669
714
  name = "either"
670
715
  version = "1.15.0"
@@ -1472,6 +1517,12 @@ dependencies = [
1472
1517
  "windows-link",
1473
1518
  ]
1474
1519
 
1520
+ [[package]]
1521
+ name = "libm"
1522
+ version = "0.2.16"
1523
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1524
+ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
1525
+
1475
1526
  [[package]]
1476
1527
  name = "libredox"
1477
1528
  version = "0.1.14"
@@ -1558,6 +1609,16 @@ version = "0.3.17"
1558
1609
  source = "registry+https://github.com/rust-lang/crates.io-index"
1559
1610
  checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
1560
1611
 
1612
+ [[package]]
1613
+ name = "minicov"
1614
+ version = "0.3.8"
1615
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1616
+ checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"
1617
+ dependencies = [
1618
+ "cc",
1619
+ "walkdir",
1620
+ ]
1621
+
1561
1622
  [[package]]
1562
1623
  name = "miniz_oxide"
1563
1624
  version = "0.8.9"
@@ -1695,6 +1756,15 @@ version = "0.3.0"
1695
1756
  source = "registry+https://github.com/rust-lang/crates.io-index"
1696
1757
  checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
1697
1758
 
1759
+ [[package]]
1760
+ name = "nu-ansi-term"
1761
+ version = "0.50.3"
1762
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1763
+ checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
1764
+ dependencies = [
1765
+ "windows-sys 0.61.2",
1766
+ ]
1767
+
1698
1768
  [[package]]
1699
1769
  name = "num-bigint"
1700
1770
  version = "0.4.6"
@@ -1749,6 +1819,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1749
1819
  checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
1750
1820
  dependencies = [
1751
1821
  "autocfg",
1822
+ "libm",
1752
1823
  ]
1753
1824
 
1754
1825
  [[package]]
@@ -1763,6 +1834,12 @@ version = "1.70.2"
1763
1834
  source = "registry+https://github.com/rust-lang/crates.io-index"
1764
1835
  checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
1765
1836
 
1837
+ [[package]]
1838
+ name = "oorandom"
1839
+ version = "11.1.5"
1840
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1841
+ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
1842
+
1766
1843
  [[package]]
1767
1844
  name = "openssl"
1768
1845
  version = "0.10.76"
@@ -1894,7 +1971,7 @@ dependencies = [
1894
1971
  "time",
1895
1972
  "tokio",
1896
1973
  "ttf-parser",
1897
- "wasm-bindgen-test",
1974
+ "wasm-bindgen-test 0.2.50",
1898
1975
  "weezl",
1899
1976
  ]
1900
1977
 
@@ -2405,9 +2482,9 @@ dependencies = [
2405
2482
 
2406
2483
  [[package]]
2407
2484
  name = "rustls-webpki"
2408
- version = "0.103.9"
2485
+ version = "0.103.10"
2409
2486
  source = "registry+https://github.com/rust-lang/crates.io-index"
2410
- checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
2487
+ checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
2411
2488
  dependencies = [
2412
2489
  "ring",
2413
2490
  "rustls-pki-types",
@@ -2426,6 +2503,15 @@ version = "1.0.23"
2426
2503
  source = "registry+https://github.com/rust-lang/crates.io-index"
2427
2504
  checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
2428
2505
 
2506
+ [[package]]
2507
+ name = "same-file"
2508
+ version = "1.0.6"
2509
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2510
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
2511
+ dependencies = [
2512
+ "winapi-util",
2513
+ ]
2514
+
2429
2515
  [[package]]
2430
2516
  name = "schannel"
2431
2517
  version = "0.1.29"
@@ -2486,6 +2572,17 @@ dependencies = [
2486
2572
  "serde_derive",
2487
2573
  ]
2488
2574
 
2575
+ [[package]]
2576
+ name = "serde-wasm-bindgen"
2577
+ version = "0.6.5"
2578
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2579
+ checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"
2580
+ dependencies = [
2581
+ "js-sys",
2582
+ "serde",
2583
+ "wasm-bindgen",
2584
+ ]
2585
+
2489
2586
  [[package]]
2490
2587
  name = "serde_core"
2491
2588
  version = "1.0.228"
@@ -3042,6 +3139,16 @@ version = "0.9.5"
3042
3139
  source = "registry+https://github.com/rust-lang/crates.io-index"
3043
3140
  checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
3044
3141
 
3142
+ [[package]]
3143
+ name = "walkdir"
3144
+ version = "2.5.0"
3145
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3146
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
3147
+ dependencies = [
3148
+ "same-file",
3149
+ "winapi-util",
3150
+ ]
3151
+
3045
3152
  [[package]]
3046
3153
  name = "want"
3047
3154
  version = "0.3.1"
@@ -3159,7 +3266,29 @@ dependencies = [
3159
3266
  "scoped-tls",
3160
3267
  "wasm-bindgen",
3161
3268
  "wasm-bindgen-futures 0.3.27",
3162
- "wasm-bindgen-test-macro",
3269
+ "wasm-bindgen-test-macro 0.2.50",
3270
+ ]
3271
+
3272
+ [[package]]
3273
+ name = "wasm-bindgen-test"
3274
+ version = "0.3.64"
3275
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3276
+ checksum = "6311c867385cc7d5602463b31825d454d0837a3aba7cdb5e56d5201792a3f7fe"
3277
+ dependencies = [
3278
+ "async-trait",
3279
+ "cast",
3280
+ "js-sys",
3281
+ "libm",
3282
+ "minicov",
3283
+ "nu-ansi-term",
3284
+ "num-traits",
3285
+ "oorandom",
3286
+ "serde",
3287
+ "serde_json",
3288
+ "wasm-bindgen",
3289
+ "wasm-bindgen-futures 0.4.64",
3290
+ "wasm-bindgen-test-macro 0.3.64",
3291
+ "wasm-bindgen-test-shared",
3163
3292
  ]
3164
3293
 
3165
3294
  [[package]]
@@ -3172,6 +3301,23 @@ dependencies = [
3172
3301
  "quote 0.6.13",
3173
3302
  ]
3174
3303
 
3304
+ [[package]]
3305
+ name = "wasm-bindgen-test-macro"
3306
+ version = "0.3.64"
3307
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3308
+ checksum = "67008cdde4769831958536b0f11b3bdd0380bde882be17fff9c2f34bb4549abd"
3309
+ dependencies = [
3310
+ "proc-macro2 1.0.106",
3311
+ "quote 1.0.45",
3312
+ "syn",
3313
+ ]
3314
+
3315
+ [[package]]
3316
+ name = "wasm-bindgen-test-shared"
3317
+ version = "0.2.114"
3318
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3319
+ checksum = "cfe29135b180b72b04c74aa97b2b4a2ef275161eff9a6c7955ea9eaedc7e1d4e"
3320
+
3175
3321
  [[package]]
3176
3322
  name = "wasm-encoder"
3177
3323
  version = "0.244.0"
@@ -3222,6 +3368,15 @@ version = "0.1.12"
3222
3368
  source = "registry+https://github.com/rust-lang/crates.io-index"
3223
3369
  checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
3224
3370
 
3371
+ [[package]]
3372
+ name = "winapi-util"
3373
+ version = "0.1.11"
3374
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3375
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
3376
+ dependencies = [
3377
+ "windows-sys 0.61.2",
3378
+ ]
3379
+
3225
3380
  [[package]]
3226
3381
  name = "windows-core"
3227
3382
  version = "0.62.2"
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["crates/edgeparse-core", "crates/pdf-cos", "crates/edgeparse-python"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.1.1"
6
+ version = "0.2.1"
7
7
  edition = "2021"
8
8
  rust-version = "1.85"
9
9
  license = "Apache-2.0"
@@ -13,7 +13,7 @@ description = "EdgeParse — High-performance PDF-to-structured-data extraction
13
13
  [workspace.dependencies]
14
14
  # PDF parsing (local fork of lopdf 0.39.0, renamed pdf-cos for clarity)
15
15
  # Using package alias so all existing `use lopdf::...` code works unchanged.
16
- lopdf = { package = "pdf-cos", path = "crates/pdf-cos", version = "0.39.0" }
16
+ lopdf = { package = "pdf-cos", path = "crates/pdf-cos", version = "0.39.0", default-features = false }
17
17
  pdf-extract = "0.10.0"
18
18
 
19
19
  # CLI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edgeparse
3
- Version: 0.1.1
3
+ Version: 0.2.1
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -17,14 +17,14 @@ rustdoc-args = ["--cfg", "docsrs"]
17
17
  all-features = false
18
18
 
19
19
  [dependencies]
20
- lopdf = { workspace = true }
20
+ lopdf = { workspace = true, default-features = false, features = ["chrono", "jiff", "time"] }
21
21
  serde = { workspace = true }
22
22
  serde_json = { workspace = true }
23
23
  thiserror = { workspace = true }
24
24
  anyhow = { workspace = true }
25
25
  log = { workspace = true }
26
- rayon = { workspace = true }
27
- image = { workspace = true }
26
+ rayon = { workspace = true, optional = true }
27
+ image = { workspace = true, optional = true }
28
28
  base64 = { workspace = true }
29
29
  regex = { workspace = true }
30
30
  unicode-normalization = { workspace = true }
@@ -32,12 +32,14 @@ indexmap = { workspace = true }
32
32
  ordered-float = { workspace = true }
33
33
  ttf-parser = { workspace = true }
34
34
  euclid = { workspace = true }
35
- zip = { workspace = true }
35
+ zip = { workspace = true, optional = true }
36
36
  reqwest = { workspace = true, optional = true }
37
37
  tokio = { workspace = true, optional = true }
38
38
 
39
39
  [features]
40
- default = []
40
+ default = ["native"]
41
+ native = ["rayon", "image", "zip", "lopdf/rayon"]
42
+ wasm = ["lopdf/wasm_js"]
41
43
  hybrid = ["dep:reqwest", "dep:tokio"]
42
44
 
43
45
  [dev-dependencies]
@@ -23,7 +23,10 @@ use crate::models::content::ContentElement;
23
23
  use crate::models::document::PdfDocument;
24
24
  use crate::pdf::chunk_parser::extract_page_chunks;
25
25
  use crate::pdf::page_info;
26
- use crate::pdf::raster_table_ocr::recover_raster_table_borders;
26
+ #[cfg(not(target_arch = "wasm32"))]
27
+ use crate::pdf::raster_table_ocr::{
28
+ recover_page_raster_table_cell_text, recover_raster_table_borders,
29
+ };
27
30
  use crate::pipeline::orchestrator::{run_pipeline, PipelineState};
28
31
  use crate::tagged::struct_tree::build_mcid_map;
29
32
 
@@ -38,6 +41,7 @@ use crate::tagged::struct_tree::build_mcid_map;
38
41
  ///
39
42
  /// # Errors
40
43
  /// Returns an error if the PDF cannot be loaded or processed.
44
+ #[cfg(not(target_arch = "wasm32"))]
41
45
  pub fn convert(
42
46
  input_path: &std::path::Path,
43
47
  config: &ProcessingConfig,
@@ -102,7 +106,7 @@ pub fn convert(
102
106
  // Run the processing pipeline
103
107
  let mcid_map = build_mcid_map(&raw_doc.document);
104
108
  let mut pipeline_state = PipelineState::with_mcid_map(page_contents, config.clone(), mcid_map)
105
- .with_page_info(page_info_list);
109
+ .with_page_info(page_info_list.clone());
106
110
  run_pipeline(&mut pipeline_state)?;
107
111
 
108
112
  // Build the output document
@@ -113,12 +117,24 @@ pub fn convert(
113
117
  .to_string();
114
118
 
115
119
  let mut doc = PdfDocument::new(file_name);
120
+ doc.source_path = Some(input_path.display().to_string());
116
121
  doc.number_of_pages = pages_map.len() as u32;
117
122
  doc.author = raw_doc.metadata.author;
118
123
  doc.title = raw_doc.metadata.title;
119
124
  doc.creation_date = raw_doc.metadata.creation_date;
120
125
  doc.modification_date = raw_doc.metadata.modification_date;
121
126
 
127
+ for (page_idx, page) in pipeline_state.pages.iter_mut().enumerate() {
128
+ if let Some(page_info) = page_info_list.get(page_idx) {
129
+ recover_page_raster_table_cell_text(
130
+ input_path,
131
+ &page_info.crop_box,
132
+ page_info.page_number,
133
+ page,
134
+ );
135
+ }
136
+ }
137
+
122
138
  // Flatten pipeline output into document kids
123
139
  for page in pipeline_state.pages {
124
140
  doc.kids.extend(page);
@@ -127,6 +143,91 @@ pub fn convert(
127
143
  Ok(doc)
128
144
  }
129
145
 
146
+ /// Convert a PDF from an in-memory byte slice to structured data.
147
+ ///
148
+ /// This is the WASM-compatible entry point. It replaces all filesystem
149
+ /// operations with in-memory equivalents and skips raster table OCR.
150
+ ///
151
+ /// # Arguments
152
+ /// * `data` — raw PDF bytes (e.g., from a `Uint8Array` in JavaScript)
153
+ /// * `file_name` — display name (used in `PdfDocument.file_name`)
154
+ /// * `config` — processing configuration
155
+ ///
156
+ /// # Returns
157
+ /// Structured document or error.
158
+ ///
159
+ /// # Errors
160
+ /// Returns an error if the PDF cannot be parsed or processed.
161
+ pub fn convert_bytes(
162
+ data: &[u8],
163
+ file_name: &str,
164
+ config: &ProcessingConfig,
165
+ ) -> Result<PdfDocument, EdgePdfError> {
166
+ let raw_doc = pdf::loader::load_pdf_from_bytes(data, config.password.as_deref())?;
167
+
168
+ let page_info_list = page_info::extract_page_info(&raw_doc.document);
169
+
170
+ let pages_map = raw_doc.document.get_pages();
171
+ let mut page_contents = Vec::with_capacity(pages_map.len());
172
+
173
+ for (&page_num, &page_id) in &pages_map {
174
+ let page_chunks = extract_page_chunks(&raw_doc.document, page_num, page_id)?;
175
+
176
+ // Raster table OCR requires external pdfimages binary — skip in memory-only mode
177
+ let recovered_tables = Vec::new();
178
+
179
+ let mut elements: Vec<ContentElement> = page_chunks
180
+ .text_chunks
181
+ .into_iter()
182
+ .map(ContentElement::TextChunk)
183
+ .collect();
184
+
185
+ elements.extend(
186
+ page_chunks
187
+ .image_chunks
188
+ .into_iter()
189
+ .map(ContentElement::Image),
190
+ );
191
+ elements.extend(
192
+ page_chunks
193
+ .line_chunks
194
+ .into_iter()
195
+ .map(ContentElement::Line),
196
+ );
197
+ elements.extend(
198
+ page_chunks
199
+ .line_art_chunks
200
+ .into_iter()
201
+ .map(ContentElement::LineArt),
202
+ );
203
+ elements.extend(
204
+ recovered_tables
205
+ .into_iter()
206
+ .map(ContentElement::TableBorder),
207
+ );
208
+
209
+ page_contents.push(elements);
210
+ }
211
+
212
+ let mcid_map = build_mcid_map(&raw_doc.document);
213
+ let mut pipeline_state = PipelineState::with_mcid_map(page_contents, config.clone(), mcid_map)
214
+ .with_page_info(page_info_list);
215
+ run_pipeline(&mut pipeline_state)?;
216
+
217
+ let mut doc = PdfDocument::new(file_name.to_string());
218
+ doc.number_of_pages = pages_map.len() as u32;
219
+ doc.author = raw_doc.metadata.author;
220
+ doc.title = raw_doc.metadata.title;
221
+ doc.creation_date = raw_doc.metadata.creation_date;
222
+ doc.modification_date = raw_doc.metadata.modification_date;
223
+
224
+ for page in pipeline_state.pages {
225
+ doc.kids.extend(page);
226
+ }
227
+
228
+ Ok(doc)
229
+ }
230
+
130
231
  /// Top-level error type for EdgeParse operations.
131
232
  #[derive(Debug, thiserror::Error)]
132
233
  pub enum EdgePdfError {
@@ -9,6 +9,9 @@ use super::content::ContentElement;
9
9
  pub struct PdfDocument {
10
10
  /// Original file name
11
11
  pub file_name: String,
12
+ /// Original source path when available.
13
+ #[serde(skip_serializing_if = "Option::is_none")]
14
+ pub source_path: Option<String>,
12
15
  /// Number of pages
13
16
  pub number_of_pages: u32,
14
17
  /// Document author
@@ -36,6 +39,7 @@ impl PdfDocument {
36
39
  pub fn new(file_name: String) -> Self {
37
40
  Self {
38
41
  file_name,
42
+ source_path: None,
39
43
  number_of_pages: 0,
40
44
  author: None,
41
45
  title: None,
@@ -89,6 +93,7 @@ mod tests {
89
93
  fn test_new_document() {
90
94
  let doc = PdfDocument::new("test.pdf".to_string());
91
95
  assert_eq!(doc.file_name, "test.pdf");
96
+ assert_eq!(doc.source_path, None);
92
97
  assert_eq!(doc.number_of_pages, 0);
93
98
  assert!(doc.kids.is_empty());
94
99
  }