Zum Inhalt springen

Docling - Dokumenten-Parsing für RAG Spickzettel

Docling - Dokumenten-Parsing für RAG Spickzettel

Docling ist ein Open-Source-Dokumenten-Parsing-Toolkit (ein LF AI & Data Projekt), das PDF, DOCX, PPTX, XLSX, HTML, Bilder und mehr in eine strukturierte Darstellung konvertiert — sauberes Markdown oder JSON, das Layout, Tabellen, Überschriften und Lesefolge bewahrt. Es enthält Hierarchie-bewusstes Chunking, das Chunks mit strukturellen Metadaten bereichert, und integriert sich direkt mit LangChain und LlamaIndex, was es zu einer der stärksten Open-Source-Optionen für die Ingestionsstufe einer RAG-Pipeline macht.

Installation

MethodeBefehl
pippip install docling
uvuv add docling
Mit OCR Extraspip install "docling[ocr]"
Überprüfungdocling --version

CLI-Verwendung

BefehlBeschreibung
docling document.pdfDatei in Markdown konvertieren (Standard)
docling --to json document.pdfStrukturiertes JSON ausgeben
docling --to md --output out/ report.docxIn ein Verzeichnis konvertieren
docling https://example.com/page.htmlVon einer URL konvertieren
docling --ocr scanned.pdfOCR für gescannte Dokumente erzwingen
docling --helpVollständige Optionsliste

Python: Grundlegende Konvertierung

from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")

doc = result.document
print(doc.export_to_markdown())   # sauberes Markdown
print(doc.export_to_dict())       # strukturiertes JSON-fähiges Dict
MethodeGibt zurück
export_to_markdown()Markdown mit bewahrt Überschriften/Tabellen
export_to_dict()Strukturiertes Dokumentenmodell (JSON-fähig)
export_to_doctags()DocTags-Darstellung
result.documentDas geparste DoclingDocument

Unterstützte Eingaben

FormatNotizen
PDFLayout, Tabellen, Lesefolge; OCR für Scans
DOCX / PPTX / XLSXOffice-Formate
HTMLWebseiten und Exporte
BilderPNG/JPG/TIFF via OCR
Markdown / AsciiDocIn das Dokumentenmodell restrukturiert

Hierarchie-Bewusstes Chunking

Doclings Chunker splitten ein gepartes Dokument zum Einbetten, während sie strukturelle Kontexte (Abschnittsüberschriften, Tabellengrenzen) in den Metadaten jedes Chunks halten.

from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

doc = DocumentConverter().convert("report.pdf").document
chunker = HybridChunker(tokenizer="sentence-transformers/all-MiniLM-L6-v2")

for chunk in chunker.chunk(doc):
    print(chunk.text)
    print(chunk.meta)   # Überschriften, Seite, Provenienz
ChunkerVerhalten
HierarchicalChunkerAuf Dokumentstruktur aufteilen (Abschnitte, Elemente)
HybridChunkerStruktur-bewusst + Tokenizer-bewusste Größe/Zusammenführung
chunk.metaTrägt Überschriften/Provenienz für Kontexterweiterung

RAG-Framework-Integration

FrameworkWie
LangChainDoclingLoader gibt Dokumente/Chunks zurück
LlamaIndexDocling Reader/Node Parser
Customexport_to_markdown() oder Chunker-Output direkt verwenden
# LangChain Beispiel
from langchain_docling import DoclingLoader
docs = DoclingLoader(file_path="report.pdf").load()

Performance & Optionen

OptionZweck
OCR EngineOCR wählen/deaktivieren (EasyOCR, Tesseract, etc.)
Table ModeGenaue vs. schnelle Tabellen-Struktur-Recovery
DeviceModelle auf CPU oder GPU ausführen
Page RangeKonvertierung auf spezifische Seiten begrenzen
Pipeline OptionsPro Format Konvertierungs-Pipeline abstimmen

Häufige Workflows

# PDFs-Ordner in Markdown für Ingestion konvertieren
for f in docs/*.pdf; do docling --to md --output corpus/ "$f"; done
# Parse → Chunk → Embed, der RAG Ingestions-Kern
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

doc = DocumentConverter().convert("manual.pdf").document
chunks = list(HybridChunker().chunk(doc))
# jeden chunk.text mit deinem Modell einbetten, chunk.meta daneben speichern

Docling vs Andere Parser

AspektDoclingUnstructuredMarker
OutputMarkdown + strukturiertes ModellTypisierte ElementeMarkdown
ChunkingEingebaut, Hierarchie-bewusstElement-basiertExtern
GeschwindigkeitGut (CPU)GutSchnellste mit GPU
Am besten fürSelf-Hosted RAG IngestionTypisierte Element PipelinesGPU Bulk Markdown

Ressourcen