Im Folgenden Artikel erkläre ich die Vorbereitung (Preprocessing) eines PDF-Dokuments für die Texterkennung mit OCRopus. Dabei behandle ich die Konvertierung in die benötigten Formate (pdf2tif, tif2png) und die Bearbeitung mit der Software Scantailor. Das Ziel ist von den unbearbeiteten PDFs zu binarisierten und „barrierefreien“ PNGs zu kommen, denn OCRopus benötigt schwarz/weiß- oder Graustufen-binarisierte Eingangsbilder im PNG-Format. Als Beispieldokument dient der Artikel „Von Metzgern vnd Fleischhauwern“1 aus dem Allgemeinen Schauplatz von Tommaso Garzoni. Dies ist eine dreiseitige PDF „artikel.pdf“ in Farbe, 600 DPI, jeweils zwei Spalten; Herauskommen sollen sechs schwarz/weiß-binarisierte PNGs ohne Störelemente (keine Bilder, Initiale oder Ähnliches).
Vorbereitung
Die Arbeitsumgebung ist Ubuntu 17.04, die benötigten Programm sind: pdftk, scantailor und imagemagick. Zu Beginn also die Console öffnen und schauen, ob sie installiert sind.
sudo apt-get install pdftk scantailor imagemagick
Jetzt erstellt man einen Arbeitsordner (hier der Ordner „ocr“ im Home-Verzeichnis) und wechsle hinein:
mkdir ocr cd ocr
Hierhin kopiert man die PDF.
Konvertierung PDF2TIF
Im ersten Schritt transformiert man die PDF in das verlustfreie TIF-Format, das Scantailor lesen kann (bei Platzmangel kann es auch gleich PNG/JPG sein). Dazu spaltet die PDF mit dem Befehl burst des Programms pdftk auf:
pdftk artikel.pdf burst
Man erhält drei Dateien pg_0001.pdf, pg_0002.pdf, pg_0003.pdf.
Die ursprungs-PDF kann man löschen:
rm artikel.pdf
die restlichen PDFs kann man in TIFs umwandeln mit einer Schleife und dem convert-Befehl:
for p in *.pdf; do convert -density 600 -trim "$p" -quality 100 "$p".tif; done
Die Dateien haben jetzt die Endung .pdf.tif, wen das stört kann sie umbenennen mit:
rename 's/\.pdf.tif$/.tif/' /*.pdf.tif
Scantailor
Nun öffnet man Scantailor und importiert die TIFs. Dazu navigiert man in den Ordner mit den TIFs (hier ~/ocr), läd die Dateien in Scantailor, korrigiert die DPI-Zahl (hier war die Ausgangsauflösung 600 DPI) und importiert die Bilder.
Nach dem Import trennt man die Spalten auf. Bei Bildern, die aus der bloßen Seite bestehen (ohne Überstände, schwarze Ränder etc.), funktioniert die automatische Erkennung der Spalten recht gut, das ist hier nicht der Fall. Im Fenster „Seiten aufteilen“, lässt man das Seitenlayout manuell doppelspaltig für alle Seiten erkennen.
Danach sollte man die Seiten automatisch drehen lassen. Dazu klickt man die erste Seite im rechen Frame an (damit alle Seiten von Anfang an bearbeitet werden) und auf den „Play“-Button im linken Frame. Scantailor richtet nun die Seiten so aus, das der Text möglichst gerade ist.
Im nächsten Schritt wählt man den Inhalt aus, der interessiert. In meinem Fall ist es nur der Artikel „Von den Metzgern vnd Fleischhauwern“, keine Seitenzahlen, keine Kopf- oder Fußnoten, kein Folgeartikel. Seiten, die nicht relevant sind lösche ich heraus. Mit dem Mausrad kann man hinein und hinaus zoomen, manchmal setzt Scantailor die Erkennungsfelder minimal zu eng an den Text.
Stege lassen bei den Output-Bildern einen (weißen) Rand stehen. Will man mit Graustufen arbeiten, würde ich die Stege deaktivieren, da sie zu Irritationen bei der Zeilen und Zeichenerkennung führen können. Da wir mit schwarz/weiß-Binarisierung arbeiten ist das egal. Bei den Stegen deaktiviere ich den Haken bei „Größe an andere Seiten anpassen“ um meine Bilder nicht künstlich größer oder kleiner zu zerren. Auf alle Bilder anwenden.
Erst die Ausgabe erzeugt Output-Bilder, auf den vorhergehenden Seiten sind bis jetzt nur Einstellungen vorgenommen wurden. Die Ausgabe bietet in den ersten drei Schritten Einstellungen für die DPI-Zahl an (wir lassen 600DPI), Auswahlmöglichkeiten für verschiedene Farbmethoden (schwarz/weiß ist unsere Wahl) und zeigt einen Regler für den Schwellenwert (Threshold) für die Pixelsetzung. Ein niedriger Wert macht die Schrift dünner und entfernt Störungen/ Flecken, ein höherer Wert macht die Schrift dicker, lässt aber auch die Geräuschrate (Noise) ansteigen. Als Faustregel gilt, dass Buchstaben wie m oder n nicht in einzelne Bestandteile zerfallen, aber Buchstaben wie e, o oder a auch nicht ihre Hohlräume verlieren. Oftmals kann ein Schwellenwert von +15 oder sogar +30 nicht schaden, wenn die Buchstaben dadurch klarer werden und nicht ineinanderfließen, bzw. Störelemente über mehrere Zeilen erzeugen, die dann später die Zeilensegmentierung verwirren.
Die Einstellungen des Dewarping und Despeckling nimmt man am besten innerhalb der Reiter am rechten Rand vor; Dewarping korrigiert Verzerrungen durch beispielsweise die Falzung; Despeckling entfernt kleinere Geräusche und Flecken, was aber bei der Benutzung von Ocropus weniger von Nöten ist, sogar eher kontraproduktiv, da schnell mal ein i-Punkt abhanden kommt.
Von großer Bedeutung ist das Entfernen von Bildern, dazu bietet Scantailor den Reiter „Bereiche füllen“ an. Damit die fülle ich das Initial und das Bild. Dann lasse ich alle Bearbeitungsschritte durchlaufen und erhalte meine Output-TIFs im Unterordner „out“.
Auf diese Weise erhält man Eingangsbilder, die die Texterkennung erheblich verbessern. Jetzt noch in PNGs umwandeln und sie sind für die Segmentierung mit ocropus-gpageseg bereit. Dafür nutze ich mogrify (ebenfalls in Imagemagick enthalten).
cd out mogrify -format png ./*.tif
- Garzoni, Tommaso (1659): Piazza Universale: Das ist: Allgemeiner Schauplatz, Franckfurt am Mäyn: Matthaei Merians Sel. Erben/ Polich / Kuchenbecker, Online-Ausgabe: Halle, Saale : Universitäts- und Landesbibliothek Sachsen-Anhalt, 2012, URN: urn:nbn:de:gbv:3:1-360625, S. 176-178. [↩]
Pingback: Ocropy-Infrastruktur: Ordnersystem, Batchkonvertierung und Dateienumbenennung – Digital Humanities selbst gestrickt
Sehr detalliert und in jedem Schritt unmissverständlich. Danke, Robert!
rich! rich! rich!
Click!
VEGUS168 พบกับสุดยอดความบันเทิง
the best
Click!
RICH
Thanks for sharing
สมัครสมาชิก เว กั ส 168
Greats
Click!
vegus168
This site really good
vegus168
Most people, including me, agree with you, but you shouldn’t forget that people who don’t. We need to persuade them. For a better world!
good blogs
This site really good
สล็อต168
Your writing is too much to be posted simply on blogs. I think more people should read your writing. I’m going to write about your writing and blogging on my blog. I hope you can come to my blog and check out more people’s opinions. 메이저안전놀이터
I did so many searches on this topic. As a result, this article is one of the top three articles I want to recommend to people. I have been in this field for years, so I know how accurate this article contains. If you are curious about the contents, please visit my blog anytime. 메이저토토Check out this
Great Blog
vegus168 member
Great Blog
vegus888
„It’s a fantastic achievement from a lot of people to make this happen and it’s great to have it working,“ he said. „The next step is the new adventure, it’s brilliant!“
For each patch of sky the WHT is pointed at, astronomers identify the positions of a thousand stars. Weave’s nimble robotic fingers then carefully place a fibre-optic – a light-transmitting tube – precisely on each location on a plate, pointing towards its corresponding star.
One of my friend and I are really happy to finally find this article.토토사이트 This has all we need, and We would like to say „Many thanks“ to this writer.
Great Blog
vegus168 member
www vegus168
Hi! I visited your blog for the first time today! I read everything you posted because your writing was so interesting. My team is working on a project that is similar to your writing. Your blog was a great help to us. Thank you. 사설토토사이트