{"id":140,"date":"2017-11-24T10:29:19","date_gmt":"2017-11-24T09:29:19","guid":{"rendered":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/?p=140"},"modified":"2017-11-24T20:35:28","modified_gmt":"2017-11-24T19:35:28","slug":"preprocessing-mit-scantailor-2","status":"publish","type":"post","link":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/2017\/11\/preprocessing-mit-scantailor-2\/","title":{"rendered":"Preprocessing mit Scantailor"},"content":{"rendered":"<p style=\"text-align: left\">Im Folgenden Artikel erkl\u00e4re ich die Vorbereitung (<a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/2017\/11\/preprocessing-mit-scantailor\/\">Preprocessing<\/a>) eines PDF-Dokuments f\u00fcr die Texterkennung mit OCRopus. Dabei behandle ich die Konvertierung in die ben\u00f6tigten Formate (pdf2tif, tif2png) und die Bearbeitung mit der Software Scantailor. Das Ziel ist von den unbearbeiteten PDFs zu binarisierten und &#8222;barrierefreien&#8220; PNGs zu kommen, denn OCRopus ben\u00f6tigt schwarz\/wei\u00df- oder Graustufen-binarisierte Eingangsbilder im PNG-Format. Als Beispieldokument dient der Artikel &#8222;Von Metzgern vnd Fleischhauwern&#8220;<sup><a href=\"#footnote_0_140\" id=\"identifier_0_140\" class=\"footnote-link footnote-identifier-link\" title=\"Garzoni, Tommaso (1659): Piazza Universale: Das ist: Allgemeiner Schauplatz, Franckfurt am M&auml;yn: Matthaei Merians Sel. Erben\/ Polich \/ Kuchenbecker, Online-Ausgabe: Halle, Saale : Universit&auml;ts- und Landesbibliothek Sachsen-Anhalt, 2012, URN: urn:nbn:de:gbv:3:1-360625, S. 176-178.\">1<\/a><\/sup> aus dem <a href=\"http:\/\/digitale.bibliothek.uni-halle.de\/urn\/urn:nbn:de:gbv:3:1-360625\">Allgemeinen Schauplatz<\/a> von Tommaso Garzoni. Dies ist eine dreiseitige PDF &#8222;artikel.pdf&#8220; in Farbe, 600 DPI, jeweils zwei Spalten; Herauskommen sollen sechs schwarz\/wei\u00df-binarisierte PNGs ohne St\u00f6relemente (keine Bilder, Initiale oder \u00c4hnliches).<\/p>\n<p><strong>Vorbereitung<\/strong><\/p>\n<p>Die Arbeitsumgebung ist Ubuntu 17.04, die ben\u00f6tigten Programm sind: <em>pdftk<\/em>, <em>scantailor<\/em> und <em>imagemagick<\/em>. Zu Beginn also die Console \u00f6ffnen und schauen, ob sie installiert sind.<\/p>\n<pre>sudo apt-get install pdftk scantailor imagemagick<\/pre>\n<p>Jetzt erstellt man einen Arbeitsordner (hier der Ordner &#8222;ocr&#8220; im Home-Verzeichnis) und wechsle hinein:<\/p>\n<pre>mkdir ocr\r\ncd ocr<\/pre>\n<p>Hierhin kopiert man die PDF.<\/p>\n<figure id=\"attachment_143\" aria-describedby=\"caption-attachment-143\" style=\"width: 530px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"wp-image-143 size-large\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/metzger-1024x386.jpg\" alt=\"Von Metzgern vnd Fleischhauwern\" width=\"530\" height=\"200\" srcset=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/metzger-1024x386.jpg 1024w, https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/metzger-300x113.jpg 300w, https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/metzger-768x289.jpg 768w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><figcaption id=\"caption-attachment-143\" class=\"wp-caption-text\">Die drei Seiten des nativen PDFs des Artikels<\/figcaption><\/figure>\n<p><strong>Konvertierung PDF2TIF<\/strong><\/p>\n<p>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 <em>burst<\/em> des Programms <em>pdftk<\/em> auf:<\/p>\n<pre>pdftk artikel.pdf burst<\/pre>\n<p>Man erh\u00e4lt drei Dateien pg_0001.pdf, pg_0002.pdf,\u00a0pg_0003.pdf.<\/p>\n<p>Die ursprungs-PDF kann man l\u00f6schen:<\/p>\n<pre>rm artikel.pdf<\/pre>\n<p>die restlichen PDFs kann man in TIFs umwandeln mit einer Schleife und dem <em>convert<\/em>-Befehl:<\/p>\n<pre>for p in *.pdf; do convert -density 600 -trim \"$p\" -quality 100 \"$p\".tif; done\r\n<\/pre>\n<p>Die Dateien haben jetzt die Endung .pdf.tif, wen das st\u00f6rt kann sie umbenennen mit:<\/p>\n<pre>rename 's\/\\.pdf.tif$\/.tif\/' \/*.pdf.tif \r\n<\/pre>\n<p><strong>Scantailor<\/strong><\/p>\n<p>Nun \u00f6ffnet man Scantailor und importiert die TIFs. Dazu navigiert man in den Ordner mit den TIFs (hier ~\/ocr), l\u00e4d die Dateien in Scantailor, korrigiert die DPI-Zahl (hier war die Ausgangsaufl\u00f6sung 600 DPI) und importiert die Bilder.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-140-1\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/import.mp4?_=1\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/import.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/import.mp4<\/a><\/video><\/div>\n<p>Nach dem Import trennt man die Spalten auf. Bei Bildern, die aus der blo\u00dfen Seite bestehen (ohne \u00dcberst\u00e4nde, schwarze R\u00e4nder etc.), funktioniert die automatische Erkennung der Spalten recht gut, das ist hier nicht der Fall. Im Fenster &#8222;Seiten aufteilen&#8220;, l\u00e4sst man das Seitenlayout manuell doppelspaltig f\u00fcr alle Seiten erkennen.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-2\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/aufteilen.mp4?_=2\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/aufteilen.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/aufteilen.mp4<\/a><\/video><\/div>\n<p>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 &#8222;Play&#8220;-Button im linken Frame. Scantailor richtet nun die Seiten so aus, das der Text m\u00f6glichst gerade ist.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-3\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausrichten.mp4?_=3\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausrichten.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausrichten.mp4<\/a><\/video><\/div>\n<p>Im n\u00e4chsten Schritt w\u00e4hlt man den Inhalt aus, der interessiert. In meinem Fall ist es nur der Artikel &#8222;Von den Metzgern vnd Fleischhauwern&#8220;, keine Seitenzahlen, keine Kopf- oder Fu\u00dfnoten, kein Folgeartikel. Seiten, die nicht relevant sind l\u00f6sche ich heraus. Mit dem Mausrad kann man hinein und hinaus zoomen, manchmal setzt Scantailor die Erkennungsfelder minimal zu eng an den Text.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-4\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/Inhalt_ausw\u00e4hlen.mp4?_=4\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/Inhalt_ausw\u00e4hlen.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/Inhalt_ausw\u00e4hlen.mp4<\/a><\/video><\/div>\n<p>Stege lassen bei den Output-Bildern einen (wei\u00dfen) Rand stehen. Will man mit Graustufen arbeiten, w\u00fcrde ich die Stege deaktivieren, da sie zu Irritationen bei der Zeilen und Zeichenerkennung f\u00fchren k\u00f6nnen. Da wir mit schwarz\/wei\u00df-Binarisierung arbeiten ist das egal. Bei den Stegen deaktiviere ich den Haken bei &#8222;Gr\u00f6\u00dfe an andere Seiten anpassen&#8220; um meine Bilder nicht k\u00fcnstlich gr\u00f6\u00dfer oder kleiner zu zerren. Auf alle Bilder anwenden.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-5\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/Stege.mp4?_=5\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/Stege.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/Stege.mp4<\/a><\/video><\/div>\n<p>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\u00fcr die DPI-Zahl an (wir lassen 600DPI), Auswahlm\u00f6glichkeiten f\u00fcr verschiedene Farbmethoden (schwarz\/wei\u00df ist unsere Wahl) und zeigt einen Regler f\u00fcr den Schwellenwert (<em>Threshold<\/em>) f\u00fcr die Pixelsetzung. Ein niedriger Wert macht die Schrift d\u00fcnner und entfernt St\u00f6rungen\/ Flecken, ein h\u00f6herer Wert macht die Schrift dicker, l\u00e4sst aber auch die Ger\u00e4uschrate (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\u00e4ume verlieren. Oftmals kann ein Schwellenwert von +15 oder sogar +30 nicht schaden, wenn die Buchstaben dadurch klarer werden und nicht ineinanderflie\u00dfen, bzw. St\u00f6relemente \u00fcber mehrere Zeilen erzeugen, die dann sp\u00e4ter die Zeilensegmentierung verwirren.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-6\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe1.mp4?_=6\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe1.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe1.mp4<\/a><\/video><\/div>\n<p>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\u00e4usche und Flecken, was aber bei der Benutzung von Ocropus weniger von N\u00f6ten ist, sogar eher kontraproduktiv, da schnell mal ein i-Punkt abhanden kommt.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-7\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe2.mp4?_=7\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe2.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe2.mp4<\/a><\/video><\/div>\n<p>Von gro\u00dfer Bedeutung ist das Entfernen von Bildern, dazu bietet Scantailor den Reiter &#8222;Bereiche f\u00fcllen&#8220; an. Damit die f\u00fclle ich das Initial und das Bild. Dann lasse ich alle Bearbeitungsschritte durchlaufen und erhalte meine Output-TIFs im Unterordner &#8222;out&#8220;.<\/p>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-8\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe3.mp4?_=8\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe3.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/ausgabe3.mp4<\/a><\/video><\/div>\n<p>Auf diese Weise erh\u00e4lt man Eingangsbilder, die die Texterkennung erheblich verbessern. Jetzt noch in PNGs umwandeln und sie sind f\u00fcr die Segmentierung mit ocropus-gpageseg bereit. Daf\u00fcr nutze ich mogrify (ebenfalls in Imagemagick enthalten).<\/p>\n<pre>cd out\r\nmogrify -format png .\/*.tif\r\n\r\n<\/pre>\n<div style=\"width: 530px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-140-9\" width=\"530\" height=\"288\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/final.mp4?_=9\" \/><a href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/final.mp4\">https:\/\/blogs.urz.uni-halle.de\/strickdings\/files\/2017\/11\/final.mp4<\/a><\/video><\/div>\n<ol class=\"footnotes\"><li id=\"footnote_0_140\" class=\"footnote\">Garzoni, Tommaso (1659): Piazza Universale: Das ist: Allgemeiner Schauplatz, Franckfurt am M\u00e4yn: Matthaei Merians Sel. Erben\/ Polich \/ Kuchenbecker, Online-Ausgabe: Halle, Saale : Universit\u00e4ts- und Landesbibliothek Sachsen-Anhalt, 2012, URN: urn:nbn:de:gbv:3:1-360625, S. 176-178. [<a href=\"#identifier_0_140\" class=\"footnote-link footnote-back-link\">&#8617;<\/a>]<\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>Im Folgenden Artikel erkl\u00e4re ich die Vorbereitung (Preprocessing) eines PDF-Dokuments f\u00fcr die Texterkennung mit OCRopus. Dabei behandle ich die Konvertierung in die ben\u00f6tigten Formate (pdf2tif, tif2png) und die Bearbeitung mit der Software Scantailor. Das Ziel ist von den unbearbeiteten PDFs <a class=\"more-link\" href=\"https:\/\/blogs.urz.uni-halle.de\/strickdings\/2017\/11\/preprocessing-mit-scantailor-2\/\">weiterlesen  <span class=\"screen-reader-text\">  Preprocessing mit Scantailor<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":241,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/posts\/140"}],"collection":[{"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/users\/241"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":10,"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":173,"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/posts\/140\/revisions\/173"}],"wp:attachment":[{"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.urz.uni-halle.de\/strickdings\/wp-json\/wp\/v2\/tags?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}