tesseract-ocr

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.

Installation

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))

Wiki/Vorlagen/Installbutton/button.png

Manuelle Installation

Wer unter älteren Ubuntu-Versionen die neuste Version 2.04 installieren will, kann den Quellcode von der code.google-Seite {dl} herunterladen. Das Archiv entpacken[2], und kompilieren[3].

Hinweis!

Fremdsoftware kann das System gefährden.

Um auch komprimierte und mehrseitige .tif-Dateien verwenden zu können, muss zuvor noch

  • libtiff4-dev

Wiki/Vorlagen/Installbutton/button.png

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.

tesseract-ocr 3.00

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!

Hinweis:

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 {en}), 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.

Benutzung

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.

tesseract-ocr trainieren

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.

Frontends

YAGF

/YAGF/yagf.png YAGF {en} 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.

xsane2tess

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

Wiki/Vorlagen/Installbutton/button.png

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 {en} entnommen. Das Original-xsane2tess-Skript ist hier {fr} auf der französischen Ubuntu-Seite ubuntu-fr.org veröffentlicht worden. Es existiert eine weitere modifizierte Version im italienischen linux.p2pforum {it}, 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 xsane/xsane-ocr.jpg-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

vietOCR {en} 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

OcrGui {en} 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 {en}; 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

gImageReader/gImageReader.png gImageReader {en} 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.

Alternativen

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

Passwort vergessen?