Releases: myhloli/DocVortex
Releases · myhloli/DocVortex
Release list
DocVortex 0.5.2
Changes
- Add the PDF native kernel (PR #15): reusable page snapshots, render sessions and metadata caching; a new
docvortex-pdfiumRust 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 tosession; explicitruststill requires a compatible extension, andpython/legacyremain 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
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
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|rustselection andDOCVORTEX_BUILD_NATIVE=auto|0|1build control. Missing or incompatible extensions fall back inautomode; 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=0to 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
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
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_docssample directory toms_office_docsand refresh the supported-format counts in the READMEs.
Full Changelog: v0.4.23...v0.4.24
DocVortex 0.4.23
Changes
- Add MHTML (
.mhtml/.mht) as an input format: archives parse throughMhtmlArchiveand 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
Changes
- Speed up native PDF table detection while keeping the frozen layout baselines: timing metrics on the detection stage, a
_SharedLineIndexSetfor 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
Changes
- Fix CJK line breaking in PDF output around inline formulas and other empty-text callbacks: a
CJKParagraphsubclass 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
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
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 useequation), and images embedded in visual body HTML useimage_{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;Nonekeeps the payload) andasset_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 ondocvortex>=0.4.19,<1.
Full Changelog: v0.4.18...v0.4.19