[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(./gocr.jpg, 120, left)]] [http://jocr.sourceforge.net/ GOCR] {en} ist ein Kommandozeilenwerkzeug zur Texterkennung, das seit 2000 von [http://www.uni-magdeburg.de/jschulen/ Joerg Schulenburg] {de}/{en} entwickelt wird. Das Programm ist "trainierbar" und vielfältig zu konfigurieren; gute Ergebnisse werden vor allem für serifenlose Schriften erzielt. Dabei handelt es sich um ein reines Zeichenerkennungsprogramm, das sprachen-unabhängig arbeitet. Mit [#Grafische-Oberflaeche GOCR tcl] existiert auch eine grafische Benutzeroberfläche, die allerdings nicht ganz auf dem aktuellen Stand ist. Standardmäßig verwendet [:XSane:] GOCR als Texterkennungsprogramm. Viele OCR-Frontends können GOCR einsetzen (z.B. [:ocrodjvu:], [:OCRFeeder:], [:gscan2pdf:]). = Installation = GOCR ist in den Paketquellen vorhanden, es müssen die Pakete {{{#!vorlage Paketinstallation gocr, universe gocr-tk, universe, optional, grafische Oberfläche }}} installiert[1] werden. == Manuelle Installation == Eine Version von GOCR (zuletzt aktualisiert 2018, die letzte [http://wase.urz.uni-magdeburg.de/jschulen/ocr/jocr.tgz Entwicklerversion] {dl} wurde im November 2020 bearbeitet, lässt sich allerdings unter 20.04 nicht ohne Weiteres kompilieren - Stand Mai 2021)) kann man von der [https://www-e.ovgu.de/jschulen/ocr/download.html Downloadseite] {en} des Projektes beziehen. Dazu das '''.tar.gz'''-Archiv herunterladen, entpacken [4] und kompilieren[5], ggf. vorher das Paket '''libnetpbm10-dev''' installieren. Der Quellcode enthält auch die grafische Oberfläche, sodass die Installation des Paketes '''gocr-tk''' nicht nötig ist. Die Oberfläche wird dann allerdings mit dem Befehl `gocr.tcl` aufgerufen. = Funktionsweise = GOCR lädt zunächst das gesamte Bild in den Arbeitsspeicher; empfohlen wird die Verwendung von Bilder in Graustufen, Auflösung 300 dpi. Zunächst wird "Staub" und Rauschen entfernt. Danach versucht GOCR, Linien, die nicht horizontal verlaufen, zu erkennen. Es folgt das Auffinden der Textrahmen (Option `-m 4`), der Textzeilen und dann der einzelnen Zeichen. Erst dann erfolgt der erste Schritt der Erkennung, für jedes Zeichen ein eigener empirischer Vorgang; es werden keine "neuralen Netzwerke" oder ähnliche Algorithmen verwendet. Nicht erkannte Zeichen werden über Vergleiche mit erkannten analysiert; außerdem versucht GOCR, zusammenhängende Zeichen (z.B. Ligaturen) zu trennen. Optional werden "einheitliche" Muster aus den einzelnen als gleich erkannten Zeichen erstellt (Option `-m 64`), um diese weiter zu verwenden. = Bedienung = Die allgemeine Syntax auf der Kommandozeile[2] lautet {{{#!vorlage Befehl gocr [OPTION] [-i] pnm-Datei }}} Wenn '''gzip''', '''bzip2''' und '''netpbm''' installiert sind (was unter einer Standard-Ubuntu-Installation der Fall sein sollte), werden auch '''pnm.gz''', '''pnm.bz2''', '''png''', '''jpg''', '''jpeg''', '''tiff''', '''gif''', '''bmp''', '''ps''' (nur einseitige Dateien) und '''eps''' als Eingabedateiformate unterstützt, außerdem kann [wikipedia:PNM:pnm] auch durch '''ppm''', '''pgm''' und '''pbm''' repräsentiert sein. Die Daten können dabei allerdings nur als Dateien eingelesen, nicht wie für [:Ocrad:] via [wikipedia:Pipe_(Informatik):Pipe] "gestreamt" werden. Als Ausgabeformate sind '''ISO8859_1''', '''TeX''', '''HTML''', '''XML''', '''UTF8''' (Standard) und '''ASCII''' möglich; '''XML''' gibt dazu die jeweilige Position der Zeichen, sowie die Häufigkeits-Daten mit aus (Option `-f [Format]`) == Optionen == GOCR kann durch vielfältige Optionen gesteuert werden. So kann beispielsweise gleich Staub, etc. entfernt werden (`-d`), das Ausgabeformat festgelegt (`-f`), oder ein Schwellwert für die Festlegung der zum Text/Hintergrund zugehörigen Pixel bestimmt werden (`-l`). {{{#!vorlage Tabelle <-3 rowclass="titel"> GOCR-Optionen +++ Option <-2> Funktion +++ `-i [NAME]` <-2> Bilddatei, "-" um stdin zu verwenden +++ `-o [NAME]` <-2> Ausgabedatei (Umlenkung der Standardausgabe in eine Datei) +++ `-f [FORMAT]` <-2> Ausgabeformat, möglich sind '''ISO8859_1''', '''TeX''', '''HTML''', '''XML''', '''UTF8''' (Standard) und '''ASCII''' +++ `-a [WERT]` <-2> Wert für die Sicherheit der Zeichenerkennung; möglich sind `0-100`, Standard ist `95`, je höher der Wert desto weniger "Varianz" wird zugelassen +++ `-e [NAME]` <-2> Ausgabedatei (Umlenkung der Fehlerausgabe in eine Log-Datei) +++ `-x [NAME]` <-2> Fortschrittsanzeige (Datei, [wikipedia:First_In_%E2%80%93_First_Out:fifo] oder fd=1..255 , siehe [wikipedia_en:File_descriptor:fd]) +++ `-p [NAME]` <-2> Verzeichnis der optionalen Datenbank (Standardpfad: '''~./db/''') +++ `-l [WERT]` <-2> Schwellenwert `0<160<=255` zur Festlegung der Helligkeit welche Pixel als Text, welche als Hintergrund betrachtet werden sollen (`0` = autodetect, Standardeinstellung) +++ `-d [WERT]` <-2> Schmutzgröße in [wikipedia:Pixel:], Entfernen von Schmutz in Clustern kleiner dieser Angabe (`-1`=autodetect, Standardeinstellung) +++ `-s [WERT]` <-2> Wortabstand in [wikipedia:Schriftgrad#Das_DTP-Punkt-System:Punkten], kleinere Abstände werden als Buchstabenabstände innerhalb eines Wortes interpretiert (`0` = autodetect, Standardeinstellung) +++ `-u [ZEICHEN(FOLGE)]` <-2> Zeichen(folge) für nicht erkannte Zeichen einsetzen (Standard ist "_") +++ `-v [WERT]` <-2> Ausgabe von mehr Informationen, die Werte werden für die Verwendung mehrerer Einstellungen summiert, möglich sind +++ `1` mehr Informationen +++ `2` Größe der Boxen anzeigen (siehe `-c`) +++ `4 ` Boxen anzeigen (siehe `-c`) +++ `8` Ausgabe der Muster nach Erkennung +++ `16` Zeilenerkennung ausgeben +++ `32` debug-Ausgaben in Form von '''outXX.pgm'''-Bildern mit hervorgehobenen Rahmen und Zeilen für jeden relevanten OCR-Schritt +++ `-c [ZEICHEN(FOLGE)]` <-2> Liste der auszugebenden Zeichen ("_" = nicht erkanntes Zeichen), um die Ausgabe z.B. für Trainingsläufe auf die benötigten "Problem"-Zeichen zu beschränken +++ `-C [ZEICHEN(FOLGE)]` <-2> Zeichenfilter (z.B.: hexdigits: 0-9A-Fx, nur ASCII) +++ `-m NUM` <-2> Arbeitsarten, möglich sind +++ `2` Datenbank nutzen +++ `4` Layout-Analyse (zum Testen) +++ `8` Kein Vergleich nicht erkannter Zeichen +++ `16` Kein Teilen "verklebter" Zeichen +++ `32` Keine Kontextkorrektur +++ `64` Zeichen komprimieren, aus mehreren gleichen Zeichen wird nur eine Version weiterverwendet +++ `130` [#GOCR-trainieren Datenbank erweitern] (unbekannte Zeichen bestimmen, interaktive Methode mit Eingaben des Nutzers) +++ `256` OCR-Engine abschalten, nur sinnvoll mit `-m 2`, bei Verwendung einer Datenbank oder bei komplettem Neutraining +++ `-h` <-2> Hilfe }}} Weiteres in der [:man:Manpage] des Programms, oder den Dateien '''/usr/share/doc/gocr/doc/gocr.html''' und '''/usr/share/doc/gocr/README''' (beide Dateien in englisch). [[Bild(./gocr-tk.png, 250, right)]] == Grafische Oberfläche == Die grafische Oberfläche wird über den Befehl `gocr-tk`, ggf. auch `gocr.tcl` gestartet. Sie ermöglicht es, den erkannten Text in einem einem Editor-ähnlichen Fenster zu bearbeiten. Über ''"Browse"'' lässt sich die zu bearbeitende Vorlage öffnen, mit ''"Run it"'' wird die Texterkennung gestartet. Im Hauptfenster erscheint dann das Ergebnis, das dort auch korrigiert werden kann. Gespeichert wird das Ergebnis über ''"File -> Save output"''. Die Rechtschreibfunktion (''"Spell"'') ist allerdings unter aktuellen Ubuntu-Versionen nicht mehr zum Einsatz zu bewegen, sie basiert auf [http://www.gnu.org/software/ispell/ ispell] {en}, und dem [:Perl:]-Programm [http://search.cpan.org/~rkies/tkispell/ tkispell] {en}, das sich zwar noch kompilieren lässt, aber nicht mehr einsatzfähig ist (letzte bekannte Version 0.18 von März 2004). Ähnliche gilt für das standardmäßig vorgesehene Betrachterprogramm `xli` (''"Show"'') - es befindet sich zwar noch in den Paketquellen, allerdings liefert es keine brauchbaren Bilder der zu verarbeitenden Bild-Dateien. In den Konfigurationseinstellungen kann aber jeder [:Grafik#Bildbetrachtung-und-verwaltung:Bildbetrachter] (''"Image Viewer"'') angegeben werden. ''"Scan"'' öffnet [:XSane:] (wenn es installiert ist), allerdings wird ein Scan nicht sofort integriert, sondern muss erst gespeichert, und dann über ''"Browse"'' aufgerufen werden. [[Bild(./gocr-tk-options.png, 150, right)]] === Konfiguration === Über ''"Options -> Set Options"'' wird das Konfigurationsfenster geöffnet, in dem die zu verwendenden Optionen eingestellt werden können; für ''"spacewidth"'' (`-s`), ''"graylevel"'' (`-l`) und ''"dustsize"'' (`-d`) existieren Schieberegler (''"auto"'' dafür deaktivieren!). ''"See variables"'' zeigt die eingestellten Werte unterhalb des Hauptfensters an. Mit ''"Options -> Save Options"'' wird eine Konfigurationsdatei in '''~/.gocr''' abgelegt, es lassen sich auch mehrere Konfigurationen abspeichern, die mit ''"Options -> Load Options"'' wieder aufgerufen werden können. Bei der Erkennung werden zunächst durch die Optionen bedingte zusätzlichen Angaben im Fenster angezeigt, die eigentliche Texterkennung wird als letzter Schritt ausgegeben. == GOCR trainieren == Um nicht erkannte Zeichen zu integrieren, kann für GOCR eine Datenbank angelegt werden, die Beispiele dieser Zeichen enthält, sie wird unter dem Pfad '''~/.db/''' erwartet. Erstellt werden können derartig Einträge über die Option `-m` ("operational mode"), `-m 130` führt dabei zu einem interaktiven Modus, in dem Angaben zu nicht/falsch erkannten Zeichen gemacht werden können, die dann in die Datenbank ('''db.lst''') aufgenommen werden. Dieser [https://www.linux-community.de/ausgaben/easylinux/2009/02/texterkennung/ Artikel] {de} aus EasyLinux, 2/2009, beschriebt den Vorgang ausführlich. Theoretisch kann so auch ein komplett neuer Zeichensatz, der auch unterschiedlichen Schriftarten enthalten kann, erstellt werden. Die Verwendung der Datenbank erfolgt dann über die Optionen `-m 2` und `-p`, der abschließende Slash, z.B. `-p /home//.db/` ist dabei mit anzugeben! Wenn nur auf die Datenbank zurückgegriffen werden soll, muss die Verwendung des OCR-Engines mit `-m 256` abgeschaltet werden, die Erkennung kann dann aber sehr zeitaufwändig werden. = Alternativen = * [:tesseract-ocr:] * [:Cuneiform-Linux:] * [:ocre:] * [:Ocrad:] * [github:tmbdev/ocropy:OCRopus] {en} = Links = * [http://jocr.sourceforge.net/ Projektseite] {en} * [sourceforge:jocr:GOCR] {en} auf sourceforge.net * [:Texterkennung:] * [http://www.autoit.de/index.php?page=Thread&postID=35372#post35372 Kurzanleitung] {de} zum Trainieren #tag: Grafik, Büro, Kommunikation, OCR, Texterkennung