Skip to content

Releases: myhloli/DocVortex

DocVortex 0.5.2

Choose a tag to compare

@myhloli myhloli released this 27 Sep 15:02

Changes

  • Add the PDF native kernel (PR #15): reusable page snapshots, render sessions and metadata caching; a new docvortex-pdfium Rust crate for fonts, objects, paths, text colors and classification; and Rust implementations for character-to-span assignment, plain span text composition, visual run finalization, canonical line metrics, document geometry risk and style calibration, table candidate grid expansion/merging, owned bitmap crops and inline style detection. PDFium bitmap buffers transfer without worker-side PIL copies, and render mappings release independently of cyclic garbage collection.
  • Switch the default compute backend to auto (preferring a compatible Rust extension, falling back to Python) and the default rendering mode to session; explicit rust still requires a compatible extension, and python/legacy remain available for fallback. Private native protocol is now 22.
  • Add MinerU cold/Flash/shared benchmark harnesses, a model tape, and render-memory tooling; extensive parity tests for the text pipeline, snapshots, render sessions, font runtime and table candidates.

Compatibility

  • Restart existing processes after upgrading: the private protocol changed to 22, so cached backends from older extensions are rejected and re-selected. Pure Python behavior is unchanged when no extension is present.

Full Changelog: v0.5.1...v0.5.2

DocVortex 0.5.1

Choose a tag to compare

@myhloli myhloli released this 26 Sep 17:56

Changes

  • Extend Rust acceleration with batched duplicate-text detection, fused mapping and glyph geometry, and ordered inline-script matching; Python-side batching reuses bounded inline projections, lane profiles, rule bands and table marker geometry across stages.
  • Avoid empty-page preparation overhead, defer dense-table candidate materialization, and bound character materialization while preserving page-wide identity.
  • Allow large GIFs in PPTX without exhausting equation asset budgets.
  • Round 6/7 corpora, wheel-matrix kernel tests and benchmark suites added; round 7 acceptance and the remaining performance gap are documented in docs/rust-pdf-round7.md.

Full Changelog: v0.5.0...v0.5.1

DocVortex 0.5.0

Choose a tag to compare

@myhloli myhloli released this 25 Sep 19:08

Changes

  • Add optional Rust acceleration for native PDF processing, including character geometry, superscript/subscript classification, duplicate text detection, ordered statistics and table recovery. The public Python API remains unchanged, with Python reference implementations retained.
  • Batch character extraction through the active PDFium instance, reuse geometry and table indices, and bound intermediate character/candidate materialization. Encode visual crops in rendering workers and release closed PDF wrapper cycles between tasks.
  • Add explicit DOCVORTEX_COMPUTE_BACKEND=auto|python|rust selection and DOCVORTEX_BUILD_NATIVE=auto|0|1 build control. Missing or incompatible extensions fall back in auto mode; forced Rust mode reports an error.
  • Add CPython ABI3 wheels for Linux x86_64/aarch64, Windows x86_64 and macOS arm64/x86_64, alongside a pure Python wheel and source distribution. Extend CI with Python/Rust parity, installed-wheel checks and real-PDF comparisons.
  • Convert WMF/EMF images embedded in DOCX tables into exportable images, including the full-document-context fallback path.
  • Document repository ownership and development workflows, and split PyO3 bindings into focused modules without changing the private extension interface.

Compatibility

  • Native wheels target GIL-enabled CPython 3.10–3.14; Linux wheels require glibc 2.28 or newer. Pure Python builds remain available.
  • On Intel macOS, the existing Magika/ONNX Runtime dependency stack limits full application installation on Python 3.14. The native binary is checked separately for 3.14 ABI compatibility; full parsing is validated on Python 3.10 and 3.13.
  • Source builds compile Rust when Cargo is available. Set DOCVORTEX_BUILD_NATIVE=0 to build without the extension. Restart existing processes after upgrading or rebuilding an editable extension.

Full Changelog: v0.4.25...v0.5.0

DocVortex 0.4.25

Choose a tag to compare

@myhloli myhloli released this 23 Sep 19:30

Changes

  • Preserve DOCX tables when Mammoth pre-matching misses: the XML table signature now skips vMerge continuation cell subtrees and aligns with Mammoth's handling of AlternateContent fallback branches, simple fields, and checkbox content controls; unmatched tables fall back to full-document-context conversion instead of the isolated XML path. Fixes tables silently dropping in documents whose merged cells carry residual text.

Full Changelog: v0.4.24...v0.4.25

DocVortex 0.4.24

Choose a tag to compare

@myhloli myhloli released this 23 Sep 09:43

Changes

  • Route file-type and code-language identification through a thread-limited Magika subclass: the ONNX session is pinned to 4 intra-op / 1 inter-op CPU threads with telemetry disabled, keeping the upstream model and identification behavior unchanged.
  • Rename the demo/office_docs sample directory to ms_office_docs and refresh the supported-format counts in the READMEs.

Full Changelog: v0.4.23...v0.4.24

DocVortex 0.4.23

Choose a tag to compare

@myhloli myhloli released this 23 Sep 07:06

Changes

  • Add MHTML (.mhtml/.mht) as an input format: archives parse through MhtmlArchive and reuse the HTML conversion engine, with byte-signature and extension detection, synced schema enums, archive metadata, and the format matrix extended accordingly.

Full Changelog: v0.4.22...v0.4.23

DocVortex 0.4.22

Choose a tag to compare

@myhloli myhloli released this 22 Sep 11:34

Changes

  • Speed up native PDF table detection while keeping the frozen layout baselines: timing metrics on the detection stage, a _SharedLineIndexSet for line-index management, precomputed caption/note candidate indexes, and row-interval bisect lookups.
  • Separate Office metadata and equation (MTEF) asset budgets so metadata extraction is no longer constrained by equation candidate limits.

Full Changelog: v0.4.21...v0.4.22

DocVortex 0.4.21

Choose a tag to compare

@myhloli myhloli released this 20 Sep 18:38

Changes

  • Fix CJK line breaking in PDF output around inline formulas and other empty-text callbacks: a CJKParagraph subclass takes over ReportLab's CJK split only for paragraphs carrying such fragments, treats them as atomic objects, preserves zero-width anchors and hanging punctuation rules, and copies already-split fragments without inserting spaces. Inline formulas scale down proportionally only when a full empty line still cannot fit them, keeping the original callback for later reuse.

Full Changelog: v0.4.20...v0.4.21

DocVortex 0.4.20

Choose a tag to compare

@myhloli myhloli released this 20 Sep 16:10

Changes

  • Detect complete numeric superscript citations in native PDF script analysis: digit runs (with comma or dash separators between digits) are confirmed against the stable body text to their left on the same visual row, requiring baseline shift, size reduction, and body-band evidence. Fraction numerators and denominators are excluded, and trailing punctuation stays with the body. Ships with a real-sample fixture and reviewed assertions.

Full Changelog: v0.4.19...v0.4.20

DocVortex 0.4.19

Choose a tag to compare

@myhloli myhloli released this 20 Sep 14:23

Changes

  • Align materialized image naming with the MinerU Gradio conventions: direct payloads become images/page_{page_idx}_{owner.type}_{owner.index}.{ext} where the owner is the image/table/chart parent block (equations use equation), and images embedded in visual body HTML use image_{index}_{ordinal} / table_image_{index}_{ordinal} / chart_image_{index}_{ordinal}. Conflicting payloads append _duplicate_n; image bytes are never re-encoded. Consumers should read the document's actual references instead of assembling legacy *_body_* names.
  • Add explicit host callbacks to materialize_middle: image_resolver (payload block and original page index → bytes and extension; None keeps the payload) and asset_resolver (validated HTML image relative path → bytes). Without callbacks, embedded images are still strictly parsed and no host files or source PDFs are read. Hosts using shared image export should depend on docvortex>=0.4.19,<1.

Full Changelog: v0.4.18...v0.4.19