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
+52-18Lines changed: 52 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ phased plan is kept at the end as history.)
14
14
> against *live* docling; the PDF/image/METS ML path lives in `docling-pdf`
15
15
> (a pure-Rust PDF text parser + pdfium rasterization + ONNX
16
16
> layout/TableFormer/OCR + a port of docling-parse's line sanitizer) and is also
17
-
> measured byte-for-byte against live docling — **6 / 14 PDF fixtures exact, 7 / 14
17
+
> measured byte-for-byte against live docling — **6 / 16 PDF fixtures exact, 7 / 16
18
18
> whitespace-normalized** (see `PDF_CONFORMANCE.md`), with a snapshot baseline
19
19
> guarding against regressions. `cargo test` is green (unit tests + a 133-source
20
20
> output-regression suite).
@@ -24,11 +24,11 @@ phased plan is kept at the end as history.)
24
24
|||
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
-
|**Conformance**| Declarative formats byte-for-byte vs *live* PyPI docling (most 100%, see §2); PDF ML path 6/14 fixtures byte-exact, rest close; every optimization is gated on this not regressing |
27
+
|**Conformance**| Declarative formats byte-for-byte vs *live* PyPI docling (most 100%, see §2); `.dclx` DocLang output ≈91% mean vs docling's own `.dclx` (§2); PDF ML path 6/16 fixtures byte-exact, rest close; every optimization is gated on this not regressing |
28
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)|
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, DocTagsinput, the legacy APS-text patent dump (§5); inline formatting is baked into text rather than structured fields (§4) |
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) |
32
32
33
33
---
34
34
@@ -106,7 +106,7 @@ content-type resolution, and image extraction — reused by DOCX/PPTX/XLSX/EPUB.
106
106
107
107
These run docling's *discriminative* PDF pipeline ported to ONNX. They are now
108
108
measured **byte-for-byte against live docling** (the committed PDF groundtruth is
109
-
regenerated from it): **6 / 14 exact (7 / 14 whitespace-normalized)**, the rest
109
+
regenerated from it): **6 / 16 exact (7 / 16 whitespace-normalized)**, the rest
110
110
close — see `PDF_CONFORMANCE.md`. A deterministic snapshot baseline
111
111
(`scripts/conformance/pdf_conformance.sh`) still guards against regressions.
112
112
@@ -117,6 +117,27 @@ close — see `PDF_CONFORMANCE.md`. A deterministic snapshot baseline
117
117
| METS / Google Books |`.tar.gz` of per-page hOCR + TIFF → cells from hOCR → the same layout+assembly path (no OCR needed) |
118
118
| Audio (wav/mp3/flac/ogg/aac/m4a + mp4/mov audio tracks) |`docling-asr`: **symphonia** decode (no ffmpeg) → 16 kHz mono → ported log-mel front-end → **Whisper tiny** encoder/decoder (ONNX, greedy with OpenAI's timestamp rules — docling's ASR defaults) → `[time: start-end] text` paragraphs. AVI is the one container symphonia can't demux. |
119
119
120
+
### DocLang (`.dclx`) coverage
121
+
122
+
The `.dclx` DocLang output (§3) is scored against docling's own `.dclx` archives
123
+
with `scripts/conformance/dclx_conformance.sh` — the extracted `document.xml`
124
+
line-diffed, similarity `= 100·(1 − difflines / max_lines)`. **≈91% mean over the
125
+
134-fixture non-PDF corpus** (issue #32 target: ≥90%), per source format:
126
+
127
+
| Format |`.dclx` similarity | Format |`.dclx` similarity |
0 commit comments