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, die eine Open-Source-Lösung zur Erstellung von E-Books benötigen. Das Programm unterstützt etliche westeuropäische Sprachen, sowie vietnamesisch, die Texterkennung kann "trainiert" werden. tesseract-ocr ist ein reines Zeichenerkennungs-Programm, es liefert keine Layout-Analyse, und gibt nur unformatierten Text aus.
Es gibt einige Projekte, die auf tesseract-ocr zurückgreifen, so z.B. OCRopus, und Frontend-GUIs, 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 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-f (Fraktur-Erkennung))
Wer unter älteren Ubuntu-Versionen die neuste Version 2.04 installieren will, kann den Quellcode von der code.google-Seite
herunterladen. Das Archiv entpacken[2], und kompilieren[3].
Fremdsoftware kann das System gefährden.
Um auch komprimierte und mehrseitige .tif-Dateien verwenden zu können, muss zuvor noch
libtiff4-dev
installiert werden.
Allerdings muss für 2.04, wenn nicht vorhanden, vor dem Erstellen in der Datei viewer/svutils.ccp in einem Editor[4] bei den includes die Zeile
1 | #include <stdio.h>
|
aufgenommen werden, ansonsten erscheint bei make die Fehlermeldung
svutil.cpp:323: error: 'snprintf' was not declared in this scope
Danach kann die Kompilierung wie gewohnt erfolgen.
Anders als bei der Paketversion wird das Programm dabei standardmäßig in /usr/local/... abgelegt. Das führt dazu, dass die Sprachdateien im Verzeichnis /usr/share/tesseract-ocr/tessdata zunächst nicht gefunden werden. Abhilfe schafft ein symbolischer Link, oder das Verschieben der Sprachdateien nach /usr/local/share/(tesseract-ocr)/tessdata.
Die aktuelle Version ist nicht in den Paketquellen vorhanden, sie kann aber über verschiedene versionsspezifische PPAs von alex-p bezogen werden. Eine dauerhafte Aktivierung wird ausdrücklich nicht empfohlen, das sich sehr viele Programme darin befinden, die in keinerlei Zusammenhang mit tesseract stehen!
Die tesseract-ocr-Version 3.00 unterscheidet sich entscheidend von der Version 2.0x, daher ist diese Anleitung dafür nicht direkt geeignet! Auch kann Version 3.00 von anderen Programmen meist 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.00 benötigt "komprimierte" Sprachdateien, <langid>.traineddata (die bereits in etlichen Sprachen vorliegen, siehe Download-Liste
), die entpackt und mit Root-Rechten [9] im Verzeichnis /usr/share/tesseract-ocr/tessdata bzw /user/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 umzubennenen) zusätzlich in dem Verzeichnis vorliegen, werden die "alten" Sprachen erkannt, trotzdem aber die "neue" Variante verwendet. Vorteil u.a.: tesseract-ocr 3.00 kann mit Spalten umgehen.
Nach Kompilierung und Installation von tesseract-ocr 3.00 muss zunächst der Befehl
sudo ldconfig
ausgeführt werden, damit tesseract die benötigten Bibliotheken findet.
vietOCR (ab Version 3.0) und ocrodjvu (ab Version 0.7.0) können in den aktuellen Versionen direkt tesseract-ocr 3.00 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 ein Vielzahl von Sprachdateien (36, Stand Mai 2011), darunter auch Frakturschrifterkennung für schwedische, dänische und deutsche Texte.
OCRopus aus den Paketquellen (Version 3.1.x) 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.00 installiert ist: Die alten Sprachpakete müssen installiert bleiben, zu den 2.0.x-Sprachpaketen muss ggf. die neue Version <langid>.trainedddata dazu in den entsprechenden Ordner kopiert werden, damit die Sprache weiterhin erkannt wird.
Die allgemeine Syntax auf der Kommando-Zeile[5] lautet:
tesseract <image.tif> <output> [-l <langid>]
tesseract-ocr 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).
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.
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 beschrieben.
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. YAGF unterstützt auch die Version 3 von Tesseract.
Ausführliche Beschreibung: YAGF.
tesseract-ocr kann auch direkt aus XSane heraus verwendete werden, benötigt wird das Programm ImageMagick, 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). Das Skript ist in der hier veröffentlichten Version mit tesseract-ocr 3.00 voll kompatibel, bei Parallelnutzung 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.
Dazu zunächst das Paket
imagemagick
installieren.
Das Texterkennungsprogramm wird mit folgendem 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 | #!/bin/bash # ############################################################################## # # xsane2tess 1.0 # # *** tesseract made simple *** # ############################################################################## # # xsane2tess is a TesseractOCR wrapper to be able to use tesseract with xsane # # # TEMP_DIR=~/tmp/ # folder for temporary files (TIFF & tesseract data) ERRORLOG="xsane2tess.log" # file where STDERR goes TEST="testoutput.txt" if [[ -z "$1" ]] then echo "Usage: $0 [OPTIONS] xsane2tess converts files to TIF, scans them with TesseractOCR and outputs the text in a file. OPTIONS: -i <file1> define input file (any image-format supported) -o <file2> define output-file (*.txt) -l <lang> define language-data tesseract should use Progress- & error-messages will be stored in this logfile: $TEMP_DIR$ERRORLOG xsane2tess depends on - ImageMagick http://www.imagemagick.org/ - TesseractOCR http://code.google.com/p/tesseract-ocr/ Some coding was stolen from 'ocube' http://www.geocities.com/thierryguy/ocube.html " exit fi # get options... while getopts ":i:o:l:" OPTION do case $OPTION in i) # input filename (with path) FILE_PATH="$OPTARG" ;; o) # output filename FILEOUT="$OPTARG" ;; l) # Language-selection TES_LANG="$OPTARG" ;; esac done # redirect STDOUT to FILE_OUT exec 1>>$FILEOUT # redirect STDERR to ERRORLOG exec 2>>$TEMP_DIR$ERRORLOG # strip path from FILE_PATH, use filename only IN_FILE=${FILE_PATH##*/} TIF_FILE="$TEMP_DIR""xsane2tessResult".tif TXT_FILE="$TEMP_DIR""xsane2tessResult" # converting image into TIFF (ImageMagick) convert "$FILE_PATH" -compress none "$TIF_FILE" 1>&2 # start OCR (tesseract expands output with *.txt) tesseract "$TIF_FILE" "$TXT_FILE" -l "$TES_LANG" 1>&2 # STDOUT scanned text => FILE_OUT cat "$TXT_FILE".txt # delete graphic file after use rm "$TIF_FILE" # delete tesseract output rm "$TXT_FILE".txt |
Das aktuelle 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).
Es wird in einen Editor geladen, dann mit Root-Rechten[7] unter /usr/local/bin/xsane2tess gespeichert und ausführbar[6] gemacht. Dann muss noch das Verzeichnis ~/tmp anlegt oder stattdessen im Skript das gewünschte Temporär-Verzeichnis in Zeile 15 eintragen werden. In dem Verzeichnis wird auch eine xsane2tess.log-Datei erstellt.
In "XSane -> Einstellung -> Konfiguration -> Texterkennung" wird als OCR-Befehl "/usr/local/bin/xsane2tess -l deu" (oder die gewünschte Sprache) eingesetzt, als Option für die Eingabedatei "-i", für die Ausgabedatei "-o", alles andere bleibt frei.
Als Einstellung wird in XSane im Betrachter-Modus "Strichzeichnung" und als Auflösung "300 dpi" sowie TIFF-Format ausgewählt (theoretisch sollte aber jedes Bildformat funktionieren; bei sehr kleiner Schrift ggf. eine höhere Auflösung wählen). Nun wird die Vorlage gescannt und dann im Betrachter die
-Taste bedient. Das Skript übergibt die gescannte Datei an ImageMagick, das es in eine für tesseract lesbare Form des .tif-Format konvertiert. Mit tesseract erfolgt die eigentliche Texterkennung. Die Datei wird dann mit dem ausgewählten Namen als reine .txt-Datei im angegebenen Verzeichnis abgespeichert, die nicht mehr benötigten Bild-Dateien werden gelöscht. Alternativ kann auch als Speicherformat "TEXT" angegeben werden, damit lässt sich der "Umweg" über den Betrachter-Modus umgehen und direkt eine Textdatei anlegen.
Wenn der gleiche Dateiname beibehalten wird, werden weitere Texterkennungen an die bestehende Datei angehängt; sehr praktisch, um auch mehrseitige Texte gleich in einer Textdatei ausgeben zu können.
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. Nähere Einzelheiten unter vietOCR
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; der Einsatz von tesseract-ocr 3.00 ist möglich. Details im Artikel OcrGui.
gImageReader
ist ein einfach zu bedienendes Frontend für das OCR-Programm tesseract-ocr (Versionen 2.0x und 3.0x werden unterstützt). 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. Einzelheiten in gImageReader.
Siehe Texterkennung (OCR)
, 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
Diese Revision wurde am 2. Februar 2012 um 23:29 Uhr
von spectas erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Multimedia, Büro, Grafik, OCR, Texterkennung
2004 – 2011 ubuntuusers.de • Einige Rechte vorbehalten