# OCRopus

OCRopus (auch ocropy) ist eine freie Software zur Dokumentanalyse und Texterkennung mit einem sehr modularen Entwurf. OCRopus wurde mit Unterstützung von Google Inc. unter Leitung von Thomas Breuel vom Deutschen Forschungszentrum für Künstliche Intelligenz (DFKI) in Kaiserslautern entwickelt und als freie Software unter den Bedingungen von Version 2.0 der Apache-Lizenz veröffentlicht.

## Beschreibung

OCRopus wurde insbesondere für die Anwendung in großflächigen Retrodigitalisierungsprojekten von Büchern etwa bei Google Books, Internet Archive oder Bibliotheken konzipiert. Dabei sollen eine Vielzahl von Sprachen und Schriften unterstützt werden. Es kann aber auch für Anwendungen im Bürobereich oder für Sehgeschädigte eingesetzt werden.
Die Hauptkomponenten bei OCRopus bilden:
* Analyse des Dokumentenaufbaus
* optische Zeichenerkennung
* Nutzung von statistischen Sprachmodellen
Für diese Komponenten stehen einzelne oder auch mehrere Skripte zur Verfügung. Der modulare Ansatz erlaubt es individuelle Workflows zu nutzen und einzelne Schritte auszutauschen.
Standardmäßig kommt OCRopus mit einem Modell für englische Texte und einem Modell für Texte in Fraktur. Diese Modelle beziehen sich auf die Schriftart und sind weitestgehend unabhängig von der eigentlichen Sprache. Neue Schriftzeichen oder Sprachvarianten können entweder neu oder zusätzlich trainiert werden.
Die tatsächliche Erkennung basiert auf rekurrenten neuronalen Netzen (LSTM) und kommt gänzlich ohne Sprachmodell aus. Damit können sprachunabhängige Modelle trainiert werden, für welche gute Erkennungsergebnisse für Englisch, Deutsch, Französisch zugleich gezeigt wurden. Neben dem lateinischem Schriftsystem gibt es Resultate für weitere Schriften wie etwa Sanskrit, Urdu, Devanagari, Griechisch.
Durch ein entsprechendes Training können sehr gute Erkennungsraten erreicht werden. Dieser Mehraufwand lohnt sich gerade bei schwierigen Dokumenten oder heute nicht mehr üblichen Schriftarten, welche bei anderen OCR-Softwares nicht im Fokus stehen.

## Geschichte

Am 9. April 2007 wurde OCRopus als ein von Google gesponsertes Projekt zur Entwicklung fortschrittlicher OCR-Technologien bekannt gegeben. Die Förderung war auf drei Jahre ausgelegt und umschloss insbesondere Doktoranden- bzw. PostDoc-Stellen am DFKI bzw. der Universität Kaiserslautern. Im Gegenzug wurde bei der Google Buchsuche auch OCRopus für die automatische Texterkennung verwendet. Die Lizenzierung unter einer Open-Source-Lizenz wurde gleich zu Beginn gemacht um Kollaborationen zwischen industrieller und akademischer Forschung leichter zu ermöglichen. Weitere Förderung hat OCRopus von der Andrew W. Mellon Foundation sowie dem BMBF bekommen. Im Zuge des TextGrid-Projektes wurde dabei etwa die Schrifterkennung für Fraktur angegangen.
Die erste Alpha-Version 0.1 wurde am 22. Oktober 2007 veröffentlicht und diverse Vorabversionen erschienen zwischen Dezember 2007 und Mai 2009. Mit Version 0.4.4 wurde 2010 ein stabiler Stand erreicht. Ursprünglich wurde das Programm in C++, Python und Lua mit Jam als Build-System entwickelt. Ein komplettes Refactoring des Quellcodes in Python-Module beinhaltet die Version 0.5, welche 2012 veröffentlicht wurde.
Anfänglich wurde Tesseract als einziges Erkennungsmodul verwendet. Ab Version 0.4 (2009) wird Tesseract nur noch als Plugin unterstützt. Stattdessen kam eine Eigenentwicklung zur Texterkennung (ebenfalls Segment-basiert) zum Einsatz. Ab 2013 wurde zusätzlich eine Erkennung auf rekurrenten neuronalen Netzen (LSTM) angeboten, welche mit der Version 1.0 im November 2014 als einziger Erkenner weitergeführt wird.
Der Quellcode wird über GitHub verwaltet und wird von der Entwickler-Community gepflegt und weiterentwickelt. Die aktuelle Version von OCRopus ist 1.3.3 (Dezember 2017).
Weiterentwicklungen des ursprünglichen OCRopus sind ocropy (auch OCRopus2) und OCRopus3. OCRopus4 ist die neueste Version, an der Thomas Breuel aktuell (Stand 2021) arbeitet.

## Abspaltungen

Von OCRopus abgeleitet ist die OCR-Software Kraken, die beispielsweise in eScriptorium für die Erkennung von Text in Drucken und Handschriften verwendet wird. Calamari ist ein weiterer Abkömmling, der auf OCRopy und Kraken basiert.

## Benutzung

OCRopus ist ein reines Kommandozeilenprogramm. Es wird primär für Linux-Plattformen entwickelt, sollte jedoch auf vielen Plattformen lauffähig sein, solange seine Abhängigkeiten erfüllt sind. Eingesetzt wird es, indem über die Kommandozeile das Eingabebild angegeben wird. Zur genaueren Steuerung können zusätzlich noch Optionen übergeben werden, um bestimmte Aktionen wie die Erkennung einer einzelnen Zeile auszuführen. Die Ergebnisse werden über die Standardausgabe (stdout) in HTML und CSS mit speziellen Formatierungen (hOCR) ausgegeben.
Beispiel für die Aufrufe der OCRopus Skripte um den Text in einem Bild zu erkennen: