Vollständige Technische Dokumentation zu Docling
- Docling ist eine 100% kostenlose Open-Source-Engine (MIT), die PDFs, DOCX, PPTX, XLSX, gescannte Bilder und Audio in strukturiertes Markdown, HTML und JSON umwandelt.
- Enthält Layout-Analyse, Lesereihenfolge-Erkennung und das TableFormer v2 Modell für komplexe Tabellen.
- Unterstützt mehrsprachiges OCR mit RapidOCR, Tesseract (tesserocr), EasyOCR und OcrMac.
- Läuft 100% lokal ohne Telemetrie, unterstützt Air-Gapped-Deployments, REST API (docling-serve) und MCP (docling-mcp).
1. Übersicht & Architektur
Docling ist eine Open-Source-Engine zur Dokumentenkonvertierung von IBM Research. Im Gegensatz zu einfachen Textextraktoren verarbeitet Docling Dokumente über modulare Pipelines, analysiert die Seitengeometrie, erkennt Bounding Boxes, rekonstruiert komplexe Tabellen und stellt die logische Lesereihenfolge für LLMs und RAG sicher.
2. Installation & Umgebungseinrichtung
Docling wird unter Python 3.9 bis 3.14 (64-Bit) auf Windows, macOS und Linux via pip oder uv installiert:
2.1 Windows 10/11 Installation & Visual C++ Setup
Unter Windows ist 64-Bit-Python erforderlich. Für pip-Builds mit C++-Erweiterungen (wie tesserocr) wird Microsoft Visual C++ 14.0+ benötigt:
Empfohlene Alternative (Ohne C++-Compiler): Nutzen Sie Astral uv zur Installation vorkompilierter Binärdateien:
3. Quickstart-Anleitung
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2408.09869")
print(result.document.export_to_markdown()[:500])
4. Das DoclingDocument Datenmodell
Das Kernmodell DoclingDocument verwaltet einen strukturierten Baum aus Abschnitten, Tabellen, Codeblöcken und Abbildungen mit Bounding-Box-Koordinaten, exportierbar via export_to_json().
5. Verarbeitungs-Pipelines & Granite Docling VLM
5.1 Granite Docling VLM Setup
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import VlmPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption
vlm_options = VlmPipelineOptions()
vlm_options.vlm_model = "granite_docling"
converter = DocumentConverter(
format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=vlm_options)}
)
result = converter.convert("dokument.pdf")
6. OCR-Engines & Performance-Optimierung
6.1 OCR Deaktivieren für digitale PDFs (10x schneller)
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = False # 10x schneller für digitale PDFs
converter = DocumentConverter(
format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("bericht.pdf")
7. Multiformat-Extraktion (Excel XLSX, PowerPoint PPTX, CAD & Audio)
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
excel_res = converter.convert("finanzen.xlsx")
print(excel_res.document.export_to_markdown())
8. RAG-Chunking mit `HybridChunker`
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker
converter = DocumentConverter()
result = converter.convert("artikel.pdf")
chunker = HybridChunker(max_tokens=512, merge_peers=True)
for chunk in chunker.chunk(result.document):
print(chunk.meta.headings, chunk.text[:80])
9. GPU-Batch-Beschleunigung
from docling.datamodel.accelerator_options import AcceleratorDevice, AcceleratorOptions
from docling.datamodel.pipeline_options import ThreadedPdfPipelineOptions
accel = AcceleratorOptions(device=AcceleratorDevice.CUDA)
pipe_opts = ThreadedPdfPipelineOptions(accelerator_options=accel, page_batch_size=8)
10. Framework-Integrationen (LangChain & LlamaIndex)
from langchain_docling import DoclingLoader
loader = DoclingLoader(file_path="bericht.pdf")
docs = loader.load()
11. VLM Vision Modell-Katalog
| Modell | Anbieter | Einsatzbereich | CLI-Parameter |
|---|---|---|---|
| granite_docling | IBM Research | Präzise visuelle PDF-Layout-Extraktion | --vlm-model granite_docling |
| smoldocling | Hugging Face / IBM | Leichtgewichtiges VLM für CPU | --vlm-model smoldocling |
12. FastAPI Server (`docling-serve`) & MCP-Server
12.1 MCP-Integration für Claude Desktop
{
"mcpServers": {
"docling": {
"command": "uvx",
"args": ["--from=docling-mcp", "docling-mcp-server"]
}
}
}
13. Unternehmenssicherheit & Air-Gapped Deployment
export DOCLING_CACHE_DIR="/opt/docling_models"
docling-tools models download --all
export HF_HUB_OFFLINE=1
export DOCLING_CACHE_DIR="/opt/docling_models"
docling dokument.pdf --to md
14. Entwickler-Diagnose & Fehlerbehebung
| Fehlermeldung | Ursache | Lösung |
|---|---|---|
| cannot import name 'BoundingBox' | Schema-Migration in Docling v2. | Importieren von from docling_core.types.doc import BoundingBox. |
| RapidOCR: text detection result is empty | Niedrige Scan-Auflösung. | pipeline_options.images_scale = 2.0 setzen. |
| Docling Version prüfen | CLI / Python Überprüfung. | docling --version im Terminal ausführen. |
15. Vollständige CLI-Parameter-Referenz
| Option / Flag | Typ | Standard | Beschreibung |
|---|---|---|---|
| --to | md, json, html, doctags | md | Ausgabeformat des Dokuments. |
| --no-ocr | Boolean | - | Deaktiviert OCR für schnellere digitale PDF-Konvertierung. |
| --version | Flag | - | Zeigt die installierte Docling-Version an. |