Docling vs MinerU: document parsing and current APIs
Compare document output, integration and runtime requirements. Both projects have evolved beyond the APIs and versions in the earlier article.
Choose by workload
| Aspect | Docling | MinerU |
|---|---|---|
| Integration | DocumentConverter in Python; document export and configurable pipelines. | Current 4.0 exposes batch conversion, a document library and SDK/service interfaces. |
| Output | Docling document model with Markdown export and structured content. | Structured document results with tier- and interface-dependent rendering targets. |
| Runtime | Depends on selected OCR, standard or VLM pipeline and accelerator settings. | Depends on parsing tier and selected small-model/VLM inference engines. |
| License | MIT for the Docling code; inspect model and dependency licenses separately. | Current repository uses the MinerU Open Source License, based on Apache-2.0 with additional conditions. |
| Decision | Start here when a Python document object fits your application. | Start here when its batch parsing or library/service workflow fits your application. |
Candidate shortlist; row order does not represent an accuracy or speed ranking.
Docling: DocumentConverter, not an invented parse API
The official quickstart imports DocumentConverter from docling.document_converter. convert() returns a conversion result whose document can export Markdown. Configure OCR and table behavior for your documents rather than assuming defaults describe every Docling pipeline.
Documentation-based example; no runtime measurement is claimed.
# pip install docling
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("research_paper.pdf")
print(result.document.export_to_markdown())Docling official quickstart ↗MinerU: use the checked major-version interface
The current upstream 4.0 quickstart uses mineru-kit for stateless conversion. The older examples based on a presumed MinerU().extract() API are not the documented interface. Existing 3.x installations need the migration guide rather than a silent command substitution.
Documentation-based example; no runtime measurement is claimed.
# In an isolated Python environment:
pip install "mineru>=4.0,<5"
mineru-kit parse research_paper.pdf -o research_paper.md --tier standardMinerU current quickstart and 3.x → 4.0 migration ↗Compare the same output contract
Run both on identical held-out PDFs with matched page ranges and resolution. State whether each uses embedded text, forced OCR or a VLM. Match the selected pipeline and parsing tier to the output you need.
Measure text CER/WER, reading order, table structure and equation fidelity separately. A layout detection mAP number cannot prove Markdown or table quality. Inspect multi-column pages, long tables, captions, rotated scans and mathematical notation. Keep per-document failures instead of dropping them from averages.
Make timing reproducible
Separate downloads, model initialization and cold start from warm page processing. Record accelerator, backend, package lock, model revisions, tier/pipeline, concurrency, peak memory and retries. Report both latency and sustained throughput with the actual output files.
There is no verified shared timing run on this page. Choose a parser after testing its outputs in your downstream search, extraction or citation workflow; Markdown that looks plausible may still omit content.
Review code and model terms independently
Docling code is MIT-licensed. MinerU’s current license adds conditions to an Apache-2.0 base; it should not be summarized as plain Apache-2.0 or an old AGPL release. Inspect the selected models and dependencies as well as the top-level repository license.
MinerU current license text ↗Primary sources
Documentation and licensing were checked on 7 October 2026. Pin package versions, model checkpoints and configuration in your own environment; upstream defaults can change.