Für Linux gibt es eine ganze Reihe von Werkzeugen zum Herstellen von hochwertigen E-Books aus Dokumenten- beziehungsweise Buch-Scans. Weit verbreitet ist es, unter Linux Dokumente mit Sane und seinen Frontends einzulesen. Dank ImageMagick bringen Sie die Ergebnisse dann komfortabel im Batch-Betrieb in Form. Der Prozessor Unpaper leistet beim automatischen Nachbearbeiten und Veredeln speziell von Buchscans gut Dienste.

Anschließend bietet es sich an, die Bilder in DjVu oder einer PDF-Datei zu verpacken und mit Bookmarks auszustatten. Das geht komfortabel auf der Kommandozeile. Als Sahnehäubchen statten Sie die digitalen Bücher bei Bedarf aber noch zusätzlich mit einem OCR-Layer aus: Das erlaubt es, den Text zu durchsuchen. Auch das funktioniert unter Linux auf hohem Niveau mit Open-Source-Werkzeugen ohne weiteres. Die freie Software dazu arbeitet mittlerweile so professionell, dass sie dem Vergleich mit kommerziellen Produkten durchaus standhält.

Werkzeuge

Die Scanner-Suite Sane [1] erfreut sich größter Beliebtheit und gehört zum festen Bestandteil der meisten Distributionen. Mit dem Frontend Xsane [2] fertigen Sie ohne weiteres einen Buchscan aus einer Reihe von Einzelscans an. Für ein optimales Ergebnis beim OCR empfiehlt es sich bei Textscans generell, mit der Auflösung nicht unter 300 dpi zu gehen.

Graustufen-Scans – etwa im Format PGM ("Portable Greymap") – wandeln Sie hinterher in Schwarzweiß (PBM, "Portable Bitmap") um. Das Programm nummeriert die Scans automatisch durch, scannt bei Bedarf Ausschnitte und speichert diese auf Wunsch um 90 Grad gedreht ab. Zum Drehen, Zurechtschneiden und Bearbeiten eignet sich aber auch ImageMagick [3]: Die Programmsammlung bringt eine Vielzahl von Tools mit (im folgenden Beispiel convert), die Sie ganz einfach in eine Shell-Schleife einbinden:

$ for i in *pgm; do convert $i -rotate 90 -verbose ${i%pgm}pbm; done

Mit diesem Einzeiler drehen Sie jede PGM-Datei im Arbeitsverzeichnis um 90 Grad und konvertiert sie zugleich ins PBM-Format. Den dicken schwarzen Streifen in der Mitte der Scans, der durch den Bund des Buches zustande kommt, reduzieren Sie, indem Sie mit dem Parameter -white-threshold beim Konvertieren einen geringeren Weißschwellenwert einstellen. Im der Praxis haben sich Werte im Bereich von 25 bis 35 Prozent bewährt.

Nach dem Konvertieren bietet es sich an, die Scans mit dem Grafikbetrachter durchzusehen. Dazu verwenden Sie zum Beispiel Geeqie [4]. Dieser erlaubt es, ebenso wie viele andere Bildbetrachter, über einen Rechtsklick oder Shortcut ein Bild in Gimp [5] zu laden. Dort lassen sich dann grobe Schmierereien, handschriftliche Notizen oder ähnliches manuell entfernen.

Unpaper

Mit Unpaper [6] von Jens Gulden steht ein raffiniertes Nachbearbeitungswerkzeug für Dokumentenscans bereit. Die derzeit aktuelle Version 0.3 finden Sie beispielsweise in Debian 5.0 "Lenny", Ubuntu 9.10 "Karmic Koala", OpenSuse 11.2 oder Fedora ab Version 10. Das Tool beseitigt Schmutz und Flecken, die von der Vorlage in den Scan gerieten, sowie schwarze Streifen. Es teilt Doppelseiten auf Wunsch in Einzelseiten auf und rotiert, entzerrt und zentriert Textblöcke. Damit ist Unpaper geradezu prädestiniert zum Bearbeiten von Scans, die von unansehnlichen, hektisch gemachten Fotokopien stammen (Abbildung 1).

Abbildung 1: Durch den Bund eines Buches sowie ungenaue Auflage auf den Scanner entstehen schwarze Ränder im Scan. Hier hilft das Tool Unpaper weiter.

Um für alle Fälle gewappnet zu sein, beeinflussen Sie bei Bedarf die Funktionen von Unpaper durch eine ganze Reihe von Optionen in allen Feinheiten. Meistens reichen die Standardeinstellungen aber für ein gutes Ergebnis (Abbildung 2). Als echtes Konsolen-Tool beherrscht Unpaper natürlich das reihenweise Bearbeiten von Dateien. Um die Ausgangsdateien nicht zu überschreiben, lenken Sie die Ausgabe am besten in ein anderes Arbeitsverzeichnis um:

$ unpaper --layout double --output-pages 2 %04d.pbm out/%04d.pbm
Abbildung 2: Schon die Standardeinstellungen von Unpaper reichen oft für ein akzeptables Ergebnis aus.

In diesem Beispiel handelt es sich bei der Eingabe um einen doppelseitigen Buchscan. Als Ausgabe erhalten Sie zwei einzelne Seiten. Mit dem Formatzeichen %04d erfassen Sie Dateien mit einem Namen, der aus vier Ziffern besteht (0001.pgm). Falls nicht vorhanden, gilt es, das Unterverzeichnis ./out natürlich vorher anzulegen. Verschluckt das Tool beim Verarbeiten Textteile, setzen Sie den Mask-Scan (-ms) probeweise auf einen höheren Wert, wie zum Beispiel 175,175.

DjVu und PDF

Für die Manipulationen von DjVu-Dateien gibt es die im Paket Djvulibre [7] zusammengestellten Werkzeuge (djvulibre-bin unter Debian und Ubuntu, djvulibre unter OpenSuse und Fedora). Wieder nutzen Sie eine Shell-Schleife, um die bearbeiteten Buchscans durch den Schwarzweiß-Encoder cjb2 von Djvulibre zu schicken (Listing 1, Zeile 1). Danach packen Sie mit djvm den Container zusammen (Zeile 2)

Listing 1

$ for i in *pbm; do echo $i; cjb2 $i ${i%pbm}djvu; done
$ djvm -c myebook.djvu *djvu

Nun können Sie bereits das neue E-Book betrachten. Dazu benutzen Sie einen Betrachter wie Djview. Auf Debian-basierten Systemen und unter Fedora heißt das passende Paket djview4; bei OpenSuse suchen Sie djvulibre-djview4.

Nun ergänzen Sie bei Bedarf die DjVu-Datei um Bookmarks (im DjVu-Jargon: ein Outline). Dazu erstellen Sie im Textformat mit einem Editor eine entsprechende Outline-Datei, die sich am Beispiel aus Listing 2 orientiert. Diese packen Sie dann mit dem Tool djvused in den bereits erstellten DjVu-Container:

$ djvused myebook.djvu '-e myebook.outline' -s

Listing 2

(bookmarks
("Titel" "#1")
("Hauptteil" "#5"
  ("Kapitel 1" "#5")
  ("Kapitel 2" "#10")
  ("Kapitel 3" "#15")
  )
)

Einfacher geht es wirklich nicht mehr, und das Ergebnis spricht für sich (Abbildung 3).

Abbildung 3: Aufgrund der einfachen Syntax fügen Sie dem Scan beim Verpacken im DjVu-Container noch ein Inhaltsverzeichnis mit Bookmarks hinzu. So navigieren Sie ganz einfach im Text.

Um unter Linux PDF-Dateien aus den Scans zusammenzustellen, müssen Sie die PBM-Dateien zunächst in TIFFs umwandeln. Auch das erledigen Sie wieder mit einer kleinen Schleife (Listing 3, Zeile 1). Dann erstellen Sie aus den Einzelbildern zunächst ein Multipage-TIFF (Zeile 2) und wandeln dieses wandeln schließlich mit einem weiteren Befehl in ein PDF um (Zeile 3).

Listing 3

$ for i in *pbm; do convert $i -verbose ${i%pbm}tif; done
$ tiffcp *tif myebook.tif
$ tiff2pdf -o myebook.pdf myebook.tif

Die beiden dazu notwendigen Werkzeuge gehören zum Standardpaket libtiff-tools (libtiff3 unter OpenSuse, libtiff bei Fedora). Bei tiff2pdf haben Sie mit den Optionen -j und -z die Möglichkeit, die Kompressionsalgorithmen von JPEG oder ZIP zu verwenden.

OCR

Mit der OCR-Engine Tesseract [8] und dem Wrapper Ocropus [9] stellen Sie unter Linux hochwertige Buchscans mit einem OCR-Layer her. Zusätzlich zum Hauptprogramm von Tesseract (tesseract-ocr, tesseract auf OpenSuse und Fedora) müssen Sie die dazugehörigen Sprachpakete (tesseract-ocr-deu, tesseract-data-deu unter OpenSuse, tesseract-langpack auf Fedora) einrichten. Der Paketmanager zeigt beim Installieren wie immer entsprechende Abhängigkeiten und Vorschläge an.

Grundsätzlich ist es möglich, ausschließlich Tesseract für die Textscans zu verwenden. Um aber eine Layoutanalyse der Scans zu erhalten, bietet es sich an, die Engine über den Wrapper Ocropus anzusprechen (0.3.1 auf Debian Squeeze und Ubuntu "Lucid Lynx", 0.2 auf Ubuntu "Karmic Koala", noch nicht enthalten in OpenSuse und Fedora).

Auch Ocropus eignet sich für den Einsatz in Skripten. Dazu verwenden Sie den Aufruf ocroscript, wobei Sie dem Programm für optimale Ergebnisse die entsprechende Sprachdatei von Tesseract mitgeben:

$ for i in *pbm; do echo $i; ocroscript recognize --tesslanguage=deu --charboxes *pbm > ${i%pbm}hocr; done

Sowohl Ocropus als auch Tesseract verstehen sich auf Scans in Graustufen und Bilder in den Dateien. Als Ausgabe erhalten Sie OCR-Dateien im Format HOCR [10], einem auf XHTML basierenden Textformat. Dieses bearbeiten Sie gegebenenfalls mit einem Texteditor. Nun gilt es die HOCR-Datei als OCR-Layer in das E-Books zu integrieren.

Bei E-Books auf PDF-Basis fügen Sie den OCR-Layer aus den mit Ocropus gewonnenen HOCR-Metadaten mit dem Tool hocr2pdf aus der ExactImage-Suite [11] an (Debian "Squeeze" und Ubuntu "Karmic"). Dafür wandeln Sie die PBM-Dateien nach dem OCR-Prozess zunächst wieder in TIFFs um. Anschließend kombinieren Sie dann die Daten mit den entsprechenden HOCR-Dateien in Einzel-PDFs:

$ for i in *tif; do hocr2pdf -i $i -o ${i%tif}pdf < ${i%tif}hocr; done

Allerdings gibt es hier noch Schwierigkeiten mit den Layoutdaten: Das Highlighting erscheint versetzt. Das ist allerdings bereits aufgefallen [12]. Die erzeugten einzelnen PDFs fassen Sie schließlich mit Pdftk [13] zu einem Container zusammen:

$ pdftk *pdf cat output myebook.pdf

Für E-Books im Format DjVu gibt es das Helferlein Ocrodjvu von Jakub Wilk [14] (Debian "Squeeze" und Ubuntu "Lucid"). Ocrodjvu übernimmt das Steuern von Ocropus und vollzieht automatisch den gesamten Prozess der Textextraktion und das Wiedereinfügen in das bereits fertige E-Book auf DjVu-Basis, wobei Sie anstelle des Teams Tesseract/Ocropus alternativ auch Cuneiform (siehe Kasten "Open-Source-OCR") einsetzen dürfen.

Das ganze funktioniert bisher noch nicht mit Graustufenscans. Es gibt aber entsprechende Pläne. Dem Paket Ocrodjvu liegt außerdem der Konverter Hocr2djvu bei, mit dem Sie HOCR-Dateien in das Metadatenformat von DjVu umwandeln. Dieses fügen Sie mit Djvused wie bei PDF in die Einzeldateien ein, bevor sie mit Djvm alles in einen Container packen.

Die aktuellen OCR-Engines werfen bei optimalen Bedingungen wie sauberen Scans und ausreichender Auflösung insgesamt einen ziemlich brauchbaren Text aus. Für ein perfektes Finish ist es natürlich prinzipiell möglich, die mit Ocropus oder Tesseract gewonnenen Daten von Hand mit dem Texteditor auf Restfehler durchzusehen und gegebenenfalls nachzubearbeiten. Dabei handelt es sich allerdings um ein sehr zeitaufwändiges Verfahren.

Sinnvoll ist hier, eine Rechtschreibprüfung für die Endkontrolle einzusetzen. GNU Aspell [15] (aktuell: Version 0.6.60) bietet die Möglichkeit, über einen Filter alle XHTML-Tags bei der Rechtschreibkontrolle auszuschließen. Für das Durchkontrollieren der gesamten HOCR-Dateien in einem Verzeichnis starten Sie auch Aspell in einer Schleife:

$ for i in *hocr; do aspell --lang=de --mode=html -c $i; done

Das setzt natürlich voraus, dass Sie das richtige Sprachpaket von Aspell installiert und angegeben haben.

Open-Source-OCR

Es gibt zur Zeit vier frei verfügbare OCR-Engines: Cuneiform vom Hersteller Cognitive Technologie in Russland (aktuell in Version 0.9), GOCR von Jörg Schulenburg (0.48), Ocrad als Teil des GNU-Projektes (0.19), und Tesseract. Bei Cuneiform und Tesseract liegen im Unterschied zu den beiden anderen Programmen Erkennungsdaten für verschiedene Sprachen bei, was die Genauigkeit steigert.

Tesseract (aktuell in Version 2.04) stammt ursprünglich von Hewlett-Packard. Derzeit entwickelt Google die Software unter der Apache-Lizenz 2.0 weiter. Es handelt sich dabei um eine leistungsfähige OCR-Engine, die bei Google Books zum Einsatz kommt. Auch Tesseract ist bisher eine reine Engine ohne statistisches Sprachmodell oder Layoutanalyse. Letztere – und auch zum Beispiel das Erkennen von Chinesisch – sind jedoch für das nächste Major Release angekündigt.

Um den OCR-Prozess mit Layoutanalyse und Sprachmodellen zu vervollständigen, entwickeln Mitarbeiter beim Deutschen Forschungszentrum für Künstliche Intelligenz (DFKI) in Kaiserslautern den Wrapper Ocropus für den Einsatz mit Tesseract (letztes Stable: 0.4.3).

Frontends

Es gibt mittlerweile Frontends, die die einzelnen hier beschriebenen Prozeduren beim Erstellen eines E-Books bis hin zum fertigen DjVu oder PDF übernehmen. Gscan2pdf [16] vereint als starke GUI-Applikation alle Komponenten von den Scanprogrammen über Unpaper bis hin zum OCR unter einer Haube (Version 0.9.29 auf Debian Stable, Ubuntu "Karmic" und OpenSuse 11.2). Seit der neuesten Version Gscan2pdf 0.9.30 (Debian "Squeeze" und Fedora 12) gibt es auch einen Port zu Ocropus.

Eine andere, wenn auch nicht ganz so luxuriöse Applikation ist Scantailor [17]. Für größere Projekte inklusive Archivierung lohnt es sich, ein Blick auf die freien großen E-Dokumenten-Server wie Archivistabox [18] oder OpenDias [19] zu werfen. Diese eignen sich allerdings eher für große Dokumentenaufkommen. Nichts desto trotz gibt es hier teilweise sehr enge Entwicklungen zu der allerneuesten freien OCR-Software, die auch in diesem Workshop zum Einsatz kam [20]

Glossar

DjVu

Als "Déjà-vu" gesprochen. Ein von AT&T entwickeltes Containerformat für Rastergrafiken. Die potenzielle PDF-Alternative bietet DjVu einen effektiveren und schnelleren Komprimierungsalgorithmus. Es gibt Betrachter für alle gängigen Plattformen.

OCR

Optical Character Recognition, optische Zeichenerkennung. Verfahren zum automatischen Erkennen von Text in digitalen Bildern.

Layoutanalyse

Beim OCR-Prozess erfasst die Software zusätzlich zum Text auch Positionsdaten. Das ermöglicht es, bei der Suche im E-Book das gesuchte Wort hervorzuheben.

HOCR

Auf XHTML basierendes Datenformat für Texterkennungsergebnisse, das unter anderem das Layout des erkannten Textes beinhaltet.

Infos

[1] Sane: http://www.sane-project.org

[2] Xsane: Kristian Kißling, "Aber bitte mit XSane!", LinuxUser 10/2005, S. 42, http://www.linux-user.de/ausgabe/2005/10/042-xsane/

[3] ImageMagick: Heike Jurzik, "Einfach zauberhaft", LinuxUser 10/2005, S. 52, http://www.linux-user.de/ausgabe/2005/10/052-imagemagick/

[4] Geeqie: http://geeqie.sourceforge.net

[5] Gimp: http://www.gimp.org

[6] Unpaper: http://unpaper.berlios.de

[7] DjVu: http://djvu.sourceforge.net

[8] Tesseract: http://code.google.com/p/tesseract-ocr/

[9] Ocropus: http://code.google.com/p/ocropus/

[10] HOCR: http://de.wikipedia.org/wiki/HOCR_(Standard)

[11] ExactImage: http://www.exactcode.de/site/open_source/exactimage/

[12] Highlighting-Bug (5. Kommentar): http://tinyurl.com/yhao2jk

[13] Pdftk: http://www.accesspdf.com/pdftk/

[14] Ocrodjvu: http://jwilk.net/software/ocrodjvu.html

[15] Aspell: http://aspell.net

[16] Gscan2pdf: http://gscan2pdf.sourceforge.net

[17] Scantailor: http://scantailor.sourceforge.net

[18] Archivistabox: http://www.archivista.ch/index.pl/archivistabox4

[19] OpenDias: http://essentialcollections.co.uk/openDIAS/

[20] U. Pfister, "Open Source Texterkennung unter Linux", http://www.archivista.ch/de/media/ocr2.pdf

Der Autor

Daniel Stender promoviert in klassischer Indologie und benutzt seit Jahren ausschließlich Debian auf dem Desktop. Er interessiert sich für den Einsatz von Open-Source-Applikationen in der Sanskrit-Philologie. Sie finden seinen Blog unter http://www.danielstender.com/granthinam.

Dieses Heft als PDF kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare