|
|
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
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
| + | Stand von April 2014 |
− | #IN_FILE=${FILE_PATH##*/}
| |
− | IN_FILE=`basename "$FILE_PATH"`
| |
| | | |
− | TIF_FILE="$TEMP_DIR""${IN_FILE%.*}".tif
| + | Die eigentliche Engine zum "Entziffern" von Buchstaben heißt ''tesseract'' und die gibt es schon sehr lange. Der Aufruf erfolgt über die Kommandozeile: |
− | TXT_FILE="$TEMP_DIR""${IN_FILE%.*}"
| |
| | | |
− | # converting image into TIFF (ImageMagick)
| + | tesseract Bilddatei Textdateiname -l sprache |
− | convert "$FILE_PATH" -compress none "$TIF_FILE" 1>&2
| |
| | | |
− | # start OCR (tesseract expands output with *.txt)
| + | Die vorhandenen Sprachdateien befinden sich im Paket ''traineddata'' |
− | tesseract "$TIF_FILE" "$TXT_FILE" -l deu 1>&2
| |
| | | |
− | # STDOUT scanned text => FILE_OUT
| + | Tesseract hat inzwischen die Version 3.x und es gibt einer grafische Oberfläche dazu: ''tesseract-gui''. |
− | cat "$TXT_FILE".txt
| |
| | | |
− | # delete graphic file after use
| + | Gefunden habe ich die Pakete u.a. hier: [http://download.opensuse.org/repositories/home:/Lazy_Kent/openSUSE_13.1/ openSUSE 13.1], [http://download.opensuse.org/repositories/home:/Lazy_Kent/openSUSE_12.3/ openSUSE 12.3] |
− | rm "$TIF_FILE"
| |
| | | |
− | # delete tesseract workfiles
| + | Diese Quelle in [[YaST]] einbinden diese Pakete installieren: |
− | rm "$TXT_FILE".txt
| |
| | | |
− | rm "$TXT_FILE".raw
| + | tesseract |
| + | tesseract-gui |
| | | |
− | rm "$TXT_FILE".map
| + | Und natürlich eine oder mehrere Sprachdatei, z.B. |
| | | |
− | #show result
| + | tersseract-traineddata-german |
− | kwrite "$FILE_OUT" &
| |
− | </pre>
| |
| | | |
− | ---- | + | 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. |
− | Viel Spaß ...
| |
| | | |
− | [[Scanner | Zurück zu Scanner]] | + | [[Kategorie:Office]] |
− | [[Category:Scanner]]
| |
− | [[Category:Scripte]]
| |
− | [[Category:Shellscripte]]
| |
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: openSUSE 13.1, openSUSE 12.3
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.