[[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Archivmanager: Archive entpacken] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Rechte#Datei-ausfuehrbar-machen: Dateien ausführbar machen] }}} [[Inhaltsverzeichnis()]] [[Bild(Ocrad.png, 48, align=left)]] [http://www.gnu.org/software/ocrad/ Ocrad] {en} ist ein Kommandozeilenwerkzeug zur Texterkennung, das seit 2004 von Antonio Diaz Diaz entwickelt wird. Dabei handelt es sich um ein reines Zeichenerkennungsprogramm, das sprachenunabhängig arbeitet. Unterstützt werden nativ [wikipedia:PNM:pnm]-Dateien, also '''pbm''' (schwarz-weiß), '''pgm''' (Graustufen) oder '''ppm''' (Farbe). Es verfügt über eine Layout-Erkennung, um Spalten oder Text-Blöcke verarbeiten zu können. Viele OCR-Frontends können Ocrad einsetzen (z.B. [:ocrodjvu:], [:OCRFeeder:], [:xsane2djvu:]). = Installation = Ocrad ist in den Paketquellen vorhanden, es müssen die Pakete {{{#!vorlage Paketinstallation ocrad, universe libjpeg-progs, optional, um .'''jpeg'''-Dateien zu verarbeiten netpbm, optional, um z.B. '''.png''', '''.tiff''' oder '''.ps'''-Dateien zu verarbeiten ghostscript, optional, um [:PDF:]-Dateien zu verarbeiten poppler-utils, optional, Alternative für PDF-Dateien }}} installiert[1] werden. == Manuelle Installation == Aus den Paketquellen erhält man für [:Bionic:Ubuntu 18.04] 0.25; daher kann es sinnvoll sein, die neueste Version (0.27, Stand Mai 2021) zu verwenden. Dazu wird der Quellcode von der [http://ftp.gnu.org/gnu/ocrad/ Downloadseite] {dl} heruntergeladen, entpackt[3] und kompiliert[4]. = Funktionsweise = Ocrad verwendet eine Methode, bei der grafische Eigenschaften der Zeichen zur Erkennung herangezogen werden. Dabei wird keine Datenbank o.ä. verwendet. Stattdessen werden Unterschiede in der Form der Zeichen erkannt, die zum Einteilen in bestimmte Zeichen-Kategorien verwendet werden, ähnlich einer Binär-Suche, die sich baumartig verzweigt. Diese Methode ist zwar sehr schnell, hat aber den Nachteil, dass Ocrad nur schlecht mit defekten Zeichen umgehen kann, und - anders als [:GOCR#GOCR-trainieren:] - kaum trainierbar ist. Theoretisch können mit dieser Methode 2'''~-(^^(31)^^)-~''' Zeichen (über zweitausendmillionen) unterschieden werden; diese Unsumme schränkt man besser mit der Option `-c` oder `-F` ein; Standard ist die Verwendung des Zeichensatzes [wikipedia:ISO_8859-15:]. Ocrad liest als erstes das Vorgabebild in den Arbeitsspeicher ein. Optional wird eine Bearbeitung (Drehen/Spiegeln, Zuschnitt, Skalierung) durchgeführt, und eine Layout-Analyse angeschlossen. Danach werden Rahmen und Bilder entfernt, die Zeichen gefunden und in Zeilen gruppiert. Danach erfolgt die eigentliche Erkennung (für jedes Zeichen einzeln), anschließend werden ggf. Korrekturen vorgenommen (z.B. `l.OOO` zu `1.000` etc.). Das Ergebnis wird ausgegeben, und in eine Datei umgelenkt. Der Entwickler betrachtet Ocrad dabei eher als Forschungsprojekt; die verwendeten Algorithmen können sich daher je nach Entwicklungsstand und Erkenntnissen des Entwicklers in zukünftigen Versionen verändern. = Verwendung = Die allgemeine Syntax auf der Kommandozeile[4] lautet {{{#!vorlage Befehl ocrad [OPTON(EN)] [DATEI(EN)] }}} Um andere Dateiformate zu verwenden, können Programme aus den Paketen [:poppler-utils:], '''libjpeg-progs''', '''ghostscript''' und '''netpbm''' verwendet, und das Ergebnis per [wikipedia:Pipe_(Informatik):Pipe] an Ocrad weitergeleitet werden: {{{#!vorlage Befehl pdftoppm DOKUMENT.pdf | ocrad ## für .pdf, aus poppler-utils djpeg -greyscale -pnm FILENAME.jpg | ocrad ## für .jpeg, aus libjpegs-prog gs -sPAPERSIZE=a4 -sDEVICE=pnmraw -r300 -dNOPAUSE -dBATCH -sOutputFile=- -q FILENAME.ps | ocrad ## für .ps, auch pdf, aus ghostcript tifftopnm FILENAME.tiff | ocrad ## für .tiff, aus netpbm pngtopnm FILENAME.png | ocrad ## für .png, aus netpbm pstopnm -stdout -dpi=300 -pgm FILENAME.ps | ocrad ## für .ps, für .pdf nicht anwendbar, aus netpbm }}} Ältere Versionen von `pstopnm` können ggf. die `-dpi`-Option nicht verarbeiten und geben Bilder aus, die für ein Texterkennung zu klein sind. `ocrad` kann natürlich jeweils um die gewünschten Optionen erweitert werden. == Optionen == {{{#!vorlage Tabelle <-3 rowclass="titel"> Ocrad-Optionen +++ Option <-2> Funktion +++ `-a|--append` <-2> Hängt den erkannten Text an eine bestehende Ausgabedatei gleichen Namens an +++ `-c|--charset [Name]` <-2>`--charset=help` listet die Möglichkeiten auf: `ascii`, `iso-8859-9`, `iso-8859-15` (Standard ist `iso-8859-15` (latin9)) +++ `-e|--filter [Name]` <-2>`--filter help` listet die Möglichkeiten auf: +++ `none` Keine Filterung (Standard) +++ `letters` Jedes Zeichen, das einem Buchstaben ähnelt, wird als Buchstabe erkannt; andere Zeichen werden unverändert ausgegeben +++ `letters_only` Wie `letters`, aber alles andere wird entfernt +++ `numbers` Jedes Zeichen, das einer Ziffer ähnelt, wird als Ziffer erkannt; andere Zeichen werden unverändert ausgegeben +++ `numbers_only` Wie `numbers`, aber alles andere wird entfernt +++ `-f|--force` <-2> Bestehende Ausgabedatei wird überschrieben +++ `-F|--format [FORMAT]` <-2> Ausgabeformat, möglich sind `byte` und `utf8`, (Standard ist `byte`, 8 bit) +++ `-i|--invert` <-2> Invertiere Bild-Lagen (Weiß auf schwarz) +++ `-l|--layout` <-2> Führt eine Layout-Analyse durch. Ocrad kann Textblöcke in beliebiger Form erkennen, wenn sie von einer deutlichen weißen Fläche umgeben sind. +++ `-o [Datei]` <-2> Schreibt Ausgabe in [DATEI] +++ `-q|quiet` <-2> Keine Ausgabe von Meldungen +++ `-s|scale [-][WERT]` <-2> Skaliert die Eingabedatei vor der Layout-Analyse und der Erkennung um den angegebenen Wert; negative Werte [-] verkleinern die Datei um diesen Wert. +++ `-t|--transform [NAME]` <-2>`--transform=help` listet die Möglichkeiten auf: +++ `none` keine Veränderung (Standard) +++ `rotate90`, `rotate180`, `rotate270` Drehung um 90°, 180°, 270°, jeweils gegen den Uhrzeigersinn +++ `mirror_lr`, `mirror_tb`, `mirror_d1`, `mirror_d2` Horizontale, vertikale, diagonale ('''d1''':links oben-rechts unten, '''d2''':links unten - rechts oben) Spiegelung +++ `-T|--threshold [n%]` <-2> Schwellenwert für Binarisation (`0-100%`) +++ `-u|cut [l,t,w,h]` <-2> Schneidet Bild entsprechend der Angaben in [wikipedia:Pixel:] zu; `l`=links, `t`=oben, `w`=Breite, `h`=Höhe; `l` und `t` geben die Koordinaten obere linke Ecke wieder, von der aus die Breite und Höhe berechnet werden. Der Zuschnitt wird vor allen anderen Aktionen durchgeführt. +++ `-v|--verbose` <-2> ausführliche Ausgabe +++ `-x [DATEI]` <-2> Exportiert OCR-Ergebnisse in spezielle [http://www.gnu.org/software/ocrad/manual/ocrad_manual.html#OCR-results-file ORF-`DATEI`] {en} +++ `-h|help` <-2> Hilfe +++ `-V|version` <-2> Ausgabe der Versionsnummer +++ `-D|--debug [LEVEL]` <-2> Level zwischen `0-100`, gibt intermediäre Daten zur Fehlersuche aus (debug) }}} Weitere Informationen in der [:man:Manpage] des Programms, sowie im [http://www.gnu.org/software/ocrad/manual/ocrad_manual.html Online-Manual] {en}. = xsane2ocrad - Ocrad in XSane verwenden = Ocrad kann die intern von [:XSane:] verwendeten Bilddateien direkt verwenden. Allerdings lassen sich die Angaben dazu nicht direkt im OCR-Konfigurationsfenster von XSane angeben. Benötigt wird ein kleines Skript, '''xsane2ocrad.sh''', das die Optionen ausliest und Ocrad dann startet. Das Skript [[Anhang(ocrad/xsane2ocrad.sh, herunterladen)]] {dl} oder kopieren, in einem Editor[5] laden, unter '''xsane2ocrad.sh''' abspeichern und ausführbar[6] machen. {{{#!code bash #!/bin/bash # xsane2ocrad - ocr with ocrad directly from xsane # Copyright (C) 2012 Heinrich Schwietering # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # ################################################################################ # # # xsane2ocrad 0.1 # # # # *** ocrad made simple *** # # # ################################################################################ # # xane2ocrad is a wrapper to use Ocrad with XSane # # # TEMP_DIR=/tmp/ # folder for temporary files ERRORLOG="xsane2ocrad.log" # file where STDERR goes if [[ -z "$1" ]] then echo "Usage: $0 [OPTIONS] xsane2ocrad scans image files with XSane, recognizes the text using ocrad and outputs the text in a file. OPTIONS: -i define input file (any image-format supported) -o define output file (txt, html, hocr, rtf) -e optional, all ocrad-Options, use quotes Progress- & error-messages will be stored in this logfile: $TEMP_DIR$ERRORLOG xsane2ocrad depends on - XSane, http://www.xsane.org/ - ocrad, http://www.gnu.org/software/ocrad/ Some coding was stolen from 'ocube' http://www.geocities.com/thierryguy/ocube.html This ocrad adaption is based on xsane2tess http://doc.ubuntu-fr.org/xsane2tess, Hints always welcome! heinrich (dot) schwietering (at) gmx (dot) de " exit fi # get options... while getopts ":i:o:e:" OPTION do case $OPTION in i ) # input filename (with path) FILE_PATH="$OPTARG" ;; o ) # output filename FILE_OUT="$OPTARG" ;; e ) # extra options EXTRA="$OPTARG" ;; esac done # redirect STDERR to ERRORLOG exec 2>>$TEMP_DIR$ERRORLOG echo "~~~+++~~~~+++~~~" 1>&2 ocrad "$FILE_PATH" -o "$FILE_OUT" $EXTRA 1>&2 echo "ocrad "$FILE_PATH" -o "$FILE_OUT" $EXTRA ausgeführt" 1>&2 echo "~~~+++~~~~+++~~~"$(date +%c) 1>&2 }}} Das Skript ist eine Anpassung des xsane2tess-Skriptes, das auf [http://doc.ubuntu-fr.org/xsane2tess ubuntu-fr.org] {fr}, der französischen Ubuntu-Seite, veröffentlicht worden ist. Das Temporärverzeichnis (Zeile 30) kann entsprechend der eigenen Wünsche abgepasst werden, dort wird auch die '''xsane2ocrad.log'''-Datei abgelegt, die bei Fehlern ggf. hilfreich ist. In ''"XSane -> Einstellung -> Konfiguration -> Texterkennung"'' wird als OCR-Befehl ''"/PFAD/ZU/xsane2ocrad.sh"'' sowie weitere Optionen eingesetzt, als Option für die Eingabedatei ''"-i"'', für die Ausgabedatei ''"-o"'', alles andere bleibt frei. Als weitere Optionen können mit `-e` alle Ocrad-Optionen verwendet werden, die dann allerdings in Anführungsstriche gestellt werden müssen. So liefert `-e "-l -a -F utf8"` eine Layouterkennung, an die erstellte Datei können weitere Teile angehängt werden, die Ausgabe erfolgt in UTF-8, der Standardkodierung unter Ubuntu. Die Vorlage wird in XSane im Betrachter-Modus als ''"Strichzeichnung"'' mit einer Auflösung von 300 dpi erstellt. Im Betrachter die Texterkennung ([[Bild(xsane/xsane-ocr.jpg, 18)]]-Taste) wählen, der Ausgabename mit entsprechender Endung wird im OCR-Speicher-Dialog festgelegt. Es lassen sich auch mehrerer Scans zu einer Datei aneinander hängen, wenn zum Abspeichern der selbe Name verwendet wird. Alternativ kann auch als Speicherformat ''"TEXT"'' angegeben werden, damit lässt sich der "Umweg" über den Betrachter-Modus umgehen und direkt eine Textdatei anlegen. Falls Probleme auftauchen, liefert das angelegte Protokoll '''xsane2ocrad.log''' ggf. Hinweise zur Lösung. Die Erkennung erfolgt sehr schnell; allerdings hat Ocrad insbesondere mit dem Buchstaben "w" große Probleme - vielleicht weil er im Spanischen nicht vorkommt... = Alternativen = * [:Texterkennung:] {Übersicht} * [:tesseract-ocr:] * [:Cuneiform-Linux:] * [:GOCR:] * [:ocre:] * [github:tmbdev/ocropy:OCRopus] {en} = Links = * [http://www.gnu.org/software/ocrad/ Ocrad] {en} * [http://www.gnu.org/software/ocrad/manual/ocrad_manual.html Handbuch] {en} * [http://lists.gnu.org/archive/html/bug-ocrad/ Bug-Archiv] {en} #tag: Grafik, Büro, Kommunikation, OCR, Texterkennung