Zur Verbesserung der Scan-Qualität für die Texterkennung mit Tesseract OCR sind folgende Schritte entscheidend:
Bildoptimierung und Vorverarbeitung
Auflösung: Scannen Sie Dokumente mit mindestens 300 DPI (bei sehr kleiner Schrift auch höher), da Tesseract niedrigere Auflösungen oft nicht korrekt interpretiert.
Bildbereinigung: Nutzen Sie Tools wie Unpaper oder ImageMagick, um Störfaktoren wie Pixelrauschen (Noise), unerwünschte Ränder oder Verzerrungen zu entfernen.
Format: Verwenden Sie verlustfreie Formate wie TIFF oder PNG; JPG-Kompression kann die Erkennungsgenauigkeit durch Artefakte mindern.
Konfiguration und Engines
Sprachdaten: Laden Sie die passenden .traineddata-Dateien herunter (z. B. deu für Deutsch oder deu-frak für Fraktur), da Standardmodelle oft unzureichend sind.
Graphische Oberfläche: Nutzen Sie benutzerfreundliche Frontends wie gImageReader (Windows/Linux), die die Kommandozeilenbefehle von Tesseract vereinfachen und automatische Spracherkennung ermöglichen.
Batch-Verarbeitung: Für große Datenmengen eignen sich Skripte, die Bilder vorverarbeiten (z. B. mit Convert aus ImageMagick), bevor sie an Tesseract übergeben werden.
Erweiterte Techniken
hOCR-Format: Erzeugen Sie hOCR-Ausgaben, um die Layout-Informationen des Originals zu erhalten und durchsuchbare PDFs zu erstellen.
AIP (Advanced Image Processing): Spezialisierte Software kann die Bildqualität vor der OCR-Analyse weiter optimieren, um die Genauigkeit bei schlechten Vorlagen zu steigern.
Hier ist eine detaillierte Ausarbeitung zur Optimierung von Tesseract OCR, basierend auf aktuellen Best Practices und technischen Möglichkeiten:
Die größte Genauigkeitssteigerung (bis zu 30 % weniger Fehler) erzielen Sie nicht durch Tesseract selbst, sondern durch die Aufbereitung des Bildes vor der Erkennung.
Adaptive Schwellwertbildung: Statt eines globalen Schwarz-Weiß-Umbruchs nutzen Sie adaptive Methoden (z. B. in OpenCV), um lokale Lichtunterschiede auszugleichen. Dies ist entscheidend bei ungleichmäßig ausgeleuchteten Scans oder Schatten in Buchfalten.
Deskewing (Geraderücken): Selbst minimale Neigungen (< 5°) stören die Zeilenerkennung. Algorithmen berechnen den Neigungswinkel über die Hauptachsenanalyse und rotieren das Bild zurück, bevor es an Tesseract übergeben wird.
Rauschunterdrückung: Tools wie Unpaper oder Filter in ImageMagick entfernen „Salz-und-Pfeffer“-Rauschen und glätten Kanten, ohne feine Serifen zu zerstören.
Auflösungsskalierung: Falls das Original unter 300 DPI liegt, kann eine hochqualitative Hochskalierung (Interpolation) vor der OCR helfen, die Konturen für das neuronale Netz deutlicher zu machen.
2. Steuerung der Erkennungs-Engine (OEM & PSM)
Tesseract bietet verschiedene Modi, die über die Kommandozeile gesteuert werden. Die Wahl des falschen Modus ist eine häufige Fehlerquelle.
OCR Engine Mode (--oem):
OEM 3 (Default): Nutzt die moderne LSTM-Engine (Long Short-Term Memory). Diese ist für fast alle Anwendungsfälle überlegen, besonders bei komplexen Schriften oder schlechter Qualität.
OEM 0 (Legacy): Die alte Engine basiert auf Mustererkennung. Sie ist nur noch sinnvoll für sehr spezifische, historische Schriftarten, bei denen das LSTM-Modell versagt, oder auf extrem ressourcenbeschränkter Hardware.
Hinweis: Für viele Sprachen (z. B. Arabisch, Indisch) steht die Legacy-Engine gar nicht mehr zur Verfügung.
Page Segmentation Mode (--psm):
PSM 3 (Default): Vollautomatische Segmentierung. Gut für normale Dokumente.
PSM 6 (Uniform Block): Annahme eines einzigen Textblocks. Erhöht die Genauigkeit bei Dokumenten ohne komplexe Layouts (z. B. reine Briefe), da Tesseract nicht versucht, Spalten oder Bilder zu interpretieren.
PSM 11 (Sparse Text): Sucht nach Text ohne feste Ordnung. Ideal für Screenshots oder Dokumente mit vielen isolierten Beschriftungen.
3. Fortgeschrittene Techniken & Workflow
Domänenspezifisches Training:
Standardmodelle scheitern oft an Fachbegriffen (Medizin, Jura, alte Drucke). Mit dem tesstrain-Toolkit können Sie eigene .traineddata-Dateien erstellen. Das Training auf nur 200–500 Seiten spezifischen Ground-Truth-Materials kann die Fehlerrate von 5 % auf unter 1 % senken.
hOCR und durchsuchbare PDFs:
Nutzen Sie die Ausgabeoption hocr, um nicht nur den Text, sondern auch die Koordinaten jedes Wortes zu erhalten. Dies ermöglicht die Erstellung von PDFs, bei denen der Text unsichtbar über dem Bild liegt („Textschicht“), wodurch das Originallayout erhalten bleibt und das Dokument durchsuchbar wird.
Batch-Verarbeitung & Parallelisierung:
Da Tesseract pro Kern nur einen Prozess bedient, ist für große Mengen (z. B. 10.000+ Seiten) eine Parallelisierung notwendig. Skripte (Python multiprocessing oder Bash-Loops) verteilen die Bilder auf alle CPU-Kerne, was den Durchsatz auf Servern verzehnfachen kann.
Rechtschreibprüfung als Nachbearbeitung:
Als letzter Schritt kann eine wortbasierte Nachkorrektur (z. B. mit pyspellchecker) offensichtliche Erkennungsfehler („cln“ statt „ein“) beheben, insbesondere wenn das Vokabular des Dokuments bekannt ist.
4. Werkzeug-Empfehlungen
Für Einzelbilder & Korrektur: gImageReader bietet eine grafische Oberfläche, die das manuelle Korrigieren von Erkennungsfehlern im Kontext des Bildes erlaubt und direkt durchsuchbare PDFs exportiert.
Für Automatisierung: Die Kombination aus OCRmyPDF (welches Unpaper und Tesseract kapselt) und eigenen Python-Skripten mit OpenCV bietet die robusteste Pipeline für die Stapelverarbeitung.
Für Web-Anwendungen: Tesseract.js ermöglicht OCR direkt im Browser. Dies ist ca. 15 % ungenauer als die native Version, spart aber Server-Ressourcen und schützt die Privatsphäre, da keine Bilder hochgeladen werden müssen.
Die folgenden Preprocessing-Schritte erhöhen die Genauigkeit von Tesseract OCR signifikant (bis zu 30 % Verbesserung gegenüber Rohbildern):
1. Bildskalierung und Auflösung
Eine Mindestauflösung von 300 DPI ist essenziell. Bei pixellierten Bildern sollte eine Vergrößerung mit bikubischer Interpolation (INTER_CUBIC) durchgeführt werden, um die Kanten der Zeichen zu glätten, bevor sie an Tesseract übergeben werden.
2. Rauschreduzierung (Denoising)
Störfaktoren wie „Salz-und-Pfeffer-Rauschen“ (häufig bei Faxen) verfälschen die Erkennung.
Median-Filter: Entfernt isolierte Pixelstörungen, ohne Textkanten zu verwischen (z. B. cv2.medianBlur mit Kernel 3x3).
Gaußscher Filter: Geeignet für gleichmäßiges Hintergrundrauschen, sollte aber vorsichtig eingesetzt werden, um keine Details zu verlieren.
3. Binarisierung (Schwellwertbildung)
Dies ist oft der effektivste Einzelschritt. Er wandelt Graustufen in reines Schwarz-Weiß um, um den Kontrast zu maximieren.
Otsu-Methode: Ideal für Dokumente mit gleichmäßiger Beleuchtung; findet automatisch den optimalen Schwellwert.
Adaptive Schwellwertbildung: Unverzichtbar bei ungleichmäßiger Ausleuchtung oder Schatten; berechnet den Schwellwert lokal für kleine Bildbereiche.
4. Entzerrung (Deskewing)
Schiefe Scans stören die Zeilenerkennung massiv. Durch die Berechnung des Neigungswinkels (z. B. mittels minAreaRect auf Textkoordinaten) und anschließender Rotation wird der Text horizontal ausgerichtet. Dies kann die Fehlerrate bei schrägen Dokumenten drastisch senken.
5. Kontrast- und Kantenverbesserung
Graustufenkonvertierung: Entfernt Farbinformationen, die für die Texterkennung irrelevant sind und nur Rechenzeit kosten.
Schärfung (Sharpening): Filter wie die „Unsharp Mask“ können bei unscharfen Scans helfen, die Konturen der Buchstaben wiederherzustellen.