{
 "kind": "app",
 "id": "app:docling",
 "url": "https://headlesson.com/apps/docling",
 "name": "Docling",
 "one_liner": "Local document converter with structured JSON and Markdown output.",
 "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.",
 "made_by_headlesson_operator": false,
 "interfaces": [
  {
   "kind": "cli",
   "name": "Docling CLI",
   "install": "pip install docling",
   "verify": "unknown",
   "auth": "Local default processing; optional remote conversion backends have their own authentication.",
   "docs": "https://github.com/docling-project/docling/blob/main/README.md"
  },
  {
   "kind": "mcp-stdio",
   "name": "Docling MCP",
   "install": "uvx --from=docling-mcp docling-mcp-server",
   "verify": "unknown",
   "auth": "Default local conversion; remote backend options require separate configuration.",
   "docs": "https://docling-project.github.io/docling/usage/mcp/"
  },
  {
   "kind": "rest",
   "name": "Docling Serve REST API (separate docling-serve component)",
   "install": "unknown",
   "verify": "unknown",
   "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/"
  }
 ],
 "tests": [
  {
   "record_id": "test:zcpidpi",
   "url": "https://headlesson.com/tests/zcpidpi",
   "date": "2026-10-11",
   "version": "2.137.0",
   "status": "passed"
  }
 ],
 "latest_test_conclusion": "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.",
 "independent_check": {
  "state": "recorded",
  "revision": "3fadc9d6215b5a823c490dfc86f16d93dac683b2",
  "scope": "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."
 },
 "lesson": {
  "goal": "Convert one owner-chosen local PDF and inspect the output.",
  "steps": [
   "pip install docling",
   "docling ./sample.pdf",
   "Inspect the generated Markdown in the current directory against the original PDF."
  ],
  "next_advice": "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": {
   "note": "These notes come from the lesson. Some describe failures seen in tests; others are general cautions. Each one is not a separately tested result.",
   "items": [
    "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."
   ]
  },
  "note": "This is the current lesson. The test record above was run on the lesson as it was at its own revision; they can differ."
 },
 "mcp_get": "headlesson_get id=\"app:docling\" sections [\"lesson\",\"gotchas\"]",
 "axes": {
  "license": {
   "value": "MIT",
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://github.com/docling-project/docling/blob/main/LICENSE",
   "by": "official"
  },
  "open_source": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "by": "official"
  },
  "pricing": {
   "value": "unknown",
   "checked": null,
   "certainty": null,
   "source": null,
   "by": null
  },
  "has_human_gui": {
   "value": "unknown",
   "checked": null,
   "certainty": null,
   "source": null,
   "by": null
  },
  "non_interactive": {
   "value": "unknown",
   "checked": null,
   "certainty": null,
   "source": null,
   "by": null
  },
  "machine_output": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "by": "official"
  },
  "local_mcp": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://docling-project.github.io/docling/usage/mcp/",
   "by": "official"
  },
  "remote_mcp": {
   "value": "unknown",
   "checked": null,
   "certainty": null,
   "source": null,
   "by": null
  },
  "cli": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "by": "official"
  },
  "rest_api": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://docling-project.github.io/docling/usage/api_server/",
   "by": "official"
  },
  "auth": {
   "value": "none",
   "checked": "2026-10-09",
   "certainty": "inferred",
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "by": "editorial"
  },
  "self_hostable": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "by": "official"
  },
  "embeds_llm": {
   "value": "yes",
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "by": "official"
  },
  "refusal_contract": {
   "value": "unknown",
   "checked": null,
   "certainty": null,
   "source": null,
   "by": null
  },
  "audit_log": {
   "value": "unknown",
   "checked": null,
   "certainty": null,
   "source": null,
   "by": null
  },
  "last_release": {
   "value": "2026-10-09",
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://pypi.org/pypi/docling/json",
   "by": "official"
  },
  "ja_support": {
   "value": true,
   "checked": "2026-10-09",
   "certainty": "primary",
   "source": "https://docling-project.github.io/docling/concepts/OCR_native/",
   "by": "official"
  }
 },
 "sources": [
  {
   "fields": [
    "/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"
   ],
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "official"
  },
  {
   "fields": [
    "/description",
    "/lesson/steps/0",
    "/lesson/steps/1"
   ],
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "editorial"
  },
  {
   "fields": [
    "/lesson/goal",
    "/lesson/steps/2",
    "/lesson/cautions/items/0",
    "/lesson/cautions/items/3"
   ],
   "source": "headlesson editorial judgement",
   "checked": "2026-10-09",
   "certainty": "inferred",
   "by": "editorial"
  },
  {
   "fields": [
    "/lesson/next_advice",
    "/lesson/cautions/items/4"
   ],
   "source": "https://raw.githubusercontent.com/docling-project/docling/main/README.md",
   "checked": "2026-10-10",
   "certainty": "inferred",
   "by": "editorial"
  },
  {
   "fields": [
    "/lesson/cautions/items/2"
   ],
   "source": "https://docling-project.github.io/docling/concepts/OCR/",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "official"
  },
  {
   "fields": [
    "/interfaces/1/kind",
    "/interfaces/1/name",
    "/interfaces/1/install",
    "/interfaces/1/auth",
    "/interfaces/1/docs",
    "/axes/local_mcp"
   ],
   "source": "https://docling-project.github.io/docling/usage/mcp/",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "official"
  },
  {
   "fields": [
    "/interfaces/2/kind",
    "/interfaces/2/name",
    "/interfaces/2/auth",
    "/interfaces/2/docs"
   ],
   "source": "https://docling-project.github.io/docling/usage/api_server/",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "editorial"
  },
  {
   "fields": [
    "/axes/license"
   ],
   "source": "https://github.com/docling-project/docling/blob/main/LICENSE",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "official"
  },
  {
   "fields": [
    "/axes/rest_api"
   ],
   "source": "https://docling-project.github.io/docling/usage/api_server/",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "official"
  },
  {
   "fields": [
    "/axes/auth"
   ],
   "source": "https://github.com/docling-project/docling/blob/main/README.md",
   "checked": "2026-10-09",
   "certainty": "inferred",
   "by": "editorial"
  },
  {
   "fields": [
    "/axes/last_release"
   ],
   "source": "https://pypi.org/pypi/docling/json",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "official"
  },
  {
   "fields": [
    "/axes/ja_support"
   ],
   "source": "https://docling-project.github.io/docling/concepts/OCR_native/",
   "checked": "2026-10-09",
   "certainty": "primary",
   "by": "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": [
  {
   "type": "used-for",
   "to": "usecase:parse-documents-for-llm",
   "url": "https://headlesson.com/usecases/parse-documents-for-llm"
  }
 ],
 "relations_not_published": 3,
 "cite": "headlesson app:docling: see test record test:zcpidpi (https://headlesson.com/tests/zcpidpi).",
 "page_updated": "2026-10-13"
}
