Retrieval Augmented Generation (RAG) ist 2026 der Standard-Ansatz, um LLMs mit unternehmenseigenen Daten zu verbinden. Doch viele RAG-Systeme liefern enttäuschende Ergebnisse — nicht wegen des LLMs, sondern wegen einer unterschätzten Schwachstelle: der OCR-Qualität.
Was ist RAG — und warum braucht es OCR?
Dokumente (PDF, Scans, Bilder)
|
v
OCR / Text-Extraktion -- HIER entscheidet sich die Qualität
|
v
Chunking -- Text in Abschnitte teilen
|
v
Embedding -- Vektoren erzeugen
|
v
Vector DB -- Speichern
|
v
Query -> Retrieval -> LLM -> Antwort
Wenn die OCR im ersten Schritt Fehler macht, pflanzen sich diese durch die gesamte Pipeline fort.
Das “Hidden Ceiling” Problem
| OCR-Genauigkeit | RAG-Antwortqualität | Korrekte Zahlenwerte |
|---|---|---|
| 90 % | 72 % | 61 % |
| 95 % | 84 % | 78 % |
| 99 % | 96 % | 94 % |
| 99,2 % (German-OCR) | 97 % | 96 % |
Jeder Prozentpunkt OCR-Genauigkeit über 95 % hat einen überproportionalen Effekt auf die RAG-Qualität.
Wie sich OCR-Fehler auswirken
Zahlen: “15.847,23 €” wird zu “15.B47,23 €” — das RAG-System findet den Betrag nicht mehr.
Umlaute: “Bürgschaftserklärung” wird zu “Brgschaftserklrung” — völlig andere Vektorrepräsentation.
Tabellen: Ohne korrekte Strukturerkennung werden Zeilen und Spalten vermischt.
Tabellen als Markdown: Weniger Halluzinationen
Die Konvertierung von Tabellen in Markdown-Format reduziert numerische Halluzinationen signifikant. German-OCR gibt Tabellen standardmäßig als strukturiertes Markdown aus.
Best Practices für OCR in RAG-Pipelines
- OCR-Qualität maximieren: Der wirkungsvollste Hebel in der gesamten Pipeline
- Strukturierte Extraktion: Tabellen, Überschriften, Listen als solche markiert
- Intelligentes Chunking: Dokumentenstruktur nutzen, nicht blind nach Token-Anzahl
- Metadaten anreichern: Dokumenttyp, Datum, Seitenzahl, Confidence Score
- Quality Gate: Nur Dokumente mit ausreichend hohem Confidence-Score verarbeiten
Praxis: German-OCR in einer RAG-Pipeline
import german_ocr
from langchain.text_splitter import MarkdownHeaderTextSplitter
ocr_client = german_ocr.Client(api_key="your-german-ocr-key")
def process_document(file_path: str) -> dict:
result = ocr_client.process(
file=file_path,
model="german-ocr",
language="de",
output_format="markdown",
detect_tables=True,
detect_headers=True
)
return {
"text": result.markdown,
"confidence": result.confidence,
"metadata": {
"filename": file_path,
"pages": result.page_count,
"doc_type": result.detected_type
}
}
Fazit
Die OCR-Qualität ist der wichtigste und am meisten unterschätzte Faktor in RAG-Pipelines. Setzen Sie auf eine OCR-Lösung, die auf deutsche Sprachbesonderheiten spezialisiert ist, Tabellen strukturiert als Markdown ausgibt und einen Confidence Score mitliefert.
