OCR: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(OCR)
Zeile 1: Zeile 1:
Autor: Hartmut
 
 
 
= OCR =
 
= OCR =
  
Anleitung für OCR mit Xsane
+
=== Anleitung für OCR ===
 
 
Die folgende Lösung ist das Ergebnis harter Arbeit, die auf zweien meiner Rechner einwandfrei funktioniert. Meine Rechner haben als OS Opensuse 11.1 und KDE 4.3.x
 
 
 
Die OCR-Erkennung kann nur spaltenweise lesen, hängt aber auf Wunsch das Leseergebnis mehrerer Spalten aneinander an. Die Zeichenerkennung funktioniert mit der deutschen Sprache ganz ordentlich, besser als alles andere, was ich bisher probiert habe. Als Lesevorlagen dienten mir Schreibmaschinenseiten und die örtliche Tageszeitung.
 
 
 
Voraussetzung: Xsane und Imagemagic sind installiert und Xsane funktioniert mit dem Scanner. Wenn jemand einen HP-Scanner mit der HPLIP betreibt und Xsane sich weigert: sieh mal bitte in der /etc/sane.d/dll.conf nach, ob das Rautenzeichen vor dem letzten Eintrag "hpaio" weg ist. Wenn nicht, dann entferne es.
 
 
 
Installiert werden muss zusätzlich "tesseract" und "tesseract-data-deu". Das findest Du bei software.opensuse.org. Weil es dort mehrere Versionen gibt, hier der Hinweis, dass ich die Version von dieser Quelle benutze:
 
 
 
download.opensuse.org/repositories/openSUSE:/Factory:/Contrib/openSUSE_11.1[http://download.opensuse.org/repositories/openSUSE:/Factory:/Contrib/openSUSE_11.1]
 
 
 
Ferner gehört das Script "xsane2tess.sh" (unten) ausführbar nach /usr/bin. Falls jemand eine andere Sprache nutzen möchte: in diesem Script ist mit der Option "-l deu" die deutsche Sprache fest eingestellt, das kannst Du ändern.
 
 
 
Du brauchst in Deinem Homeverzeichnis einen Ordner namens "/tmp".
 
 
 
Dann wird Xsane gestartet und eingestellt: In /Einstellungen/Texterkennung muss in die oberste Zeile "/usr/bin/xsane2tess.sh" (ohne Anführungszeichen!), die beiden Optionen "-i" und "-o" bleiben, der Rest muss weg.
 
 
 
Jetzt kannst Du eine Vorschau von einer Zeitungsseite scannen. Dann stellst Du die Scanfläche auf eine Spalte ein, die Scanart auf Strichzeichnung, die Auflösung auf 300dpi und scanst das zum "Betrachter". Dort gehst Du auf /Datei/OCR, wählst einen Dateinamen und OK. Fertig. Wenn alles gut gelaufen ist, steht in der Datei der passende Text. Falls das der Fall ist, killst Du den Betrachter (Bild nicht speichern) und stellst die Scanfläche auf die nächste Spalte ein. Scan sie in dieselbe ! Datei. Allerdings findest Du sie im Dateiauswahlfenster nur, wenn Du als Filter nicht "Bild", sondern "Alle Dateien" einstellst. Falls alles stimmte, dann kannst Du in der Datei den Text beider Spalten untereinander lesen. Kwrite kann Dir mit Strg-A und Strg-J einen Fließtext daraus machen.
 
 
 
Und so weiter ...
 
 
 
 
 
----
 
 
 
'''Shellscript xsane2tess.sh'''
 
<pre>
 
#!/bin/bash
 
#
 
# ###############################################################################
 
#
 
#                                  xsane2tess 1.0b
 
#
 
#                          *** tesseract made simple ***
 
#
 
# ###############################################################################
 
#
 
# xsane2tess is a TesseractOCR wrapper to be able to use tesseract with xsane
 
# This is a modified version by Hartmut Krummrei 03/2010 with Language in line 77
 
#
 
#
 
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 <file1>  define input file (any image-format supported)
 
    -o <file2>  define output-file (*.txt)
 
   
 
  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/
 
 
  V1.0b provided by p2pforum.it  - http://linux.p2pforum.it
 
 
 
  Some coding was stolen from 'ocube'
 
  http://www.geocities.com/thierryguy/ocube.html
 
 
"
 
  exit
 
fi
 
 
 
 
 
# get options...
 
while getopts ":i:o:" OPTION
 
  do
 
  case $OPTION in
 
    i)  # input filename (with path)
 
      FILE_PATH="$OPTARG"
 
    ;;
 
    o )  # output filename
 
      FILE_OUT="$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##*/}
 
IN_FILE=`basename "$FILE_PATH"`
 
OUT_FILE=`basename "$FILE_PATH"`
 
 
 
# if the IN_FILE-name is complicated, convert produces waste,
 
# so lets take the OUT_FILE-name
 
  
TIF_FILE="$TEMP_DIR""${OUT_FILE%.*}".tif
+
Stand von April 2014
TXT_FILE="$TEMP_DIR""${IN_FILE%.*}"
 
  
# converting image into TIFF (ImageMagick)
+
Die eigentliche Engine zum "Entziffern" von Buchstaben heißt ''tesseract'' und die gibt es schon sehr lange. Der Aufruf erfolgt über die Kommandozeile:
convert "$FILE_PATH" -compress none  "$TIF_FILE" 1>&2
 
  
# start OCR (tesseract expands output with *.txt)
+
tesseract Bilddatei Textdateiname -l sprache
tesseract "$TIF_FILE" "$TXT_FILE" -l deu 1>&2
 
  
# STDOUT scanned text => FILE_OUT
+
Die vorhandenen Sprachdateien befinden sich im Paket ''traineddata''
cat "$TXT_FILE".txt
 
  
# delete graphic file after use
+
Tesseract hat inzwischen die Version 3.x und es gibt einer grafische Oberfläche dazu: ''tesseract-gui''.
rm "$TIF_FILE"
 
  
# delete tesseract workfiles
+
Gefunden habe ich die Pakete u.a. hier:
rm "$TXT_FILE".txt
+
[http://download.opensuse.org/repositories/home:/Lazy_Kent/openSUSE_12.1/]
  
rm "$TXT_FILE".raw
+
Diese Quelle in Yast einbinden diese Pakete installieren:
  
rm "$TXT_FILE".map
+
    tesseract
 +
    tesseract-gui
  
#show result
+
Und natürlich eine oder mehrere Sprachdatei, z.B.
kwrite "$FILE_OUT" &
 
</pre>
 
  
----
+
    tersseract-traineddata-german
Viel Spaß ...
 
  
[[Scanner | Zurück zu Scanner]]
+
und die Abhängigen natürlich. Danach existiert im Menüpunkt "Grafik" ein passender Eintrag auf die GUI. Hier wählt man oben die Bilddatei(en), klickt darunter diejenige an, die man jetzt lesen möchte und piekt mit der Maus in das Bildfenster. Der Mauszeiger wird im Bildfenster zu einem kleinen Rechteck, nach dem Klick verschwindet das Rechteck und man kann ein Rechteck um den Bereich ziehen, der bearbeitet werden soll. Weiter unten findet sich ein Dropdown-Menü "language", mit dem man nur beim ersten Start die Sprache einstellt. Zuletzt auf den Button "Ausführen" klicken und wenige Sekunden später steht das Ergebnis in einer Datei mit dem 'basename' von oben und der Extension ".txt" dahinter.
[[Category:Scanner]]
 
[[Category:Scripte]]
 
[[Category:Shellscripte]]
 

Version vom 23. April 2014, 17:06 Uhr

OCR

Anleitung für OCR

Stand von April 2014

Die eigentliche Engine zum "Entziffern" von Buchstaben heißt tesseract und die gibt es schon sehr lange. Der Aufruf erfolgt über die Kommandozeile:

tesseract Bilddatei Textdateiname -l sprache

Die vorhandenen Sprachdateien befinden sich im Paket traineddata

Tesseract hat inzwischen die Version 3.x und es gibt einer grafische Oberfläche dazu: tesseract-gui.

Gefunden habe ich die Pakete u.a. hier: [1]

Diese Quelle in Yast einbinden diese Pakete installieren:

   tesseract
   tesseract-gui

Und natürlich eine oder mehrere Sprachdatei, z.B.

   tersseract-traineddata-german

und die Abhängigen natürlich. Danach existiert im Menüpunkt "Grafik" ein passender Eintrag auf die GUI. Hier wählt man oben die Bilddatei(en), klickt darunter diejenige an, die man jetzt lesen möchte und piekt mit der Maus in das Bildfenster. Der Mauszeiger wird im Bildfenster zu einem kleinen Rechteck, nach dem Klick verschwindet das Rechteck und man kann ein Rechteck um den Bereich ziehen, der bearbeitet werden soll. Weiter unten findet sich ein Dropdown-Menü "language", mit dem man nur beim ersten Start die Sprache einstellt. Zuletzt auf den Button "Ausführen" klicken und wenige Sekunden später steht das Ergebnis in einer Datei mit dem 'basename' von oben und der Extension ".txt" dahinter.