Rorschachs Tagebuch

Scannen und OCR unter Linux März 4, 2011

Filed under: Uncategorized — Rorschach @ 10:20

Als ich dies das letzte mal vor ein paar Jahren ausprobiert hatte bin ich kläglich gescheitert. gorc war einfach mies und Abby musste her.

Nun die Tage musste ich mal wieder einen etwas längeren Text (ca. 50 Seiten) einscannen und in ein LaTeX-Dokument hieven und habe es mal wieder mit Linux probiert und siehe da, es gibt neue Tools und mit denen funktioniert es wunderbar!

Scannen
Zuerst musste das ganze mal eingescanned werden, was ich mit scanimage gemacht habe. Auflösung von 300dpi sollte ausreichen und Graustufen-Modus:

$ scanimage -d epson2:libusb:001:004 --mode Gray --resolution 300dpi -x 186 -y 250 > 33.pnm

OCR Vorbereitung
Zur Vorbereitung der OCR habe ich Tools von ImageMagick und Scan Tailor benutzt.

Zuerst einmal waren die Seiten verdreht was mit dem Befehl:

$ mogrify -rotate 90 *.pnm

schnell behoben war (Scan Tailor kann das auch aber das hab ich erst danach gemerkt..). Damit ich die Seiten mit Scan Tailor bearbeiten konnte mussten sie ins tif-Format, was dieser Oneliner erledigt (ZSH!!):

$ for i in *.pnm; do convert $i ${i:r}.tif;done

Nun kam Scan Tailor dran. Damit konnte ich problemlos die Seiten richtig ausrichten, unnötiges an den Rändern wegschneiden, Kontrast verbessern, usw.. Wirklich ein Hammertool um Bilder auf OCR vorzubereiten!

OCR
So und hier kam das Tool tesseract zum Einsatz, welches mich gnadenlos überzeugt hat! Die Texterkennung war fantastisch, bei über 99%. Probleme gab es nur an Stellen wo der Text Unterstreichungen hatte, was zum Glück nur sehr selten war ansonsten wäre das Ergebnis sicher schlechter gewesen, denn an diesen Stellen hat sich tesseract die Zähne ausgebissen.

Das Konvertieren hat auch hier wieder ein ZSH-Oneliner erledigt:

$ for i in *.tif;do tesseract $i ${i:r} -l deu;done

Hier sollte man aufpassen, dass man als Input die von Scan Tailor verbesserten *.tif Dateien nimmt und nicht die anfänglich erzeugten 😉

So der Durchlauf von tesseract dauert ein bischen und wenn er fertig ist, dann kann man das alles in ein Dokument zusammenbasteln:

$ cat *.txt > dokument.txt

und ist fast fertig!

LaTeX

Man hat jetzt nämlich immernoch das Seitenlayout des gescannten Dokumentes, also die Zeilen sind so lange wie in dem ursprünglichen Dokument und natürlich sind die Wörter auch so getrennt.. Das ist natürlich uncool wenn man das ganze in ein LaTeX-Dokument verwandeln will. Um das zu beheben habe ich ein kleines Skript geschrieben. Das setzt Absätze im LaTeX-Dokument, wo im Originaldokument welche sind und löst das Problem mit den Zeilenenden.

Danach einbischen Nachbearbeitung mit TeXMaker und das wars.

Advertisements