Schlagwort-Archive: tesseract

Bücher scannen

Da das Thema möglicherweise demnächst mal wieder relevant wird, schreibe ich mir mal eine kleine Anleitung hier hin, damit ich meine Notizen nicht in irgendeinem Datenberg zusammen raten muss.

Ich habe vor ein paar Monaten einen größeren Stapel  Bücher für den internen Gebrauch gescannt. Alles out of print Werke, die schon lange nicht mehr zu bekommen sind, die aber einer kleinen Gruppe als Grundlagenwerke bereit gestellt werden mussten. Da das Ganze nicht nach schlechten Internet-Raubkopien (mit aufgebogenem Buchrücken auf dem Scan) sondern einen gewissen Anspruch erfüllen sollte, habe ich tatsächlich je eins der Bücher zum Drucker gebracht, den Rücken abschneiden lassen und sie auf der Arbeit nach Feierabend durch den Einzelblatteinzug des Multifunktionsdruckers gejagt. Effektiv irgendwas um 2000 Seiten und 5 GB Bilddaten.

Ich haben von Vornherein darauf verzichtet, dem Scanner zu sagen, dass er da einfach ein PDF von machen soll. Schließlich wollte ich es „richtig“ machen und die Seiten in ansprechender Qualität abspeichern und zudem durchsuchbare PDF Dokumente haben, damit in Zukunft einfacher nach Stichworten gesucht werden kann. Am Ende saß ich vor der Mammutaufgabe, die ganzen Seiten durch die Texterkennung zu schicken und als PDFs zusammen zu packen.

Auf der Hardwareseite hatte ich einen Rechner mit Ubuntu-Linux. Wer also diese Anleitung auf einem anderen System mit einem anderen Betriebssystem nachspielen möchte, wird also ggf. etwas improvisieren müssen.

Installiert habe ich mir dafür die folgenden Pakete:

  • tesseract -> Ursprünglich von HP entwickelt, derzeit die wahrscheinlich beste verfügbare Open Source OCR Software. Erzeugt HTML-ähnliche Dateien, in denen nicht nur der Text, sondern auch die Position des Textes auf der verarbeiteten Seite gespeichert ist.
  • optimize2bw -> Macht aus dem Graustufenscan eine S/W-Grafik. Das macht sich bei 200- und mehrseitigen Büchern deutlich in der Datenmenge bemerktbar.
  • hocr2pdf -> Packt die oben erzeugten HTML-Daten mit einer beliebigen Grafik zusammen (hier natürlich die S/W-Version der Seite) zu einer PDF-Datei.
  • pdftk -> Packt eine Menge PDF-Dateien zu einer einzelnen Datei zusammen.

Der Workflow sieht dann auf der Shell wie folgt aus:

  • tesseract ./01/BUCH-0001.tif ./01/BUCH-0001 -l deu hocr
    • -l deu => Worterkennung für deutsche Sprachen
    • hocr => hOCR Datei erzeugen (HTML Variante)
  • optimize2bw -i ./01/BUCH-0001.tif -o ./01/BUCH-0001_opt.tif
  • hocr2pdf -i ./01/BUCH-0001_opt.tif -o s001.pdf < ./01/BUCH-0001.html

Das muss entweder für alle Seiten einzeln gemacht werden oder man findet jemanden, der einem erklärt, wie man Bash-Skripte erstellt. Ich habe die erste Variante gewählt, wäre aber besser beraten gewesen, einen Teil der so verschwendeten Zeit zu nutzen, um mit die Skripte selber zu erarbeiten. Abschließend, wenn alle Dateien erzeugt wurden:

  • pdftk *.pdf output FINALES_BUCH.pdf

Als weiteren Optimierungsschritt (oder anstelle von optimize2bw) hatte ich überlegt, die Seiten mit dem Befehl

  • convert -geometry 24% ./01/BUCH-0001.tif ./01/BUCH-0001_72.tif

auf 72 dpi runterzurechnen. Aber da der erkannte Text nur als unsichtbarer Layer in die Datei eingefügt wird, ist der zu lesende Text immer noch der ursprüngliche Scan. Und es hat sich gezeigt, dass es dann einfach keinen Spaß macht, am Monitor zu lesen. Zu verschwommen. Aber ich könnte mir vorstellen, wenn man Bilderbücher scannen möchte, wäre das durchaus ein adäquater Ersatz für optimize2bw. convert ist dann ein Teil von image magick, das muss dan ggf. noch installiert werden.