Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
tesseract-ocr ist ein Kommandozeilenprogramm zur Texterkennung. Ursprünglich von Hewlett Packard zwischen 1984 und 1995 als kommerzielles Programm entwickelt, wurde der Code 2005 freigegeben. Die Entwicklung wird von Google unterstützt, da eine Open Source-Lösung zur Erstellung von E-Books benötigt wurde. Das Programm unterstützt etliche westeuropäische und asiatische Sprachen wie z.B. vietnamesisch. tesseract-ocr ist ein reines Zeichenerkennungs-Programm, es liefert keine Layout-Analyse, und gibt unformatierten Text, ab Version 3.00 auch HOCR, aus. Die Texterkennung kann "trainiert" werden.
Es gibt einige Projekte, die auf tesseract-ocr zurückgreifen, so z.B. OCRopus und andere grafische Frontends, die das Programm als OCR-Engine verwenden. Auch aus XSane heraus kann das Programm verwendet werden.
tesseract-ocr ist in den Paketquellen vorhanden. Installiert [1] werden müssen die folgenden Pakete:
tesseract-ocr (universe)
tesseract-ocr-deu (universe, und/oder mindestens eine Sprachdatei, möglich sind -eng, -fra, -ita, -ndl, -por, -spa, -vie, sowie -deu-frak (Fraktur-Erkennung), für tessereact 3.0x sind noch wesentlich mehr Sprachen vorhanden, u.a. auch Arabisch und Chinesisch)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install tesseract-ocr tesseract-ocr-deu
sudo aptitude install tesseract-ocr tesseract-ocr-deu
Ab 12.04 Precise Pangolin liegt tesseract-ocr in der Version 3.02 vor.
Frühere Ubuntu-Versionen enthalten noch die Version 20x, die aber mit folgendem PPA auf die Version 3.0x aktualisiert werden kann.
Adresszeile zum Hinzufügen des PPAs:
ppa:alex-p/tesseract-ocr
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen bietet die PPA-Beschreibung vom Benutzer/Team alex-p.
Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.
Die tesseract-ocr-Version 3.0x unterscheidet sich entscheidend von der Version 2.0x! Die Version 3.0x kann von älteren Programmen nicht ohne Weiteres als Ersatz verwendet werden.
Allerdings ist über einen kleinen Umweg meist die Nutzung möglich, da die Syntax im Prinzip gleich geblieben ist. tesseract-ocr 3.0x benötigt "komprimierte" Sprachdateien, <langid>.traineddata (die bereits in etlichen Sprachen vorliegen, siehe Download-Liste ), die entpackt [2] und mit Root-Rechten [3] im Verzeichnis /usr/share/tesseract-ocr/tessdata bzw /usr/local/share/tessdata abgelegt werden müssen. Etliche Anwendungen, die tesseract-ocr in Version 2.0x verwenden, erkennen diese Dateien nicht als Sprachdateien, und behaupten dementsprechend, es seien keine Sprachdateien installiert. Wenn aber die für tesseract 2.0x nötigen Dateien (und für bisher nicht unterstützte Sprachen reicht es, andere mit dem entsprechenden Sprach-Prefix umzubenennen) zusätzlich in dem Verzeichnis vorliegen, werden die "alten" Sprachen erkannt, trotzdem aber die "neue" Variante verwendet. Vorteil u.a.: tesseract-ocr 3.0x kann mit Spalten umgehen.
vietOCR (ab Version 3.0) und ocrodjvu (ab Version 0.7.0) können in den aktuellen Versionen direkt tesseract-ocr 3.0x verwenden. Allerdings muss zur Verwendung der <langid>traineddata-Dateien ggf. Leserecht [6] für alle Benutzer erteilt werden, damit die Programme auf die Daten zugreifen können. Es existieren inzwischen 36 Sprachdateien (Stand: Mai 2011), darunter auch Frakturschrifterkennung für schwedische, dänische und deutsche Texte.
OCRopus (Version 0.3) baut intern z.T. auf tesseract-ocr 2.0x auf. Die "neuen" Sprachdateien werden zwar ggf. als Sprachen erkannt, sind aber nicht nutzbar. Hier muss der umgekehrte Weg beschritten werden, wenn tesseract-ocr 3.0x installiert ist: Die alten Sprachpakete müssen installiert bleiben, zu den 2.0x-Sprachpaketen muss ggf. die neue Version <langid>.trainedddata dazu in den entsprechenden Ordner kopiert werden, damit die Sprache weiterhin erkannt wird. Ab Precise ist OCRopus nicht mehr in den Quellen, da die "stabile" Version tesseract-ocr 2.0x benötigt, die nicht mehr in den Ubuntu-Quellen vorhanden ist. Die aktuelle OCRopus-Version 0.6 ist nicht mehr kompatibel.
Die allgemeine Syntax auf der Kommando-Zeile [5] lautet:
tesseract IMAGE.tif OUTPUT [-l LANGID] tesseract IMAGE OUTPUTBASE [-l LANGID] [-psm N] [KONFIGURATIONSDATEI...] #für Version 3.0x
tesseract-ocr 2.0x kann momentan nur nicht-komprimiertes .tif-Format, sowie einige .bmp-Varianten verwenden. Andere Dateien müssen also zunächst in das .tif-Format konvertiert werden (z.B. mit ImageMagick oder GIMP). Tesseract 3.0x kann aufgrund der Leptonica-Bibliotheken so gut wie jedes Bildformat verarbeiten, allerdings können PDF-Dateien nicht direkt verwendet werden.
Die Ausgabe erfolgt im einfachen Text-Format mit den Zeilenumbrüchen wie in der Vorlage; die Erkennungsqualität ist, natürlich abhängig von der Bildqualität der Vorlage, für "Standardschriftarten" sehr hoch, auch gängige Sonderzeichen werden gut erkannt. Ab Version 3.0x ist über das Konfigurationsskript hocr auch die Ausgabe in einem html-Format möglich, in dem auch die Positionen der erkannten Wörter gespeichert werden. Sinnvoll z.B. für sog. PDF-Sandwiches, in denen eine durchsuchbare Textlage unter der Grafik eingebettet wird (siehe z.B. pdfsandwich).
Mit der -psm
-Option lässt sich festlegen, dass tesseract nur bestimmte Subroutinen zur Layout-Analyse durchführt, oder die Vorlage als einen festgelegten Vorlagentyp auffasst. N
steht dabei für einen Zahlwert
psm-Optionen | |
Optionsnr. | Funktion |
0 | Nur Ausrichtung und Skript-Erkennung (OSD "Orientation and script detection"). |
1 | Automatische Seitensegmentierung mit OSD. |
2 | Automatische Seitensegmentierung, aber keine OSD, oder Texterkennung (OCR). |
3 | Vollständige automatische Seitensegmentierung, aber keine OSD (Standardeinstellung). |
4 | Behandelt die Vorlage als eine einzelne Textspalte mit unterschiedlichen Zeichengrößen. |
5 | Behandelt die Vorlage als einzelnen einheitlichen Textblock im Blocksatz. |
6 | Behandelt die Vorlage als einheitlichen Textblock |
7 | Behandelt das Bild als einzelne Textzeile. |
8 | Behandelt das Bild als einzelnes Wort. |
9 | Behandelt das Bild als einzelnes, im Kreis geschriebenes Wort. |
10 | Behandelt das Bild als einzelnes Zeichen. |
Anders als Cuneiform-Linux kann tesseract-ocr "trainiert" werden; es ist möglich, es komplett für neue Sprachen anzulernen, ggf. auch für bestehende Sprachen zu verbessern (z.B. wenn Vorlagen verwendet werden, die "ungewöhnliche" Schriftarten beinhalten, oder qualitativ nicht so hochwertig sind). Der sehr aufwändige Prozess wird in einem eigenen Artikel tesseract-ocr trainieren für Version 2.0.x beschrieben.
Alle folgenden Frontends unterstützen die Version 3.0x von tesseract-ocr.
YAGF ist ein grafisches Frontend zur Texterkennung/OCR für Cuneiform-Linux und Tesseract, das es ermöglicht, Bilddateien und PDFs zu verarbeiten, oder Seiten direkt aus dem Programm heraus über XSane einzuscannen.
OCRFeeder ist eine in Python geschriebene Anwendung zur Texterkennung und Layout-Analyse, mit der Dokumente in einem angepassten Layout/Schriftbild abgespeichert werden können. Das Programm kann dazu nebst tesseract-ocr auch cuneiform und weiter OCR-Engines verwenden und erzeugt als Ausgabe eine .odt oder html-Datei.
tesseract-ocr kann auch direkt aus XSane heraus verwendete werden, möglich sind Ausgaben im reine Text- oder im hOCR/html-Format (z.B. für Sandwch-PDFs). Verarbeitung von Mehrfachscans können durch auch die Angabe einer SAmmel-Ausgabedatei erstellt werden.
Das Texterkennungsprogramm wird mit folgendem xsane2tess3-Skript eingebunden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | #!/bin/bash # xsane2tess3 - tesseractOCR 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 <http://www.gnu.org/licenses/>. # # ############################################################################## # # xsane2tess3 0.1 # # *** tesseract made simple *** # # ############################################################################## # # xsane2tess is a TesseractOCR 3.0x wrapper to be able to use tesseract with xsane # # # TEMP_DIR=/tmp/ # folder for temporary files (all files) ERRORLOG="xsane2tess3.log" # file where STDERR goes if [[ -z "$1" ]] then echo "Usage: $0 [OPTIONS] xsane2tess3 scans images with TesseractOCR and outputs the text in a file or as hocr/html document OPTIONS: -i <file1> define input file (any image-format supported) -o <file2> define output-file (*.txt/hOCR) -l <lang> define language-data tesseract should use -e <config> filename for tesseract -f </path/to/Final> name and path fot multiscan document Progress- & error-messages will be stored in this logfile: $TEMP_DIR$ERRORLOG xsane2tess depends on - XSane, http://www.xsane.org/ - TesseractOCR, http://code.google.com/p/tesseract-ocr/ Some coding was stolen from 'ocube' http://www.geocities.com/thierryguy/ocube.html This 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:l:c:f:" OPTION do case $OPTION in i ) # input filename (with path) FILE_PATH="$OPTARG" ;; o ) # output filename FILE_OUT="$OPTARG" ;; l ) # Language-selection LANG="$OPTARG" ;; c ) # use hocr configfile CONFILE="$OPTARG" ;; f ) # final name for multiscan ocr file FINAL="$OPTARG" ;; esac done # redirect STDOUT to FILE_OUT exec 1>>$FILE_OUT # redirect STDERR to ERRORLOG exec 2>>$TEMP_DIR$ERRORLOG # strip path from FILE_PATH, use filename only IN_FILE="${FILE_PATH##*/.*}" echo "~~~+++~~~~+++~~~" 1>&2 # start OCR (tesseract expands output with *.txt/.html) tesseract "$IN_FILE" "$FILE_OUT" -l "$LANG" "$CONFILE" 1>&2 echo Tesseract used with "$LANG" "$CONFILE" 1>&2 { if [[ "$FINAL" != '' ]] then { if [[ "$CONFILE" == "" ]] then # check if final txt file is already existing { if [[ ! -a "$FINAL".txt ]] then # start final ocr file cp "$FILE_OUT".txt "$FINAL".txt 1>&2 echo "$FINAL.txt started" 1>&2 else mv "$FINAL".txt "$FINAL".new.txt cat "$FINAL".new.txt "$FILE_OUT".txt > "$FINAL".txt echo "$FILE_OUT.txt added to $FINAL.txt" 1>&2 rm "$FINAL".new.txt fi } else # check if final hocr file is already existing { if [[ ! -a "$FINAL".html ]] then # start final ocr file cp "$FILE_OUT.html" "$FINAL".html 1>&2 echo "$FINAL.html started" 1>&2 else mv "$FINAL".html "$FINAL".new.html cat "$FINAL".new.html "$FILE_OUT".html > "$FINAL".html echo "$FILE_OUT.html added to $FINAL.html" 1>&2 rm "$FINAL".new.html fi } fi } rm $FILE_OUT else # STDOUT scanned text => FILE_OUT cat "$FILE_OUT".* fi } rm $FILE_OUT.* echo "~~~+++~~~~+++~~~"$(date +%c) 1>&2 |
Es wird in einen Editor [4] geladen, dann mit Root-Rechten [3] unter z.B. /usr/local/bin/xsane2tess3.sh gespeichert und ausführbar [6] gemacht. Die Logdatei xsane2tess3.log wird in /tmp angelegt, im Skript kann optional das gewünschte Temporär-Verzeichnis in Zeile 32 eintragen werden.
In "XSane -> Einstellung -> Konfiguration -> Texterkennung" wird als OCR-Befehl "/usr/local/bin/xsane2tess3.sh" sowie weitere Optionen eingesetzt, als Option für die Eingabedatei "-i", für die Ausgabedatei "-o", alles andere bleibt frei.
Weitere Optionen sind:
Option | Funktion |
-l KÜRZEL | OCR-Sprachkürzel der zu verwendenden Sprache; entsprechendes Sprachpaket muss installiert sein |
-c hocr | Verwendung des Konfigurationsskript hocr |
-f /PFAD/ZUR/SAMMELDATEI | Name der Sammeldatei zur einfachen Erkennung von Mehrfachscans, z.B. für ADF-Scanner sinnvoll. Ohne Angabe des Pfades wird die Sammeldatei im Homeverzeichnis des Benutzers abgelegt. Beim Namen keine Endung angeben, die ensprechende Endung (.txt oder .html) wird automatisch verwendet. |
Beispiele für die Eingabe
/PFAD/ZU/xsane2tess3.sh -l deu -c hocr
Erstellt wird eine einseitige hocr/html-Datei.
/PFAD/ZU/xsane2tess3.sh -l deu-frak -f /Home/BENUTZER/Texterkennung/Gothik-Text
Erstellt wird die Datei Gothik-Text.txt im "Mehrfachmodus", verwendet wird Fraktur-Erkennung für deutschsprachige Vorlagen. An die Datei könne auch später weitere OCR-Ergebnisse angehängt werden. Das gewählte Verzeichnis muss existieren und für den Benutzer beschreibbar sein.
Als Einstellung wird in XSane der Betrachter-Modus, sowie "Strichzeichnung" und als Auflösung "300 dpi" (welche Bildformat ist egal; bei sehr kleiner Schrift ggf. eine höhere Auflösung wählen). Nun wird die Vorlage gescannt und dann im Betrachter die -Taste bedient. Mit tesseract erfolgt die eigentliche Texterkennung. Die Datei wird dann mit dem ausgewählten Namen (entsprechende Endung angeben!) im ausgewählten Verzeichnis abgespeichert, die nicht mehr benötigten Bild-Dateien werden gelöscht. Wenn im Betrachtermodus zum Abspeichern der gleiche Dateiname verwendet wird, werden weitere Texterkennungen an die bestehende Datei angehängt; sehr praktisch, um auch mehrseitige Texte gleich in einer Textdatei ausgeben zu können.
Alternativ kann auch als Speicherformat "TEXT" angegeben werden, wenn keine Überprüfung der Ausgabe nötig ist. Damit lässt sich der "Umweg" über den Betrachter-Modus umgehen und direkt eine OCR-Datei anlegen, z.B. beim Einscannen mehrerer Text-Seiten über ADF-Scanner sinnvoll. Mit Verwendung der Option -f
werden die OCR-Ergebnisse auch im Speicher-Modus umstandslos aneinandergehängt. Dabei ist es egal, was für Angaben für den Speicherort und Dateiname im Einstellungsfenster verwendet werden, die Angabe im Konfigurationsfenster zum OCR-Befehl hat den Vorrang; natürlich darf nicht der gleiche Name im selben Verzeichnis gewählt werden.
Falls tesseract nur in Version 2.0x vorliegt, wird das Programm ImageMagick benötigt, um die Vorlage-Dateien automatisch in ein von tesseract-ocr lesbares .tiff-Format zu konvertieren (das von XSane verwendete wird leider nicht unterstützt, wenn tesseract-ocr nicht mit libtiff-Unterstützung kompiliert wurde). Dazu zunächst das Paket
imagemagick
mit apturl
Paketliste zum Kopieren:
sudo apt-get install imagemagick
sudo aptitude install imagemagick
installieren
Das xsane2tess-Skript ist in der hier veröffentlichten Version mit tesseract-ocr 3.0x voll kompatibel, damit können aber keine hocr/html-Dateien erstellt werden. Bei Parallelnutzung von tesseract 2.0x und 3.0x muss ggf. der Pfad in der Zeile
tesseract "$TIF_FILE" "$TXT_FILE" -l "$TES_LANG" 1>&2
zur gewünschten Version ergänzt werden, also z.B /usr/local/bin/tesseract
.
Die Bedienung erfolgt wie oben beschrieben, die Optionen -c
und -f
sind allerdings nicht verwendbar.
Dieses xsane2tess-Skript ist dem Mandriva-Forum entnommen. Das Original-xsane2tess-Skript ist hier
auf der französischen Ubuntu-Seite ubuntu-fr.org veröffentlicht worden. Es existiert eine weitere modifizierte Version im italienischen linux.p2pforum
, die ohne Sprachangabe funktioniert (ggf. sinnvoll für Texte in nicht-unterstützen Sprachen).
vietOCR ist ein ursprünglich für vietnamesische Sprachunterstützung konzipiertes Java-Programm für tesseract-ocr, dessen grundlegenden Funktionen aber mit jeder installierten tesseract-ocr-Sprache verwendet werden können.
OcrGui ist ein Programm, mit dem in einer grafischen Oberfläche aus Bildvorlagen eine Texterkennung erzeugt werden kann. Zum Einsatz kommen dazu tesseract-ocr oder GOCR
; außerdem kann das Ergebnis mit Hunspell einer Rechtschreibprüfung unterzogen werden. Das Programm wurde in C verfasst, es verwendet GLib- und GTK+-Komponenten. OcrGui befindet sich noch in einer frühen Entwicklungsphase, liefert aber mit der Verwendung von tesseract-ocr gute Ergebnisse.
gImageReader ist ein einfach zu bedienendes Frontend für das OCR-Programm tesseract-ocr. Es ist in Python verfasst und ermöglicht die Texterkennung aus vorliegenden Bilddateien (es sind alle gängigen Formate verwendbar, auch PDF-Dateien), sowie den direkten Import über einen SANE-fähigen Scanner.
Siehe Texterkennung , vergleichbare Ergebnisse erzielt eigentlich nur Cuneiform-Linux.
Free Online-OCR-Service welcher tesseract-3.0.1 + imagemagick verwendet
OCRFeeder Programm, das verschiedene OCR-engines verwenden kann (auch tesseract-ocr) und auch Layout-Erkennung liefert.
tesseract-ocr-Forum auf groups.google.com
Texterkennung mit Tesseract OCR - heise Open Source, 08/2012
Vortrag über die Geschichte von tesseract-ocr
.pdf, 22 S. / ca. 490 KB, 07/2007