You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: MIGRATION.md
+183-8Lines changed: 183 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,10 +25,10 @@ phased plan is kept at the end as history.)
25
25
|---|---|
26
26
|**What**| A Rust port of docling's converter, backends, and discriminative PDF/ASR pipelines; same `convert → DoclingDocument → export_to_markdown()/json()` shape, single static binary, no Python/torch at runtime |
27
27
|**Conformance**| Declarative formats byte-for-byte vs *live* PyPI docling (most 100%, see §2); `.dclx` DocLang output ≈94% mean vs docling's own `.dclx`, OOXML all byte-exact (§2); PDF ML path 5/14 fixtures byte-exact, rest close; every optimization is gated on this not regressing |
28
-
|**Performance**| PDF ML pipeline **4.3× faster warm / 4.7× end-to-end** than Python docling at 2.3–2.6× less peak RAM (INT8 + SIMD, conformance-validated); declarative formats 20–60× warm, ~60× less RAM; details + methodology in [`PDF_PERFORMANCE.md`](./PDF_PERFORMANCE.md)|
28
+
|**Performance**| PDF ML pipeline **4.3× faster warm / 4.7× end-to-end** than Python docling at 2.3–2.6× less peak RAM (INT8 + SIMD, conformance-validated); declarative formats 20–60× warm, ~60× less RAM; details + methodology in [`PDF_CONFORMANCE.md`](./PDF_CONFORMANCE.md)|
29
29
|**Models**| docling's own checkpoints (layout heron, TableFormer, PP-OCRv3, Whisper tiny), format-converted to ONNX by `scripts/export_*.py` — no retraining; INT8 variants are calibrated post-training quantizations (`scripts/install/quantize_models.py`) |
30
30
|**Tracking upstream**| See [§9](#9-keeping-up-with-upstream-docling): conformance is measured against the *latest published* docling on demand, so an upstream release that changes output surfaces as a concrete per-fixture diff |
31
-
|**Not ported (by design)**| VLM pipelines, enrichment models, DocTags/DocLang *input* backends (§5); inline formatting is baked into text rather than structured fields (§4) |
31
+
|**Not ported (by design)**| VLM pipelines and enrichment models (§5); inline formatting is baked into text rather than structured fields (§4) |
32
32
33
33
---
34
34
@@ -96,6 +96,7 @@ PyPI; run via `scripts/conformance/conformance.sh <fmt>`), not the committed gro
96
96
| USPTO |`uspto.rs`|**1/5 exact (2/5 whitespace-normalized)** on the sources live docling converts — it errors on the other 5 (those are validated byte-exact via `.dclx`), and its APS-text *Markdown* export is empty where ours emits the text dump (the `.dclx` matches exactly — §5) |
| DocLang (`.dclg`/`.dclx`) |`doclang.rs` (roxmltree) |**15/15 exact** vs live docling reading the same archives back (`tests/data/doclang`); the inverse of the `.dclx` output serializer, incl. docling's round-trip losses (list-item formatting, hyperlink targets) |
99
100
| LaTeX |`latex.rs` (scanner) | simple `.tex` ≈ live (0/2 exact, but within 2 / 9 diff lines); multi-file arxiv out of scope |
100
101
| MHTML (.mhtml/.mht) |`mhtml.rs` (mail-parser) → HTML backend |**docling.rs extension — no docling backend to compare against**; embedded images resolved by `Content-Location`/`cid:`|
101
102
@@ -282,12 +283,18 @@ deliberate scope boundary or a cosmetic, single-fixture polish gap.
282
283
classification, formula understanding, code understanding). Model-bound; out of
283
284
scope for the discriminative port. (**Audio/ASR is now done** — see §2; the
284
285
only container gap is AVI, which symphonia cannot demux.)
285
-
-**XML DocLang / DocTags *input* backend** — DocLang is supported as an
286
-
**output** format (§3), but reading `.dclx`/DocTags *back in* is not: no such
287
-
sources in the corpus to verify against, and not in the requested scope.
0 commit comments