Documents convert to Markdown, docling JSON or DocLang XML entirely client-side β nothing is uploaded, no server is involved. Everything below runs from this one page.
What converts without any setup
DOCX, PPTX, XLSX, HTML, Markdown, CSV, AsciiDoc, EPUB, ODF, LaTeX, JATS,
email, MHTML, JSON, DocLang β and PDFs that carry a text layer
(the same extraction the native --no-ocr flag does). These need
no models and no network: the converters are compiled into the wasm module.
Scanned PDFs and images (optional models)
A scanned page has no text layer, so it needs the ML pipeline: RT-DETR layout detection + PP-OCR recognition (+ TableFormer for tables), running on ONNX Runtime Web with all pre/post-processing in Rust/wasm β the same code as the native pipeline. Provide the models any one of these three ways:
-
From your device β pick the
.onnxfiles:
Layout needslayout_heron_int8.onnx; TableFormer also needsencoder.onnx,decoder_kv.onnx+.data,bbox.onnx+.data. Each file is read locally β no download, and it avoids the memory spike a 225 MB fetch causes on a phone. -
From a
models/folder next to this page β served same-origin, fetched automatically:cd crates/docling-wasm/www/ curl -fsSL https://raw.githubusercontent.com/docling-project/docling.rs/master/scripts/install/download_dependencies.sh | sh
-
From Hugging Face β used automatically when neither of the
above has the file. (GitHub Release assets can't be fetched cross-origin:
they send no
Access-Control-Allow-Origin.)
Resolution order per file is device β local models/ β
Hugging Face, so any mix works. The recognition model (~10 MB)
streams from Hugging Face on demand; layout is ~68 MB and TableFormer
~380 MB, so on mobile prefer picking files from the device.