Kleiner Vergleichstest Finereader 9 und Tesseract

Gestern wurde ich im Chat gefragt, welche OCR-Software ich empfehlen würde und da der Markt recht überschaubar ist und ich selbst seit einigen Jahren den Finereader einsetze und sehr zufrieden damit bin, blieben aus meiner Sicht eigentlich nur Finereader und als kostenlose Alternative Tesseract übrig.

Da mein Gegenüber etwas skeptisch war bezüglich der Qualität der von Finereader wurde ich gebeten eine Datei auf Commons mit einer Schreibmaschinenseite (Bild rechts) durch die OCR zu jagen. Und da zu einem Vergleichstest ja mindestens zwei gehören, war die gleiche Datei vorher bereits durch den Webservice Free OCR, der Tesseract verwendet, die Texterkennung durchgeführt worden.

Bei Free OCR kann man nur die Textsprache auswählen. Beim Finereader hab ich die OCR vollautomatisch ohne Auswahl der Textsprache oder eine Bildoptimierung durchführen lassen. Somit sollten die Ergebnisse sicherlich halbwegs vegleichbar sein. Ich habe derzeit den Finereader 9 in Benutzung. Vermutlich sähe das Ergebniss mit der aktuellen Version 10 nicht wesentlich anders aus.

Hier nun die Ergebnisse:

 Vergleich OCR-Ergebnis
Free OCR (Tesseract) Finereader 9
– I
§u*‘M~.. ‘ – , .’-‘J , ‘ms JOINT cl-uses or-‚ srass ‚
9* /f-<2» ~
‘Q _ _ wasmuoron fs.o.o.
-~~ .
i mmssnnw
IEMORMIDWKFOBTIESEOBMARYOFDEFENSE .‘ –
‘ Subject: Justification tor US Military Intervention
in cube (rs) ,-_- – .
‘ 1. ‘The Joint Chiefs of Staff have considered the attached
Memorandum“ for the Chief ’01‘ Operations, Cuba Project, which
responds to 3*-request of that office for brief but precise
‚ description of pretexts _which would provide Justification
for U8 military intervention in cube. _
H 2.‘ ‘the Joint Chiefs of staff recommend that the
proposed memorandum be forwarded as a preliminary submission
suitable for planning purposes. It is assumed that there
will be similar submissions from other agencies and that
these inputs will be used as a basis for developing a
_ time-phased plan. Individual projects can then be
considered on a case-by~case basis.
3. Further, it is assumed that a single agency will be
given the primary responsibility for developing military
and para-military aspects of the basic plan. It is
, recommended that _th:l.s responsibility for both overt and
-covert military operations be assigned the Joint Chiefs of
“ . – I . .
. _ . For the Joint Chiefs of Staff:
svsrsnnoua I ‚ ‘
BY J68 Ii}?! -5?‘ C aim“. -.“ – — _ –
msslr – … .‘ ‘ .
– L. L. LEMRITZER
‚ – _‘ _ Chairman ‚
‚ Joint Chiefs .01‘ S
l Enclosure . ‚ I –
Illemo for Ohio!‘ oi‘ Operations, Cuba. Project CXCI-UDED mom 00$
‚ ‚ . . p ‚_ sxcwnno non umamrc
_ Bmamllwz non DIR 5200.10
. _‘ _ – ‚ DOES NM‘ APPLY
~-
THE JOINT CHIEFS OF STAFF WASHINGTON £3, D.C.
1
13 March 196a
IffiMORAtfDUM FOR THE SECRETARY OF DEFENSE
Subject: Justification for US Military Intervention
1* The Joint Chiefs of Staff have considered the attached Memorandum-for the Chief of Operations, Cuba Project, which responds to aNr_equest of that office for brief but precise description of „pretexts which would provide justification for US military intervention in Cuba.
2. The .Joint Chiefs of Staff recommend that the proposed memorandum be forwarded as a preliminary submission suitable for planning purposes. It is assumed that there will be similar submissions from other agencies and that these inputs will be used as a basis for developing a time-phased plan. Individual projects can then be considered on a case-by-case basis.
3. Further, it is assumed that a single agency will be given the primary responsibility for developing military and para-military aspects of the basic plan. It is reoommended that this responsibility for both overt and covert military operations be assigned the Joint Chiefs of Staff,
in Cuba (TS)
For the Joint Chiefs of Staff:
1 Enclosure
Memo for Chief of
Operations, Cuba project
EXCLUDED fROM GD$
EXCLUDED PROff AUTOMAT IC BEGRADING; DOD DIR 5200,10 ¦ DOES NOT APPLY

Terese für Korrekturlesen von OCR-Texten

Screenshot Terese

Gestern wurde auf der Wikisource-Mailingliste auf Terese aufmerksam gemacht. Das Programm ist wohl noch in einer sehr frühen Entwicklungsphase (aktuelle Version 0.0.2) und steht unter der {de:GNU General Public License} und kann bei Sourceforge  heruntergeladen werden. Dort befindet sich auch eine ausführliche Installations- und Bedienungsanleitung.

Der Programmautor beschreibt das Programm folgendermaßen (Übersetzung von mir):

Terese is a tool which can be used to facilitate proofing the outcome of OCR programs, such as Tesseract. The basic idea is to try to map the OCR text to the original image. Differences, i.e. errors in the OCR text, are then easily identifiable.

(Deutsch: Terese ist ein Tool für Unterstützung beim Korrekturlesen der Ausgabe von OCR-Programmen, z.B. von Tesseract. Die grundlegende Idee dabei ist, den OCR-Text auf den  originalen Scan abzubilden. Unterschiede, z.B. Fehler im OCR-Text, sind somit leicht zu identifizieren.)

Ich habe Terese nicht ausprobiert, da ich Finereader benutze, wo die Funktionalität ja bereits eingebaut ist. Aber vll. kann ja jemand seine Erfahrungen mit Terese mitteilen.

Fraktur-OCR mit Tesseract

Die folgende Anleitung für Fraktur-OCR mit Tesseract unter Windows beruht auf einem Text von Jowinix in Wikisource. Ich habe den Text leicht überarbeitet und werde den Text noch mit ein paar Screenshots versehen. Wenn jemand bereits die kommerzielle OCR-Software Finereader auf der Platte hat, den möchte ich auf meinen älteren Artikel zur Fraktur-OCR mit Finereader verweisen.

Tesseract 3 ist eine Texterkennungssoftware, die aktuell von Google  weiterentwickelt wird und unter einer Open-Source-Lizenz steht und dementsprechend kostenlos verwendet werden kann. Tesseract wird auch für die Texterkennung bei Google Books verwendet und verarbeitet die folgenden Bildformate: tif, multipage tif, jpg, gif und png. Tesseract ermöglicht Texterkennung für mehr als 30 Sprachen, darunter auch Fraktur (Deutsch, Dänisch und Schwedisch). Das Programm liefert auch bei mehdrspaltigem Layout gute Ergebnisse. Allerdings ist keine grafische Benutzeroberfläche dabei (es gibt aber GUIs von Dritten) und das Layout der Seite geht komplett verloren, wobei letzteres für Wikisource kein Problem darstellt. Für die Durchführung der OCR muss man also ein klein wenig auf der Windows-Kommandozeile rumklimpern.

Windows Vista und Windows 7

Für die beiden neueren Betriebssysteme von Microsoft sind ein paar Dinge zu beachten, die ich an den entsprechenden Stellen entsprechend mit WINDOWS VISTA/7 markiert habe. Für Nutzer dieser Betriebssystem also diese entsprechenden Anmerkungen und Anweisungen unbedingt beachten.

Installation

Aus der Liste auf code.google.com lade man sich die folgenden ZIP-Dateien herunter: tesseract-ocr-setup-3.00.exe bzw. die jeweils aktuelle Version (das eigentliche Texterkennungsprogramm) und deu-frak.traineddata.gz (Sprachdatei Deutsch-Fraktur). Die Datei mit den Sprachdaten entpacken. Wenn man keinen passenden Entpacker für gz-Dateien an Bord hat, kann man sich in wenigen Minuten den kostenlosen und leistungsfähigen Entpacker 7-Zip installieren. Bei Bedarf können auch weitere Sprachdateien heruntergeladen werden und entpackt werden, die gängigsten Sprachen kann man sich aber auch später bei der  Installation hinzufügen.

Das heruntergeladene Installationsprogramm tesseract-ocr-setup-3.00.exe ausführen und Tesseract installieren. Bei der Installation kann man bzw. sollte man die deutschen Sprachdateien mitinstallieren, die sind aber erstmal nur für Antiqua-Schrift. Aber Texte die in Antiqua gesetzt wurden, will man ja auch durch die OCR jagen.

Den Ordner öffnen in dem Tesseract installiert wurde, das sollte normalerweise C:\Program Files\Tesseract-OCR sein, und in den Unterordner tessdata die entpackte Datei deu-frak.traineddata kopieren oder verschieben. WINDOWS VISTA/7: An dieser Stelle möchte Windows Adminstratorrechte haben, um die Kopieraktion durchführen zu können. Das muss bestätigt werden.

Jetzt ist Tesseract für Fraktur-OCR vorberereitet.

OCR durchführen

Die Scans (Bilddateien) die mit Tesseract verarbeitet werden sollen, können am einfachsten in den Ordner kopiert werden, in den Tesseract installiert wurde. WINDOWS VISTA/7: Auch hier fragt Windows wieder nach Administratorrechten, dies ebenfalls bestätigen.

Wem die Kopiererei in den Tesseract-Ordner und unter Win7 die Nachfragerei zu lästig ist, der kann sie auch in einem anderen Ordner belassen (bspw. c:\Bilder). In diesem Falle muss der Aufruf von Tesseract etwas angepasst werden.

Am besten eignen sich Scans mit 300 dpi und Graustufen.

Für die eigentliche OCR muss man die Windows-Kommandozeile aufrufen. Das geht mit: Windows-Taste+r, in die erscheinende Eingabezeile „cmd“ (ohne die Anführungszeichen) eingeben und Enter drücken. WINDOWS-VISTA/7:  Zum Start der Kommandozeile muss unbedingt Ctrl-Shift-Enter gedrückt werden, damit diese mit Adminstratorrechten ausgeführt wird. Alternativ kann die Kommandozeile wie in diesem Blogbeitrag angegeben aufgerufen werden, damit diese mit Adminstratorrechten ausgeführt wird.

In dem erscheinenden schwarzen Fenster mit blinkendem Cursor muss man nun zum Tesseract-OCR Verzeichnis wechseln. Das geht folgendermaßen (vorausgesetzt Tesseract ist im oben angegebenen Verzeichniss installiert). Nach jeder Zeile Enter drücken:

cd C:\
cd Programme
cd Tesseract-OCR

Nun geht es aber zur eigentlichen OCR. Damit Tesseract die OCR mit Fraktur durchführt, muss für Bild-Dateien im tif-Format folgende Zeile eingeben werden und Enter gedrückt werden:

for %i in (*.tif) do tesseract.exe %i %i -l deu-frak

Bei Dateien im jpg-, gif- oder png-Format muss der Befehl entsprechend geändert. Bei anderen Sprachen ist deu-frak durch das entsprechende Kürzel zu ersetzen: Deutsch=deu, English=eng usw. Wenn man die Dateien nicht in den Tesseract-Ordner kopiert hat, dann sieht der Aufruf entsprechend des obigen Beispielsordners in dem sich die Dateien befinden folgendermassen aus:

for %i in (c:\Bilder\*.tif) do tesseract.exe %i %i -l deu-frak

Das folgende Beispiel führt entsprechend eine OCR für Bilddateien im png-Format mit deutschem Antiqua-Text durch:

for %i in (*.png) do tesseract.exe %i %i -l deu

Das Programm arbeitet nun alle Scans im Stapel ab und erzeugt für jede Bilddatei eine Textdatei.

Die einzelnen Textdateien können mit:

copy /b *.txt Gesamttext.txt

zu einer großen Text-Datei zusammengefügt werden.

Weitere Informationen in englisch finden sich bei code.google.com.

Fraktur-OCR mit Finereader

Heute nun der versprochene Beitrag zu meinen Erfahrungen mit der OCR von Frakturschriften mit Finereader 9.

Finereader 9 ist die aktuellste Version des Finereader von Abbyy und eigentlich nicht für Fraktur-OCR vorgesehen. Aber da sich Abbyy den Finereader XIX der Fraktur von Haus aus vergolden lässt und man mit einer Lizenz nur eine beschränkte Anzahl von Seiten mit Frakturtext durch die OCR jagen kann, habe ich halt versucht es mit der normalen OCR durchzuführen. Und mit etwas Arbeit und hoffentlich diesen Tipps gelingt auch meist eine recht ordentliche Erkennung des Textes.

Vorbereitungen

Die wichtigste Voraussetzung sind natürlich gute Scans der zu erkennenden Seite. Am besten eignen sich nach meiner Erfahrung dafür Graustufen- oder Farbscans. Diese sollte man auch bevor man Finereader damit füttert nicht umwandeln. Die auf diversen Web-Seiten, insbesondere etwas ältere Digitalisate von Universitäten, zu findenden Schwarz-Weiß-Scans eignen sich meist weniger gut. Der Grund hierfür ist, dass Flecken, Fliegendreck u.ä. nach der Umwandlung in Schwarz-Weiß den gleichen Helligkeitswert (nämlich Schwarz) aufweisen wie die Nutzinformation und Finereader dann auch den Dreck ernst nimmt. Überlässt man die Auswertung des Bildes aber Finereader komplett, ist das Ergebnis wesentlich besser und der Dreck wird im Normalfall sehr gut ausgefiltert.

Beim Einscannen sehr dicker Bücher und fast immer beim Fotografieren mit einer Digicam wird der Text im Bereich der Bindung verzerrt, was für eine OCR tödlich ist. Zum Glück hat Abbyy in die Version 9 eine automatische Entzerrung eingebaut, die man aber auch manuell auslösen kann. Meine Versuche mit den vorhergehenden Versionen sind an diesem Problem gescheitert, da mit solchen Dokumenten kein vernünftiges Training möglich war.

Zu den Bildern selbst nur kurz, da diese Thema eines eigenen Beitrages werden sollen:

  • 300 dpi sollten es mindestens sein
  • bei Bilder mit einer Digicam reicht nach Aussage von Joergens die geringste Qualitätsstufe aus
  • 8 Bit Graustufen reichen für die OCR aus, weniger sollte es aber nicht sein

Training

Nachdem man alle Bildchen geladen hat, geht es mit dem Training der Software, im Finereader-Jargon „Benutzermuster testen” genannt, los. Dafür sind im Finereader-Dokument erst mal ein paar Einstellungen vorzunehmen.

Grundsätzlich sollte man die integrierten Muster für Antiqua-Schrift ausschalten, auch wenn etwas Antiqua im Frakturtext vorhanden ist. Denn sonst versucht Finereader, wenn es ein Zeichen nicht mit den trainierten Mustern erkannt hat, mit den eingebauten Mustern zu erkennen, was meist recht großen Murks ergibt. So werden gerne die großen Frakturbuchstaben als Copyright-Zeichen und anderen exotischen Sonderzeichen erkannt.

Im Menü Extras – Optionen – Tab Lesen nimmt man deshalb folgende Einstellungen vor:

  • Lesemodus: Gründlich
  • Benutzermuster testen bzw. Benutzermuster verwenden, wenn man schon trainiert hat
  • Bei „Integrierte Muster verwenden” das Häkchen entfernen

Das sollte dann also wie im folgenden Screenshot aussehen:

image

Zusätzlich sollte man über den Button „Mustereditor” sich eine eigene Musterdatei anlegen, die man entsprechend benennt, z.B. Fraktur o.ä. Den Grund hierfür erläutere ich später.

Dann kann man mit dem eigentlichen Training anfangen. Damit die nachfolgende dargestellte Box erscheint, muss unbedingt „Benutzermuster testen” ausgewählt sein. Man wählt sich also eine möglichst repräsentative Seite aus und fängt am besten mit einem Block Fließtext an, indem man „Seite lesen” oder „Bereich lesen” auswählt.

image

Der eigentliche Trainingsvorgang ist in der Hilfe recht gut beschrieben, so dass ich mir genauere Erläuterungen dazu spare. Nur ein Hinweis: Wenn man mitten in der Seite die Trainingsbox mit dem Button “Schließen” schließt, muss man vor einem erneuten Training in den Optionen wieder die Option “Benutzermuster testen” auswählen, da in diesem Fall Finereader den Trainingsmodus beendet.

Wichtig beim Training ist, dass man die OCR nicht übertrainiert. Als Übertraining bezeichne ich für mich persönlich den Versuch jedes gerade noch für den Menschen erkennbare Zeichen auch der Software beizubringen. Das bringt nichts, sondern verschmutzt quasi nur die Muster, so dass die Software nicht mehr weiß welches Zeichen denn nun wirklich vorliegt. Also deshalb verwischte, unvollständige, zusammenklumpende, nicht eindeutige Buchstaben am besten überspringen.

Dass man übertrainiert hat, bemerkt man daran, dass sich die Erkennungsleistung drastisch verschlechtert. Dann am besten komplett neu anfangen und vorsichtiger trainieren. Der Versuch die vermeintlich fehlerhaften Zeichen aus dem Muster zu löschen, bringt nach meiner Erfahrung nichts, da nicht erkennbar ist welche Zeichen tatsächlich die Probleme verursachen. Vermutlich verwendet Finereader zusätzlich zu den für den Nutzer einsehbaren Mustern, noch viel mehr Informationen, die die Erkennung beeinflussen.

Genauso sollte man nicht versuchen der Software krampfhaft beizubringen sehr ähnliche Zeichen zu unterscheiden. So werden gern u und n, das lange s und f verwechselt. Hier meine Empfehlung prototypische und gut erkennbare Zeichen zu trainieren und bei offensichtlichen Fehlern, die Software zu korrigieren. Ansonsten die Buchstaben überspringen. Alles andere bringt mehr Frust und Arbeit, aber keine wesentlich bessere Erkennungsleistung. Eher im Gegenteil besteht auch hier die Gefahr des Übertrainierens.

Was sehr gute Resultate, besonders bei etwas schlechteren Vorlagen, bringt, ist das exzessive Training von Ligaturen, auch wenn es eigentlich keine sind. Zuerst natürlich die in Frakturschrift häufig anzutreffenden Verbindungen von s und t und langes s und i, sowie f und i, t und z u.ä. Weiterhin wird man während des Trainings feststellen, dass einem Finereader immer wieder die gleichen Buchstabenkombinationen als ein Zeichen vorschlägt. In solchen Fällen einfach eine neue Ligatur anlegen und die gesamte Buchstabengruppe in Zukunft zusammen erkennen lassen.

Das kann bis zur Anlage eines ganzen Wortes wie „und” als Ligatur gehen. Ein Vorteil von Ligaturen ist auch, dass sich durch die erhöhte Anzahl der Buchstaben, und damit an signifikanten Merkmalen, die Treffergenauigkeit wesentlich erhöht. Wenn man also das Wort „und” als Ligatur trainiert hat, weil die Buchstaben immer gern aneinanderkleben, dann kommt eine Verwechslung von u und n zumindest in diesem Wort wesentlich seltener vor.

Was sollte extra trainiert werden:

  • Antiquaschrift, falls solche im Text vorkommt
  • Zahlen
  • Sonderzeichen, wie Klammern, Semikolons etc.

Für diese Zeichen also schauen wo sie etwas gehäufter vorkommen und dann diesen Bereich trainieren. Der Einfachheit halber kann man auch einen extra Bereich manuell anlegen, damit man nicht erst eine halbe Seite trainieren muss, um zu der gewissen Stelle zu gelangen. Den Bereich kann man nach dem Training wieder löschen.

Zu beachten ist außerdem, dass für unterschiedliche Schriftgrößen (Überschriften, Fußnoten etc.) sehr oft unterschiedliche Schriften eingesetzt wurden. In solchen Fällen muss man dann auch diese Bereiche extra trainieren. Wenn die Schrift allerdings nur an einigen wenigen Stellen, z.B. der Titelseite, vorkommt, dann sollte man sich die Arbeit sparen. Abtippen ist da meist schneller.

Wenn man der Meinung ist, dass die OCR eine ausreichend große Anzahl an Buchstaben erkennt, kann man das ganze Dokument oder wahlweise einzelnen Seiten komplett durch die OCR jagen. Wenn sich dabei an einigen Stellen Probleme ergeben, z.B. wegen wechselnder Schrift oder anderer Schriftgröße, muss man diese Stellen nachtrainieren. Anschließend sollte man dann das ganze Dokument neu erkennen lassen.

Nach meiner Erfahrung gelingt eine gute OCR nach etwa 1 bis 3 Stunden Training, je nach Qualität der Vorlage. Manchmal bekommt man aber selbst nach stundenlangem Training nichts Vernünftiges hin. Da hilft dann nur Abtippen.

Nachbereitung

Da die OCR, wie oben bereits angedeutet, immer mal wieder gern Buchstaben verwechselt, sollte man nach der OCR eine Textersetzung drüberlaufen lassen, die zumindest die gröbsten und häufigsten Fehlerkennungen ersetzt. Das Resultat ist dann schon meist ein recht gut lesbarer Text. Bei mir erledigt das vor dem Hochladen nach Wikisource mein Bot, der auch gleich die dazugehörigen Seiten anlegt und mit der OCR füllt.

Wiederverwendung

Schön ist, dass man die Musterdateien mit den trainierten Zeichen wiederverwenden kann. Das lohnt sich insbesondere bei der OCR mehrerer Bände eines Werks oder Jahrgängen von Zeitschriften. Aber auch bei unterschiedlichen Büchern lohnt nach meiner Erfahrung die Wiederverwendung, da sich die Trainingszeit, zumindest bei ähnlicher Schrift, dadurch drastisch verringern lässt. Schaden tut die Wiederverwendung aber auf keinen Fall. Im schlechtesten Fall muss man die verwendete Frakturschrift komplett neu trainieren, was man aber auch so hätte tun müssen.

Die Wiederverwendung geht leider nicht direkt über die Oberfläche, aber mit wenigen Handgriffen. Am einfachsten ist es ein älteres Fraktur-Projekt zu laden und unter neuem Namen zu speichern und anschließend die alten Bilder aus dem neuen Projekt zu löschen.

Als Alternative legt man sich einfach ein neues Projekt an, speichert es und kopiert aus einem älteren Frakturprojekt die Datei mit der Endung *.ptn in den neuen Projektordner. Und wenn wir oben dem Benutzermuster den Namen „Fraktur” gegeben haben, dann heißt die dazugehörige Datei fraktur.ptn. Deshalb die Empfehlung dem Benutzermuster einen Namen zu geben. Ansonsten landet die PTN-Datei nämlich in irgendeinem temporären Verzeichnis in den Tiefen der Festplatte. Im Anschluss muss man die kopierte Musterdatei noch aktivieren. Das geht mit Hilfe des Buttons „Mustereditors” in den Optionen (siehe oben den ersten Screenshot).

Fazit

Bei guten Vorlagen mit Texten aus dem späten 18. und 19. Jahrhundert, die maschinell gesetzt wurden und einheitliche Schriften innerhalb des Textes verwenden, ist meist eine akzeptable Qualität erreichbar. Die Texte müssen selbstverständlich noch korrigiert werden, um wirklich vorzeigbar zu sein.

Bei früheren Texten bin ich bisher gescheitert, da die Jungs damals sehr oft ziemlich wahllos in ihren Setzkasten griffen und für ein denselben Buchstaben Typen aus verschiedenen Schriften verwendeten, womit kaum ein vernünftiges Training möglich ist. Hinzu kommen krumme und schiefe Zeilen, unterschiedliche Zeichenabstände, ineinander ragende Zeilen und ähnliches. In solchen Fällen ist man mit dem Abtippen meist besser bedient.

Über Ergänzungen, Korrekturen oder Erfahrungsberichte zur Fraktur-OCR mit Finereader oder anderer Software würde ich mich freuen und gern hier veröffentlichen.