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).

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...