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 06/2015: Shell-Tools

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

Grammatikprüfung in LibreOffice nachrüsten
Grammatikprüfung in LibreOffice nachrüsten
Tim Schürmann, 24.04.2015 19:36, 0 Kommentare

LibreOffice kommt zwar mit einer deutschen Rechtschreibprüfung und einem guten Thesaurus, eine Grammatikprüfung fehlt jedoch. In ältere 32-Bit-Versionen ...

Aktuelle Fragen

Zu wenig Speicherplatz auf /boot unter MATE
Patrick Obenauer, 25.05.2015 14:28, 1 Antworten
Hallo zusammen, ich habe Ubuntu 14.10 mit MATE 1.8.2 (3.16-37) mit Standardeinstellungen aufgese...
Konsole / Terminal in Linux Mint 17.1 deutsch
Dirk Resag, 09.05.2015 23:39, 12 Antworten
Hallo an die Community, ich habe vor kurzem ein älteres Notebook, Amilo A1650G, 1GB Arbeitsspe...
Admin Probleme mit Q4os
Thomas Weiss, 30.03.2015 20:27, 6 Antworten
Hallo Leute, ich habe zwei Fragen zu Q4os. Die Installation auf meinem Dell Latitude D600 verl...
eeepc 1005HA externer sound Ausgang geht nicht
Dieter Drewanz, 18.03.2015 15:00, 1 Antworten
Hallo LC, nach dem Update () funktioniert unter KDE der externe Soundausgang an der Klinkenbuc...
AceCad DigiMemo A 402
Dr. Ulrich Andree, 15.03.2015 17:38, 2 Antworten
Moin zusammen, ich habe mir den elektronischen Notizblock "AceCad DigiMemo A 402" zugelegt und m...