2190894

Tesseract OCR: Dokumente mit Texterkennung scannen

22.07.2016 | 14:52 Uhr |

Eine gute Texterkennung (OCR) ist manchmal unverzichtbar. Tesseract OCR für Linux gehört zu den besten Freeware-Tools dieser Klasse.

Es ist kein Problem, Texte als Bilddateien zu speichern. Der umgekehrte Weg, ein eingescanntes oder abfotografiertes Dokument wieder zu einem Text zu machen, ist nicht so einfach. Wenn auch noch Spaltenlayout, Bildelemente und viele Ungenauigkeiten auf dem Scan auftreten, dann muss eine Texterkennungssoftware eine hochentwickelte Mustererkennung besitzen. Nur ausgereifte OCR-Programme werden ein passables Ergebnis zustande bringen.

Das Konzept optischer Zeichenerkennung (OCR, Optical Character Recognition) ist weit älter als moderne Computer. Ein frühes Patent zur Umwandlung von gedruckten Buchstaben in Morsezeichen wurde bereits 1912 vergeben. Die Technologie gewann als Lesehilfe für Blinde an Bedeutung und machte schließlich mit der Verbreitung erster Computer in den 50er-Jahren unter der Ägide von IBM große Fortschritte. Infolge der Verbesserung von Scannerhardware und Software wurde das OCR-Verfahren auch zur Digitalisierung von allgemeinen Papierdokumenten ohne spezielle OCR-Schrift-arten praktikabel.

Heute ist Texterkennung ein Produktivitätstool und es gibt für private Nutzer eine passable Auswahl leistungsfähiger OCR-Programme ab 130 Euro. Doch kaum eines der bekannteren kommerziellen Programme läuft unter Linux. Aber es gibt ein Open-Source-Projekt, das zu den besten Texterkennungsprogrammen gehört: Tesseract OCR.

Tipp: Die besten Geräte zum Scannen, Drucken und Kopieren

Hohe Erkennungsraten bei OCR sind ein Muss

Eine OCR-Software darf keine hohen Fehlerraten haben. Da bei der Digitalisierung ganzer Seiten schnell Zehntausende Zeichen anfallen, produziert eine Fehlerrate von wenigen Prozent eine stattliche Anzahl falscher Buchstaben und macht manuelle Nacharbeit notwendig. OCR-Programme zielen deshalb bei der Erkennung lateinischer Schriftzeichen auf eine Rate von mindestens 98 Prozent. Tesseract OCR ist derzeit das einzige Open-Source-Programm, das in dieser Liga spielt.

In Tesseract OCR stecken mehr als zwanzig Jahre Entwicklungszeit: 1985 begann HP mit der Arbeit an einer Texterkennung, die es bis 1994 auf eine Präzision von 98,7 Prozent brachte. Obwohl es damit die Mitbewerber in den Schatten stellte, schaffte es Tesseract nie zu einer fertigen Version, die HP mit seinen Flachbettscannern hätte ausliefern können. Von 1995 bis 2005 ruhte das Projekt komplett und HP veröffentlichte Tesseract schließlich als Open Source (Apache-Lizenz), als es schon beinahe irrelevant war. Denn für eine komplette OCR-Software fehlte noch die automatische Layoutanalyse, die mehrspaltigen Text verarbeiten konnte.

Die verwendeten Algorithmen, die Muster in einer Pipeline schrittweise bis zum fertigen Wort verarbeiten, schlugen sich aber immer so gut, dass sich Google des Projekts annahm. Google benötigte eine OCR-Software für das Onlineangebot Google Books und entwickelte Tesseract OCR weiter. Seit 2006 ist die Layoutanalyse hinzugekommen sowie Zeichenerkennung für nicht-europäische Sprachen. Tesseract OCR reifte zur aktuellen Version 3.0, die in den Paketquellen aller großen Linux-Distributionen vorliegt.

Bildmaterial vorbereiten

Aufgrund der Arbeitsweise von Tesseract OCR muss die Bildgröße so gewählt werden, dass Buchstaben mindestens eine Höhe von 20 Pixel haben. Dies entspricht einer Auflösung von 300 dpi bei einer Schriftgröße von zehn Punkt. Generell gilt: je mehr Pixel, desto besser. Liegen die Scans oder Fotografien in einer niedrigeren Pixeldichte vor, so muss diese mit einer Bildbearbeitung wie Gimp erst noch auf eine höhere Auflösung gebracht werden. Worauf Tesseract OCR sehr verschnupft reagiert, sind stark verzerrte Grundlinien von Textzeilen und verdrehte Seiten, wie sie bei abfotografierten Buchseiten entstehen. Diese Defekte sollten so weit wie möglich korrigiert werden.

Tesseract unter Linux installieren und nutzen

Tesseract selbst liefert nur die OCR-Engine, die als Kommandozeilentool arbeitet. Ziel der Entwickler ist, Tesseract OCR so flexibel zu halten, dass es auch anderen OCR-Projekten als zentrale Komponente dienen kann. Es gibt auch grafische Front-Ends zu Tesseract OCR. Der erste Schritt aber ist die Installation der Texterkennung zusammen mit den separaten Sprachdateien, die der Mustererkennung die benötigten Informationen liefern.

Erst grafische Front-Ends machen aus Tesseract OCR eine Desktopanwendung.
Vergrößern Erst grafische Front-Ends machen aus Tesseract OCR eine Desktopanwendung.

Lese-Tipp: Die richtige Linux-Distribution für Einsteiger

In Debian/Ubuntu installieren Sie das OCR-Programm mit Erkennungsmuster für deutschen und englischen Text mit diesem Befehl:

sudo apt-get install tesseract-ocr-deu tesseract-ocr-eng tesseract-ocr

In Open Suse heißen die Pakete anders und können mit

sudo zypper install tesseract-ocr-traineddata-german tesseract-ocr-traineddata-english tesser act-ocr

nachgerüstet werden. Fedora schließlich installiert mit dem Befehl

sudo dnf install tesseract tesser act-langpack-deu

alle Pakete, da Englisch bereits im Basispaket enthalten ist. Daneben gibt es für Tesseract OCR 3.0 noch über hundert weitere Sprachdateien und auch Daten für besondere Fonts wie Frakturschrift.

Als pures Kommandozeilentool erwartet Tesseract OCR die Übergabe einer hochauflösenden Bilddatei (300 DPI) in den Formaten JPG, PNG, TIFF oder BMP. Ein manueller Aufruf erfolgt nach dieser Syntax:

tesseract [Bilddatei] [Textdatei] -l [Sprache]

Damit beispielsweise die Bilddatei „scan.jpg“ mit der Texterkennung für deutschsprachige Dokumente eingelesen und zu einer Datei mit dem Namen „scan.txt“ umgewandelt wird, wäre dieser Befehl nötig:

tesseract scan.jpg scan -l deu

Während die Angabe der gewünschten Sprache immer notwendig ist, erkennt Tesseract OCR das Bildformat der Eingabedatei automatisch und hängt auch an die ausgegebene Datei automatisch die Endung „.txt“ an. Die Unterstützung für englischsprachige Texte wird mit dem Parameter „eng“ statt „deu“ eingeschaltet. Die Bedienung auf der Kommandozeile ist zwar nicht kompliziert, aber für die Arbeit auf dem Linux-Desktop in einer Büroumgebung nicht intuitiv genug. Besser ist es, diesen Schritt einem der grafischen Front-Ends zu überlassen.

Siehe auch: Die besten Tipps & Tricks für Office 2016

Gimagereader als Front-End

Das bekannteste Programm, das Tesseract OCR mit einer GUI zu einer grafischen Anwendung macht, ist der Gimagereader. Dessen Oberfläche bildet die wichtigsten Funktionen in Menüpunkten ab. Es gibt ein Vorschaufenster für die Bilddatei und ein Ausgabefenster, das nach einem Erkennungslauf das Ergebnis anzeigt. Sollen mehrere gescannte Bildseiten aus einem bereits erstellten PDF in Text umgewandelt werden, so kann Gimagereader das gesamte Dokument automatisch in Einzelseiten zerlegen und an Tesseract OCR entsprechend weitergeben. Eine manuelle Konvertierung entfällt damit. Über Sane gibt es zudem eine Scannerschnittstelle, um Dokumente von unterstützen Flachbettscannern direkt einzulesen.

Mit seinen vielen nützlichen Funktionen ist Gimagereader die ideale Ergänzung zu Tesseract.
Vergrößern Mit seinen vielen nützlichen Funktionen ist Gimagereader die ideale Ergänzung zu Tesseract.

Eine große Hilfe ist die Vorschaufunktion bei Seiten mit hohen Bildanteilen und komplizierten Layouts, denn eine Auswahlbox erlaubt es, nur einen bestimmten Bereich an das OCR-Programm zu schicken.

Eine weiteres durchdachtes Extra: Gimagereader kann auf den resultierenden Text gleich die Rechtschreibprüfung hunspell anwenden, die auch Libre Office verwendet. Denn auch bei sehr guten Scans werden sich Fehler nicht ganz vermeiden lassen.

Gimagereader ist als GTK-Programm ideal für Gnome, Unity, Cinnamon und XFCE. Das Programm liegt in den Standardpaketquellen bei Ubuntu ab Version 15.10, in Debian ab Version 8 und auch unter Fedora. Es ist in den neueren Debian oder Ubuntu-Versionen mit

sudo apt-get install gimagereader

schnell installiert. Anwender der LTS-Version Ubuntu 14.04 finden das Programm in einem PPA (inoffiziellen Repository) des Entwicklers unter https://launchpad.net/~sandro mani/+archive/ubuntu/gimagereader . Das PPA muss vor der Installation des Pakets mittels

sudo apt-add-repository ppa:sandromani/gimagereader sudo apt-get update

in die Paketquellen aufgenommen werden.

Nach dem ersten Start von Gimagereader erkennt das Programm automatisch den Pfad zu Tesseract und den installierten Sprachdateien. In der linken Spalte öffnet „Datei“ existierende Bilddateien oder bezieht diese mit „Erwerben“ über einen angeschlossenen Scanner. Die Bilddatei erscheint als Vorschau in der Mitte des Fensters. In der Menüzeile wählen Sie über den Pfeil neben „Alles erkennen“ die Sprache aus und ein Klick auf das ABC-Symbol startet den Erkennungslauf. Der erkannte Text ist im rechten Fenster zu sehen und der unkomplizierte Editor kann noch Rechtschreibfehler hervorheben und Zeilenumbrüche automatisch entfernen.

Das Programm YAGF unter Open Suse: In seinen Funktionen ist das Front-End für KDE dem Gimagereader ähnlich.
Vergrößern Das Programm YAGF unter Open Suse: In seinen Funktionen ist das Front-End für KDE dem Gimagereader ähnlich.

YAGF für KDE

Während Gimagereader für Gnome-ähnliche Desktops ist, gibt es für KDE als Alternative das Front-End YAGF mit einem ähnlichen Funktionsumfang. YAGF unterstützt als OCR-Programm neben Tesseract auch Cuneiform, kann ebenfalls per Sane auf einen Scanner zugreifen und bietet eine Rechtschreibkorrektur, die aber mit der Bibliothek Aspell arbeitet. YAGF liegt für die diversen Versionen von Open Suse als inoffizielles Paket im Build Service und kann von dort mit „Download package“ unkompliziert mit ein paar Klicks installiert werden. YAGF ist auch in den Paketquellen von Debian, Ubuntu und Fedora vorhanden, läuft erfahrungsgemäß unter diesen Distributionen nicht stabil genug.

Ocrfeeder erlaubt die Anpassung der einzelnen Textbereiche, bevor sie an Tesseract übergeben werden.
Vergrößern Ocrfeeder erlaubt die Anpassung der einzelnen Textbereiche, bevor sie an Tesseract übergeben werden.

Layoutanalyse mit Ocrfeeder

Ein noch junges Programm, das Anwendern schon bei der Bearbeitung des Quellmaterials einige Arbeitsschritte abnehmen möchte, ist Ocrfeeder. Gut geeignet ist das grafische Tool bei Scans von Seiten, deren Layout mit vielen Bildelementen versehen ist, denn Ocrfeeder verfügt über eine recht zuverlässige Layoutanalyse und teilt eine Seite selbständig in einzelne zusammenhängende Textabschnitte ein. Derzeit liegt Ocrfeeder nur in den Paketquellen von Debian und Ubuntu zur einfachen Installation mit

sudo apt-get install ocrfeeder

bereit. Das Programm setzt ebenfalls ein bereits installiertes Tesseract OCR mit den gewünschten Sprachdateien voraus, die es beim Start automatisch erkennt. Sind weitere OCR-Programm wie Cuneiform installiert, dann müssen Sie Tesseract unter „Bearbeiten -> Einstellungen -> Werkzeuge -> Bevorzuge Anwendung“ explizit auswählen. Die schlichte Oberfläche ist selbsterklärend. Unter „Werkzeuge“ gibt es mit „Unpaper“ eine Funktion, die schwarze Ränder entfernt und Textinhalt anhand eines definierbaren Kontrast-Schwellenwerts bei schwachen Scans deutlicher herausarbeitet. Anschließend startet ein Klick auf „Automatische Detektion“ eine Layoutanalyse und teilt jede Seite in Bereiche auf, die es einzeln an Tesseract übergibt. Beim Klick auf jeden farblich hinterlegten Bereich erhalten Sie im Vorschaufenster rechts das Teilergebnis der Erkennung, wobei sich Bereiche noch manuell in Größe und Position ziehen lassen. Ocrfeeder ist eine gute Ergänzung, wenn der zu erkennende Text auf einer Seite über viele einzelne Layoutelemente verteilt ist.

Algorithmen: Was Tesseract OCR auszeichnet

Tesseract OCR fasst die Umrisse von dicktengleicher Schrift erst zu losen Formen zusammen.
Vergrößern Tesseract OCR fasst die Umrisse von dicktengleicher Schrift erst zu losen Formen zusammen.

Tesseract OCR ist relativ langsam, denn seine Präzision erreicht das Programm mit einer ungewöhnlichen Auswahl von Algorithmen, die nach der groben Aufteilung einer Seite in Layoutelemente den Umriss von Zeichen nachzeichnen und in Hierarchien gliedern. Dieses Verfahren kostet viel Rechenzeit, hat aber den Vorteil, dass es auch invertierten Text mit weißer Schrift auf schwarzem Grund erkennt. Die Umrisse werden zu Formen („Blobs“), die den Textfluss in Zeilen gliedern. Bei einer dicktengleichen Schrift geht es zur Erkennung einzelner Buchstaben, bei proportionalen Schriftbildern erfolgt die Abgrenzung nach Wörtern. Die eigentliche OCR läuft dann in zwei Phasen ab: Eine Mustererkennung findet Wörter anhand bekannter Merkmale, ist dabei aber lernfähig und generiert für das aktuelle Dokument einen neuen Katalog von Mustern. Ein zweiter Durchlauf nimmt diesen temporären Katalog zur Hand, um eventuell noch nicht erkannte Wörter zu identifizieren.

0 Kommentare zu diesem Artikel
2190894