Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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, ab 3.03 zudem als PDF aus. Die Texterkennung kann theoretisch auch "trainiert" werden.
Es gibt einige Projekte, die auf tesseract-ocr zurückgreifen, siehe 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, z.B. -eng, -fra, -ita, -ndl, -por, -spa, -vie, oder -deu-frak (Fraktur-Erkennung))
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, ab Ubuntu 14.04 in Version 3.03.
Die allgemeine Syntax auf der Kommando-Zeile [5] lautet:
tesseract IMAGE OUTPUTBASE [-l LANGID] [-psm N] [KONFIGURATIONSDATEI...]
Tesseract 3.0x kann aufgrund der verwendeten 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).
Um mehrsprachige Vorlagen besser erkennen zu lassen, können die Sprachen ab Version 3.03 auch kombiniert werden, indem sie bei der l
-Option durch ein +-Zeichen ohne Leerstellen angehängt werden. Sinnvoll auch bei Vorlagen, in denen Fraktur/Kyrillisch/Griechisch und lateinische Schriften gleichzeitig verwendet werden (Lexika o.ä., z.B. mit -l deu+deu-frak
).
Ab Version 3.03 lassen sich mit Tesseract direkt PDF-Dateien mit durchsuchbare Textebene aus den Vorlagen erstellen. Dazu wird bei der Texterkennung die Konfigurationsdatei pdf verwendet; der Aufruf erfolgt also als
tesseract -l LANGID EINGABEBILD AUSGABENAME pdf
tesseract erstellt daraus ein AUSGABENAME.pdf. Umwege über hOCR-Dateien, und hocr2pdf, die zudem oft nur mäßige Passung erreichten, können damit elegant umgangen werden, siehe aber Warnung vor überdimensionierten PDFs.
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"), erst ab Tesseract 3.03 direkt nutzbar, siehe auch Automatisches Drehen von Vorlagen |
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).
Die Frontends werden im Übersichtsartikel Texterkennung ab dem Punkt OCR-Programme mit grafischer Oberfläche beschrieben. Viele davon unterstützen tesseract-ocr.
An dieser Stelle wird nur die Nutzung von XSane in Verbindung mit tesseract-ocr beschrieben.
tesseract-ocr kann auch direkt aus XSane heraus verwendete werden, möglich sind Ausgaben im reinen Text- oder im hOCR/html-Format (z.B. für Sandwich-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, https://github.com/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.
Ab Ubuntu 14.04/Tesseract 3.03 müssen für die Erstestellung von hocr-Dateien im Skript die html
-Endungen in den Zeilen 124-133 durch hocr
ersetzt werden! Eine Version, mit der direkt mit Tesseract durchsuchbare PDF-Dateien erstellt werden können findet sich im Forum.
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.
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).
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.
Sandy Skript zum Erstellen von Sandwich-PDFs unter Ubuntu 14.04+
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
Diese Revision wurde am 22. Dezember 2015 12:01 von aasche erstellt.