Aufmacher

Digitale Lektüre

Texterkennung mit Gocr

01.10.2007
Mit Gocr hält auch unter Linux die automatische Texterkennung Einzug und erspart damit dem Nutzer eine Menge Tipparbeit.

Der Computer hat sich – seit er in den Industrieländern zur Massenware geworden ist – als allzeit bereiter Helfer erwiesen, der den Anwendern dank immer ausgeklügelterer Software eine Menge Arbeit abnimmt. Ausgerechnet jedoch das zeitaufwändige und lästige Abtippen von Texten mussten die Nutzer bisher in den meisten Fällen nach wie vor manuell erledigen, weil entsprechend leistungsfähige Programme zur automatischen Texterkennung sehr teuer sind und sich daher für den Privatanwender nicht rechnen. Unter Linux geht es jedoch auch anders: Hier gibt es die Software nicht nur gratis, sie bringt obendrein auch noch ansprechende Ergebnisse.

Für die Texterkennung hat sich unter dem freien Betriebssystem das kleine Kommandozeilen-Programm Gocr [1] als Standard etabliert. Die Software blickt bereits auf einen mehrjährigen Entwicklungsprozess zurück und wird kontinuierlich verbessert und gepflegt. Gocr kommt bei nahezu allen Distributionen entweder gleich mit oder findet sich zumindest in den Repositories, sodass ein manuelles Kompilieren aus den Quellen nicht mehr nötig ist. Über Synaptic, Rpmdrake oder YaST gestaltet sich die Installation problemlos und schnell.

Königsdisziplin OCR

Die Optical Character Recognition (OCR), also die optische Zeichenerkennung, ist fast so alt wie die Computertechnik selbst. Da die Programmierung eines leistungsfähigen Texterkennungsprogramms jedoch technisch höchste Ansprüche stellt, gibt es nur wenig Software zu diesem Zweck. Schon zu DOS-Zeiten gab es in Form des aus Ungarn stammenden Programms Recognita eine recht leistungsfähige OCR-Software, die eine grafische Oberfläche bot und ansehnliche Erkennungsergebnisse erbrachte. Da die gängigen OCR-Programme jedoch alle nach dem gleichen Prinzip arbeiten, stehen sie auch vor den gleichen Problemen.

Die Anwendung rastert bei der Texterkennung die zu erkennenden Schriftzeichen und vergleicht sie mit vorgefertigten Rastern, die in einer Datenbank hinterlegt sind. Stellt das Programm zwischen den beiden Rastern ausreichend viele Übereinstimmungen fest, gilt das Zeichen als erkannt. Je nach Software werden nicht erkannte Zeichen dem Anwender zur Überprüfung und Identifikation vorgelegt oder einfach ignoriert. Besonders leistungsfähige OCR-Programme lernen sogar dazu: Treten bestimmte Muster in den Rastern bei unbekannten Zeichen gehäuft auf, so kann der Nutzer diese einem bestimmten Zeichen zuordnen, sodass sie künftig ebenfalls erkannt werden.

Die eigentliche Crux für jedes Texterkennungsprogramm liegt jedoch in der Vorlage: Schriften mit Serifen, wie Times Roman, Charter oder Palatino, weisen oft "ineinander fließende" Zeichen auf, bei denen die einzelnen Serifen ineinander übergehen – etwa bei zwei aufeinander folgenden Konsonanten wie dem "mm". Stößt die Software auf zwei solche miteinander verbundene Zeichen, erkennt sie nicht, dass es sich dabei um zwei einzelne Buchstaben handelt. Folglich versagt auch die Identifikation.

Ein weiteres Problem stellen nicht sauber eingescannte Vorlagen dar: Hier kommt es durch nicht zweifelsfrei identifizierbare Raster oft zu Verwechslungen bei ähnlichen Zeichen. So wird bei solchen Vorlagen oft der Großbuchstabe S mit der Ziffer 5 verwechselt. Auch ein großes I und ein kleines l lassen sich schwer unterscheiden und stürzen das Programm gern in Verwirrung. Vorlagen, die Text im Spaltensatz enthalten, oder auch solche, die durch Tabellen oder grafische Elemente aufgelockert sind, bringen jede Texterkennungssoftware aus dem Tritt. Aber auch Staubkörner auf der Vorlagenplatte des Scanners, schlecht kopierte Vorlagen mit schwarzen Punkten auf der Kopie oder ein mangelhaft eingestellter Scanner können die Freude an der automatischen Texterkennung nachhaltig schmälern. Der Anwender sollte daher einige Grundregeln beachten, wenn die Texterkennung befriedigend arbeiten soll.

Bei allen Vorlagen muss man grundsätzlich darauf achten, dass diese exakt auf der Vorlagenplatte des Scanners justiert sind. Schief auf der Glasplatte liegende Vorlagen sorgen später für fehlerhaft oder gar nicht erkannte Zeichen. Die Einstellungen für den Scanner gilt es der Vorlage adäquat zu wählen: Es macht keinen Sinn, eine normale Textseite mit einer Auflösung von 1200 dpi bei 24 Bit Farbtiefe einzuscannen. Das bläht lediglich die Datei unnötig auf. Weniger ist hier mehr: Eine Auflösung von 150 dpi reicht für einen in normaler Größe gedruckten Text völlig aus. Der Scanner sollte zudem auf Schwarz-/Weiß-Vorlagen oder bestenfalls auf Graustufenvorlagen eingestellt sein. Hohe Farbtiefen führen beim Scannen von schwarzen Zeichen auf weißem Papier bei weniger leistungsfähigen Scannern der Consumer-Klasse üblicherweise zu leichten Farbsäumen an den Buchstabenrändern – was für so manche Texterkennung bereits ein unlösbares Problem darstellt.

Weiterhin sind Texte in serifenlosen Schriften wie Helvetica oder solche in typischen Schreibmaschinenschriften wie Courier oder Letter Gothic Vorlagen mit Serifenschriften vorzuziehen. Die Erkennungsrate liegt bei serifenlosen und Schreibmaschinenschriften erheblich höher als bei Serifenschriften, was einen deutlich verminderten Aufwand bei der Nachbearbeitung der Scanergebnisse bedeutet. Viele OCR-Programme geraten zudem völlig aus der Fassung, wenn sich auf einer Seite viele verschiedene Schriftgrößen und Schriftschnitte tummeln. Mittelgroße bis größere Schriften (ab etwa 12 Punkt) erleichtern zudem die korrekte Texterkennung. Je einheitlicher und regelmäßiger also das Erscheinungsbild der Vorlage, desto besser fallen später die Ergebnisse aus.

Gocr im Einsatz

Für unseren Test haben wir verschiedene Vorlagen sowohl mit serifenlosen als auch mit Serifenschriften unter Ubuntu 6.10 mit Sane/XSane und Gocr auf einem ScanJet 3570C von HP digitalisiert ([2],[3]). Es bestehen bei dieser Kombination mehrere Möglichkeiten, Vorlagen einzulesen: Da es sich bei Gocr um ein lernfähiges Programm handelt, sollten Sie bei einer frischen – also noch nicht "angelernten" – Installation zunächst die Vorlage mit (X)Sane einscannen und als PGM-Bilddatei mit 8 Bit Farbtiefe abspeichern, um anschließend die eigentliche Texterkennung von der Kommandozeile interaktiv zu starten. Dazu rufen Sie Gocr im Terminal beispielsweise mit der Befehlsfolge

$ gocr -i PGM-Bilddatei -o Outputdatei -m 130

auf. Der Parameter -m 130 schaltet die Software dabei in den interaktiven Modus, in dem die einzelnen Zeichen als Raster im Terminal durchlaufen. Bei nicht erkannten Rastern stoppt das Programm den Durchlauf und bittet den Nutzer um Angabe des entsprechenden Zeichens. Das eingegebene Zeichen lässt sich sodann wahlweise im Arbeitsspeicher temporär als Rastervorlage ablegen oder alternativ auch gleich in die Gocr-Rasterdatenbank aufnehmen.

Bei solchen Zeichen, die Sie zweifelsfrei identifizieren können, sollte das Raster gleich in die Datenbank wandern, um dauerhaft zur Verfügung zu stehen. Nicht eindeutig identifizierte Zeichen dagegen sind besser temporär im Arbeitsspeicher aufgehoben, da die Aufnahme fehlerhafter Raster in die Datenbank bei späteren Scans unter Umständen zu abstrusen Ergebnissen führt (Abbildung 1).

Abbildung 1: Gocr ist lernfähig und lässt sich auf Raster trainieren.

Ein bereits gut eingerichteter Scanner mit "angelernter" Software hingegen lässt sich einfacher und ohne den Umweg über die Kommandozeile zur Texterkennung nutzen. In diesem Fall genügt es, nach dem Einscannen der Vorlage unter XSane im Menü Datei des XSane-Betrachters den Punkt OCR -- als Text speichern anzuklicken (Abbildung 2). Gocr startet dann im Hintergrund und legt die entsprechende Textdatei am definierten Ort ab. In diesem Fall muss man auf die Möglichkeit der interaktiven Erkennungen von Zeichen allerdings verzichten.

Abbildung 2: Aus XSane heraus lässt sich Gocr per Menübefehl aufrufen.

Wer individuelle Einstellungen für seine Texte bevorzugt, sollte Gocr auf jeden Fall auf der Kommandozeile verwenden, da es hier sehr umfangreiche Parameter anbietet. Diese lassen sich beim Aufruf der Software über (X)Sane oder über Gimp (Menü Datei | Holen | XSane | Device dialog) nicht ohne weiteres individuell einstellen. So definieren Sie mit dem Gocr-Parameter -f ein Ausgabeformat wie beispielsweise HTML. Gocr legt dann den Text ohne Formatierungen als HTML-Datei ab. Liegt die Fehlerrate der Zeichenerkennung sehr hoch, so empfiehlt sich ein Aufruf der Software mit den Parametern -v 8 (zur Anzeige der Raster) und -e Dateiname zur Anlage einer Fehlerdatei, die sich anschließend auswerten lässt.

Unsere Tests mit einem nicht trainierten System erbrachten bei Vorlagen mit Serifenschriften bei allen Schriftgrößen wenig brauchbare Ergebnisse. Hier liegt die Quote der nicht erkannten Zeichen bei rund 10 Prozent, was in der Praxis gegenüber dem manuellen Abtippen des Texts kaum eine Zeitersparnis bedeutet. Bei serifenlosen Schriften dagegen kann Gocr überzeugen: Einfachen Fließtext mit einer Schriftgröße von 12 Punkt, wie er üblicherweise bei Korrespondenzen zum Einsatz kommt, erkennt das Programm bis auf wenige Zeichen korrekt.

Zum Vergleich scannten wir den selben Text nochmals von einer durchschnittlichen Kopie. Hier lag die Erkennungsrate zwar ähnlich gut wie beim Original, jedoch setzte Gocr zwischen vielen Buchstaben Leerzeichen ein, die in einem weiteren manuellen Durchgang entfernt werden mussten. Zudem wurden nahezu alle Sonderzeichen wie auch Umlaute nicht korrekt erkannt, was den Nachbearbeitungsaufwand deutlich erhöht (Abbildung 3).

Abbildung 3: Bei Umlauten und Sonderzeichen besteht noch Nachholbedarf.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Trainingsziel Text
    Gute Texterkennungsprogramme sind teuer und lohnen sich daher für Privatanwender kaum. Für Linux gibt es zwar einige freie und kostenlose Tools, die aber meist wenig Zeitersparnis bringen, da die Texte aufwändige manuelle Nachbearbeitung erfordern. GOCR ist besser: Mit etwas Training steigern Sie die Trefferquote.
  • Eingescannte Texte automatisch erkennen
    Professionelle Texterkennung war bislang teuren kommerziellen Programmen unter Windows und Mac OS X vorbehalten. Mit dem freien Cuneiform und dessen grafischen Frontends YAGF und Cuneiform-Qt holt Linux den Rückstand auf.
  • Dokumente mit gscan2pdf scannen
    Um schnell ein Foto einzuscannen, reichen Programme wie XSane völlig aus. Ein mehrseitiges Dokument als PDF-Datei speichern können Sie damit aber nicht. Hier hift gscan2pdf.
  • Scannen mit XSane
    Oh nein, da kommt Ihr analoger Freund mit den unscharfen, aber unzensierten Party-Fotos. Keine Panik – das Scan-Programm XSane hilft beim Bergen der zweifelhaften Schätze.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.