AA_sign_hworks_sxc_1380699.jpg

© Hworks, sxc.hu

Mühsam entziffert

Texte scannen und mit OCR nachbearbeiten

21.06.2013
Mit einem kleinen Skript verarbeiten Sie große Mengen an Textscans zu PDF-Dateien, die Sie dank OCR mit typischen Unix-Werkzeugen im Volltext durchsuchen.

Wer gedruckte Schrift in digitaler Form richtig nutzen möchte, braucht Sie in einer Form, die ein Durchsuchen erlaubt. Ein reines Umwandeln in Bitmaps macht das nicht möglich. Darf das Layout der Informationen gegenüber dem Original abweichen, bietet sich ein Speichern als ASCII-Text an.

Möchten Sie das Original erhalten, ist das PDF die erste Wahl, das am Anfang oder Ende die per Texterkennung (OCR) gewonnene Information zusätzlich beinhaltet. Diese Datei durchsuchen Sie unter Linux dann mit gängigen Werkzeugen wie Grep.

Hinter vielen GUI-Anwendungen zum Scannen und zur Texterkennung arbeiten Werkzeuge im Hintergrund. Deren Möglichkeiten stehen alternativ direkt als Shell-Kommando bereit. Auf diese Weise schaffen Sie bei Bedarf eigene Tools, die genau Ihren Anforderungen entsprechen. Die Grundlagen bilden Scanimage und Cuneiform oder Tesseract.

Vom Papier zur Bild

Installieren Sie die Pakete libsane und sane-utils [1]. Es ist nicht zwingend notwendig, den Sane-Daemon zu starten. Im normalen Betrieb reicht der Aufruf des Programmes in einem Terminal. Bei der Installation über den Paketmanager legt das Setup einen Benutzer sane oder scanner in /etc/passwd zusammen mit einer entsprechenden Gruppe an. Fügen Sie in /etc/group in der zutreffenden Zeile jene Benutzer hinzu, die auf den Scanner zugreifen dürfen. Das sieht dann ähnlich dem folgenden Beispiel aus:

scanner:x:115:saned,harald,monika,kopierer

Die Anleitung von Sane gibt umfangreiche Hinweise darauf, wie und ob die Software einen Scanner unterstützt. In manchen Fällen setzt das voraus, dass Sie eine Datei aus dem Treiber für Windows extrahieren und auf dem Linux-Rechner ablegen. Viele neuere Scanner unterstützt die Software Sane jedoch direkt. Eine gute Beschreibung zum Installieren eines Scanners finden Sie im Web [2].

Suchen Sie nach dem angeschlossenen Scanner mit dem Aufruf sane-find-scanner (Abbildung 1). Das Programm schickt, mit Ausnahme bei den Stapeljobs, die Daten auf die Standardausgabe. In diesen Fällen lenken Sie die Ausgabe selbst in eine Datei um.

Abbildung 1: Suchen und Finden angeschlossener Scanner mit sane-find-scanner und scanimage -L.

Nach der Konfiguration testen Sie mit scanimage -T deren Funktionsfähigkeit: Beim Scanner sollte sich jetzt der Schlitten mit der Lesezeile in Bewegung setzen und im Terminal sollte eine entsprechende Ausgabe zu sehen sein (Abbildung 2).

Abbildung 2: War die Konfiguration korrekt, erzeugt der Testlauf eine entsprechende Ausgabe.

Hat bis zu dieser Stelle alles funktioniert, ist damit das Einbinden der Hardware abgeschlossen. Die wichtigsten Optionen von Scanimage finden Sie in der Tabelle "Optimale Konfiguration". Verfügen Sie über einen Scanner mit automatischen Dokumenteneinzug und Wendeeinheit (ADF), lohnt sich ein Blick auf das Tool Scanadf.

Optimale Konfiguration

Option Aktion
-L Anzeige angeschlossener Scanner
-A Anzeige aller Optionen, passend zum Modell
-d Gerätedatei Angabe des Scanners
--mode Modus Auswahl Schwarz/Weiß (lineart), Grau (gray) oder Farbe (color)
--resolution DPI Auflösung in DPI, mögliche Werte siehe Ausgabe von -A
--depth Wert Angabe Farbtiefe: 1 (Schwarz/Weiß)), sonst 8 oder 16
--brightness Wert Helligkeit (-100% bis +100%
--batch Stapelbetrieb
--batch-count Zahl Begrenzt den Stapelbetrieb
--batch-start ZAHL Startwert für Seite
--batch-increment ZAHL Schrittweite für Seitenzahl, 2 für doppelseitige Dokumente
--batch-prompt Warten auf Eingabe beim Stapelbetrieb
--format=FORMAT Format der Ausgabedatei (PNM/TIFF)
-T Testlauf
-p Fortschrittsanzeige

Das Shell-Skript

Die Schritte beim Scannen von Dokumenten eignen sich hervoragend, um ein Skript daraus zu basteln. Listing 1 arbeitet die folgende Punkte ab: Einscannen der Dokumente, Ablage im TIFF-Format sowie Auslesen des Texts aus den TIFF-Dateien (OCR). Anschließend ruft das Skript einen Editor zur manuellen Korrektur des Ergebnisses auf.

Stimmt alles, bleibt nur noch das Konvertieren der TIFF-Datei ins PDF-Format. Zu guter Letzt erzeugt das Skript eine PDF-Datei aus der Datei mit dem Ergebnis aus dem OCR-Lauf und fügt die beiden PDF-Dateien zusammen. Als Ergebnis erhalten Sie eine PDF-Datei, die es erlaubt, diese mit Pdfgrep oder im Betrachter zu durchsuchen.

Listing 1

#! /bin/sh
SCANNER="genesys:libusb:002:002"
TXTLANG="deu"
EDITOR="kwrite"
echo -n "Projektname: ";
read PROJEKT
if [ -z $PROJEKT ];
then
  exit
fi
scanimage -d $SCANNER --batch --batch-start 10000 --batch-prompt --resolution 600 --mode lineart --format=tiff
for TIF in out*.tif; do
 echo "Reading $TIF"
 TXT=$TIF.tif.txt
 tesseract $TIF $TXT -l $TXTLANG
done
cat *.txt >> $PROJEKT.txt
$EDITOR $PROJEKT.txt
PAGES=$(ls -l out*.tif | wc -l)
for TIF in out*.tif; do
 echo "Converting $TIF"
 PDF=$TIF.tif.pdf
 if [ "$TIF" = "out10000.tif" ]; then
  convert $TIF vorlage.pdf
 else
  convert $TIF $PDF
  pdftk A=vorlage.pdf B=$PDF CAT A B output vorlage-1.pdf
  mv vorlage-1.pdf vorlage.pdf
 fi
done
recode UTF8..ISO-8859-15 $PROJEKT.txt
a2ps -o $PROJEKT.ps $PROJEKT.txt
ps2pdf14 $PROJEKT.ps $PROJEKT-text.pdf
pdftk A=vorlage.pdf B=$PROJEKT-text.pdf CAT A B output $PROJEKT.pdf
okular $PROJEKT.pdf
echo -n "Hilfsdaten löschen ? (j) ";
read loesch
if [ "$loesch" = "j" ]; then
 rm $projekt.ps
 rm out*.tif
 rm out*.pdf
 rm out*.txt
 rm vorlage.pdf
 rm $projekt-text.pdf
 rm *~
fi

Zeile 12 mit dem Aufruf von Scanimage zeigt das Einbinden des Stapelbetriebes. Die Zahl der zu scannenden Seiten bleibt dabei offen. Sie fordern mit [Eingabe] jede Seite einzeln an; für den Abbruch des Vorgangs nutzen Sie [Strg]+[D]. Im Beispiel war dies nach zwei Seiten der Fall. Die Ziffer im Dateinamen beginnt mit 10000. Auf diese Weise umgehen Sie Fehler beim Sortieren der Dateien, die sich nachfolgend auf das Erzeugen der Textdateien auswirken.

Ferner erstellen Sie die Scans mit einer Auflösung von 600 DPI. Das bietet sich an, wenn die Vorlage kleine Schrift enthält. Die Scans sollen in schwarz-weiß erfolgen. Die Bilddateien legt das Skript im TIF-Format ab (Abbildung 3).

Abbildung 3: Die Ausgabe der Scans erfolgt im Beispiel im TIF-Format.

Manche ältere Modelle arbeiten bei einer Auflösung über 600 DPI besonders langsam. Solche Geräte lesen die Seite oft stückweise ein und bleiben dann stehen, bis die Daten auf dem Rechner abgelegt sind. Erst danach bewegt sich der Schlitten wieder ein Stück weiter. Das verführt zu der Annahme, dass Scanimage hängt und nur noch der Ausweg bleibt, den Prozess mit Gewalt zu beenden.

Mit der Fortschrittsanzeige (-p) haben Sie den Verlauf im Blick. Erst wenn sich die Anzeige (Abbildung 4) über mehrere Minuten nicht verändert, sollten Sie das Programm abbrechen. Des Weiteren war im Test die Angabe des Gerätes (-d Gerät) notwendig, weil sonst durch das Umlenken der Ausgabe die Fehlermeldung über nicht gefundene Cups-Geräte in der Zieldatei gelandet wäre.

Abbildung 4: Die Fortschrittsanzeige hilft bei älteren Scanner-Modellen, dem Verlauf der Arbeit von Scanimage zu folgen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Richtig digitalisieren
    Einfach nur Bücher einscannen war gestern. Mit dem richtigen Werkzeugkasten erstellen Sie heute E-Books inklusive Volltextsuche und Inhaltsverzeichnis weitgehend automatisch.
  • Texterkennung mit Tesseract
    Schicke Frontends wollen beim Umgang mit der OCR-Engine Tesseract helfen. Wie gut das gelingt, zeigt ein Test.
  • Dokumente mit gscan2pdf scannen
    Um schnell ein Foto einzuscannen, reichen Programme wie XSane völlig aus. Ein mehrseitiges Dokument als PDF-Datei speichern können Sie damit aber nicht. Hier hift gscan2pdf.
  • Eingescannte Texte automatisch erkennen
    Professionelle Texterkennung war bislang teuren kommerziellen Programmen unter Windows und Mac OS X vorbehalten. Mit dem freien Cuneiform und dessen grafischen Frontends YAGF und Cuneiform-Qt holt Linux den Rückstand auf.
  • Paperwork im Kampf gegen wachsende Aktenberge
    Der Traum ist so alt wie der PC auf dem Schreibtisch: Im papierlosen Büro sollen Akten nur noch digital im Rechner vorliegen. Für die Verwaltung des papierlosen Büros wurde Paperwork entwickelt.
Kommentare

Infos zur Publikation

title_2014_10

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...