Texterkennung mit XSane und Tesseract

Posted by 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 Responses to “Texterkennung mit XSane und Tesseract”

  1. 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

  2. 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.