Docling
Local document converter with structured JSON and Markdown output.
What is known from testing
On 2026-10-11, the headlesson operator ran all 3 steps of this lesson with Docling 2.137.0 (macOS26.5.2 arm64; Python3.11.13 disposable venv; wheel-only PyPI installation; no LLM use), and all passed. The final Next step is advice and was not run. An independent check (revision 3fadc9d) covered: Independent trial and audit on one self-made English page: headings, text and a table compared with the Markdown output; the source PDF was rendered independently. Its limits: Sample-limited. Scanned images, Japanese OCR and complex real documents were not measured. This is the operator's own run, not a vendor claim.
- Test record: test:zcpidpi — 2026-10-11, 2.137.0, passed
Independent check
Independent check (revision 3fadc9d6215b): Independent trial and audit on one self-made English page: headings, text and a table compared with the Markdown output; the source PDF was rendered independently.
Limits: Sample-limited. Scanned images, Japanese OCR and complex real documents were not measured.
Description
Docling parses documents including PDF layout and OCR content into a DoclingDocument representation. It supports local and air-gapped processing when required assets are prepared. Optional VLM pipelines can use selected models.
Current lesson
Goal: Convert one owner-chosen local PDF and inspect the output.
This is the current lesson. The test record above was run on the lesson as it was at its own revision; they can differ.
- 1. pip install docling
- 2. docling ./sample.pdf
- 3. Inspect the generated Markdown in the current directory against the original PDF.
Next (advice, not tested): Next: Select the real document and output destination with the user, run docling <confirmed-document-path>, then compare text, tables and reading order with the original. Record missing or misread content before sending the output to a downstream LLM.
Cautions recorded with the lesson
These notes come from the lesson. Some describe failures seen in tests; others are general cautions. Each one is not a separately tested result.
- Python 3.10 or newer and an owner-provided sample.pdf are prerequisites; first use may download model assets.
- Software MIT licensing does not determine every model component or weight license.
- Japanese OCR support is backend/version dependent and is not an accuracy guarantee.
- Successful conversion or schema validation does not prove source-faithful transcription.
- Confirm: Check formats/languages, model assets, output path and permission/costs for any downstream external transfer; a successful conversion is not an accuracy guarantee.
How to start
- cli Docling CLI: install
pip install docling; checkunknown; auth: Local default processing; optional remote conversion backends have their own authentication.; docs: https://github.com/docling-project/docling/blob/main/README.md - mcp-stdio Docling MCP: install
uvx --from=docling-mcp docling-mcp-server; checkunknown; auth: Default local conversion; remote backend options require separate configuration.; docs: https://docling-project.github.io/docling/usage/mcp/ - rest Docling Serve REST API (separate docling-serve component): install
unknown; checkunknown; auth: A running docling-serve endpoint and its service URL; an API key is needed if that server requires DOCLING_SERVE_API_KEY.; docs: https://docling-project.github.io/docling/usage/api_server/
Where each of these values comes from is listed per field under Sources (/interfaces/N/field).
Compared facts
- license: MIT (checked 2026-10-09, primary, official; source: https://github.com/docling-project/docling/blob/main/LICENSE)
- open_source: true (checked 2026-10-09, primary, official; source: https://github.com/docling-project/docling/blob/main/README.md)
- pricing: unknown (not confirmed)
- has_human_gui: unknown (not confirmed)
- non_interactive: unknown (not confirmed)
- machine_output: true (checked 2026-10-09, primary, official; source: https://github.com/docling-project/docling/blob/main/README.md)
- local_mcp: true (checked 2026-10-09, primary, official; source: https://docling-project.github.io/docling/usage/mcp/)
- remote_mcp: unknown (not confirmed)
- cli: true (checked 2026-10-09, primary, official; source: https://github.com/docling-project/docling/blob/main/README.md)
- rest_api: true (checked 2026-10-09, primary, official; source: https://docling-project.github.io/docling/usage/api_server/)
- auth: none (checked 2026-10-09, inferred, editorial; source: https://github.com/docling-project/docling/blob/main/README.md)
- self_hostable: true (checked 2026-10-09, primary, official; source: https://github.com/docling-project/docling/blob/main/README.md)
- embeds_llm: yes (checked 2026-10-09, primary, official; source: https://github.com/docling-project/docling/blob/main/README.md)
- refusal_contract: unknown (not confirmed)
- audit_log: unknown (not confirmed)
- last_release: 2026-10-09 (checked 2026-10-09, primary, official; source: https://pypi.org/pypi/docling/json)
- ja_support: true (checked 2026-10-09, primary, official; source: https://docling-project.github.io/docling/concepts/OCR_native/)
Sources
Each line names fields of this page (as JSON pointers into the .json version) and where they come from. Labels without a link are non-public sources. Fields not listed (such as test results) are the headlesson operator's own observations.
- /name, /one_liner, /lesson/cautions/items/1, /interfaces/0/kind, /interfaces/0/name, /interfaces/0/install, /interfaces/0/auth, /interfaces/0/docs, /axes/open_source, /axes/machine_output, /axes/cli, /axes/self_hostable, /axes/embeds_llm, /relations/0: https://github.com/docling-project/docling/blob/main/README.md (checked 2026-10-09, primary, official)
- /description, /lesson/steps/0, /lesson/steps/1: https://github.com/docling-project/docling/blob/main/README.md (checked 2026-10-09, primary, editorial)
- /lesson/goal, /lesson/steps/2, /lesson/cautions/items/0, /lesson/cautions/items/3: headlesson editorial judgement (checked 2026-10-09, inferred, editorial)
- /lesson/next_advice, /lesson/cautions/items/4: https://raw.githubusercontent.com/docling-project/docling/main/README.md (checked 2026-10-10, inferred, editorial)
- /lesson/cautions/items/2: https://docling-project.github.io/docling/concepts/OCR/ (checked 2026-10-09, primary, official)
- /interfaces/1/kind, /interfaces/1/name, /interfaces/1/install, /interfaces/1/auth, /interfaces/1/docs, /axes/local_mcp: https://docling-project.github.io/docling/usage/mcp/ (checked 2026-10-09, primary, official)
- /interfaces/2/kind, /interfaces/2/name, /interfaces/2/auth, /interfaces/2/docs: https://docling-project.github.io/docling/usage/api_server/ (checked 2026-10-09, primary, editorial)
- /axes/license: https://github.com/docling-project/docling/blob/main/LICENSE (checked 2026-10-09, primary, official)
- /axes/rest_api: https://docling-project.github.io/docling/usage/api_server/ (checked 2026-10-09, primary, official)
- /axes/auth: https://github.com/docling-project/docling/blob/main/README.md (checked 2026-10-09, inferred, editorial)
- /axes/last_release: https://pypi.org/pypi/docling/json (checked 2026-10-09, primary, official)
- /axes/ja_support: https://docling-project.github.io/docling/concepts/OCR_native/ (checked 2026-10-09, primary, official)
Primary record
Test results here are the operator's own past lesson trials (legacy). They are not claimed to meet level L1 of run-task-contract/0.1.0.
Relations
- used-for: usecase:parse-documents-for-llm
3 other relations point to records that are not published yet.
Retrieve over MCP
headlesson_get id="app:docling" sections ["lesson","gotchas"] on https://mcp.headlesson.com/mcp
Cite
headlesson app:docling: see test record test:zcpidpi (https://headlesson.com/tests/zcpidpi).
Page updated: 2026-10-13 (the date its content last changed).
要約(日本語): Docling。運営の試用(2026-10-11、2.137.0、passed)の記録がある。詳しい条件・限界・出典は本文のとおり。