Texterkennung mit XSane und Tesseract
Posted by hyper_ch on 06 May 2010 | Tagged as: Debian, dergringo, Desktops, KDE, Ubuntu, Xfce
Es gibt verschiedene Tools für Texterkennung in Linux. Am einfachsten ist meiner Meinung nach immer noch XSane zu benutzen um die Dokumente einzuscannen. XSane kann dann die eingescannten Dokumente an verschiedene Texterkennungsprogramme weiterleiten. Ich habe sowohl GOCR wie auch Ocrad verwendet, bin aber zum Schluss gekommen, dass Tesseract für deutsche Texte am zuverlässigsten funktioniert.
Notwendige Pakete installieren
Zuerst müssen alle notwendigen Pakete installiert werden:
sudo apt-get install xsan sane sane-utils imagemagick tesseract-ocr tesseract-ocr-deu
&nbps;
XSane2Tess installieren
Damit man Tesseract direkt von XSane aus verwenden kann, muss ein entsprechendes Wrapper Script installiert werden:
sudo touch /usr/local/bin/xsane2tess
sudo chmod 0755 /usr/local/bin/xsane2tess
sudo nano /usr/local/bin/xsane2tess
Und dann folgenden Inhalt einfügen:
#!/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
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 define input file (any image-format supported)
-o define output-file (*.txt)
-l 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
FILE_OUT="$OPTARG"
;;
l ) # Language-selection
TES_LANG="$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##*/}
TIF_FILE="$TEMP_DIR""${IN_FILE%.*}".tif
TXT_FILE="$TEMP_DIR""${IN_FILE%.*}"
# 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
Eine aktuelle Version des Scripts kann hier bezogen werden.
&nbps;
XSane anpassen
Nachdem das Wrapper Skript “installiert” ist, kann XSane gestartet werden. Dann unter Preferences ins Setup gehen (oder Alt+s drücken). Dort in den OCR Tab wechseln.
Als OCR Command muss folgendes eingegeben werden:
xsane2tess -l deu
Als Input File option muss folgendes eingegeben werden:
-i
Als Output File option muss folgendes eingegeben werden:
-o
Zusätzlich zu Deutsch stellt Tesseract auch noch weitere Sprachen zur Verfügung. Diese einfach installieren und dann im XSane Setup das OCR Command ändern um die jeweilige Sprache zu verwenden.
2 Comments »
2 Responses to “Texterkennung mit XSane und Tesseract”
on 14 May 2010 at 22:53 1.Christian said …
Hi,
ich habe ein Howto von dir im Ubuntu Forum gelesen (HOWTO: Unlock a LUKS encrypted root partition via ssh)
leider habe ich damit ein paar Probleme und wollte fragen ob du mir vielleicht etwas weiterhelfen könntest? Bin noch ziemlicher Anfänger in Sachen Linux.
Meine Email: ****************
Würde mich sehr freuen.
danke
on 14 May 2010 at 23:09 2.hyper_ch said …
(1) Email Adresse im Text angeben ist böse, da freuen sich nämlich sämtliche Spam Spiders
(2) Das ist ein Kommentar zu einem Blogeintrag und die haben überhaupt nichts miteinander zu tun – sollte man also gleich unterlassen
(3) Ich mache keinen personal Support via Email. Wenn schon dann öffentlich… denn so können andere Leute auch davon profitieren. Ich verweise hierbei auf meine Signatur resp. den Standard-Text den ich im Ubuntu-Forums öfters hatte und weswegen ich dann mein Konto schliessen liess
(4) Das entsprechende Howto gibts auch noch an anderer Stelle wo ich immer noch partizipiere
(5) Das Howto wurde für eine spezifische Version geschrieben. Dinge ändern sich, so auch das Howto. Ich habe keinen Ubuntu Server mehr im Einsatz wo ich das noch brauche. Bei mir läuft im Serverbereich nur noch Debian. Ich denke nicht, dass ich dir da weiterhelfen kann. Beim Erstellen der initrd müsste es eigentlich Fehlermeldungen anzeigen, wenn irgendwas nicht klappt.
(6) Den anderen Kommentar lösche ich gleich, da dieser überhaupt nichts beiträgt.