docling.rs logo
docling.rs
document conversion in your browser
GitHub

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.

Drop a file here, or click to choose
scanned pages need models β€” see below
starting…


  

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:

  1. From your device β€” pick the .onnx files:
    Layout needs layout_heron_int8.onnx; TableFormer also needs encoder.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.
  2. 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
  3. 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.