Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
djvu2pdf ist ein kleines Kommandozeilenprogramm, um aus DjVu-Dateien PDFs zu erstellen. Es verwendet djvudump und ddjvu aus dem djvu-libre-Projekt zum Auslesen und Konvertieren der DjVu-Daten, sowie ggf. Ghostscript zum Zusammensetzen einzelner PDF-Dateien. Optional werden in der modifizierten Version djvu2hocr (aus dem Programm ocrodjvu) sowie hocr2pdf (aus ExactImage) zur Übertragung von Textebenen in das PDF verwendet.
Voraussetzung zur Nutzung sind die Pakete[1]
djvulibre-bin
ghostscript
ocrodjvu (optional zur Übertragung von Texterkennung)
exactimage (optional zur Übertragung von Texterkennung)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install djvulibre-bin ghostscript ocrodjvu exactimage
sudo aptitude install djvulibre-bin ghostscript ocrodjvu exactimage
Das Programm selbst ist nicht in den Quellen vorhanden, es lässt sich aber ein .deb-Paket von der Projektseite beziehen und installieren[2]. Das Programm kann von dort auch als tar.gz-Archiv[3] bezogen werden. Daraus dann die djvu2pdf-Datei für systemweite Nutzung z.B. nach /usr/local/bin kopieren [4]
Fremdsoftware kann das System gefährden.
djvu2pdf ist ein reines Kommandozeilenwerkzeug, das Skript wird im Terminal[5] mit folgender Syntax aufgerufen
djvu2pdf [OPTION(EN)] DATEINAME(N).djvu
djvu2pdf konvertiert die angegebene DjVu-Datei in eine entsprechende DATEINAME.pdf. Es gibt nur sehr wenige Optionen.
djvu2pdf-Optionen | |
Option | Funktion |
-h | Hilfe |
-v | Versionsnummer |
-s | Zeigt Statusmeldungen zur Verarbeitung (ein wenig langsamer, da jede einzelne Seite ausgelesen getrennt und das Dokument dann wieder zusammengesetzt wird) |
-c | Im Terminal keine Steuersequenzen verwenden, um den Cursor zu bewegen (nur sinnvoll in Kombination mit -s ) |
Bei eine Konvertierung gehen existierende Textebenen der DjVu-Dateien normalerweise verloren, da sie extra extrahiert, und wieder in die PDF-Dateien integriert werden müssten. Dieses Verhalten lässt sich mit einem modifizierten Skript aber in einem Durchlauf erledigen. Zu Einsatz kommt dazu das Programm djvu2hocr aus ocrodjvu, mit dem jeweils eine hOCR-Datei aus den einzelnen Seiten des DjVu-Dokuments extrahiert wird. ddjvu konvertiert dann statt in eine PDF-Datei in das .tiff-Format, aus diesen Daten werden dann mit hocr2pdf PDF-Dateien mit durchsuchbaren Textebenen erstellt. Da das momentan nur für einzelne Seiten möglich ist, müssen diese dann wieder zu Gesamt-PDF aneinandergehängt werden.
Für die Modifikation wird die Datei djvu2pdf in einem Editor[6] geöffnet. Die Zeile 174
ddjvu -format=pdf -page $COUNT "$FILENAME" "$TEMP/$FILEBASE.${ZEROS}$COUNT.pdf" 2> /dev/null
wird durch Folgendes ersetzt:
## extract text and form a hOCR document djvu2hocr --title="" -p=$COUNT "$FILENAME" > "$TEMP/$FILEBASE.${ZEROS}$COUNT.hocr" 2> /dev/null ddjvu -format=tiff -page $COUNT "$FILENAME" "$TEMP/$FILEBASE.${ZEROS}$COUNT.tiff" 2> /dev/null ## combine tiff and hocr files hocr2pdf -i "$TEMP/$FILEBASE.${ZEROS}$COUNT.tiff" -o "$TEMP/$FILEBASE.${ZEROS}$COUNT.pdf" < "$TEMP/$FILEBASE.${ZEROS}$COUNT.hocr" 2> /dev/null
Das Skript dann wieder unter djvu2pdf abspeichern, für die systemweite Verwendung in /usr/local/bin (Rootrechte[4] erforderlich). Jetzt wird mit Verwendung der -s
-Option automatisch die vorhandene Textebene aus dem DjVu in das PDF-Dokument mit übernommen.
Gegenüber der Version ohne Texterkennungsrettung sind die entstehenden Dateien allgemein wesentlich kleiner, was vermutlich aus "effektiveren" PDF-Erstellung von ExactImage gegenüber ddjvu resultiert. Andere Bild-Format sind für die Verarbeitung möglich (z.B. für schwarzweiße Vorlagen pbm
als Format im ddjvu-Aufruf), die resultierende Dateigröße kann dadurch noch etwas weiter reduziert werden.
Für schwierige Vorlagen (farbige Schrift, verschachtelter Aufbau) kann der Umweg über xsane2djvu und djvu2pdf eine sinnvolle Variante zu der direkten "Sandwich"-Methode zur PDF-Erstellung darstellen, da die Texterkennung von ocrodjvu bei solchen Vorlagen erfahrungsgemäß besser sind, und die Textlagen "passgenauer" ausfallen.
Die Erstellung der Textebene scheitert immer dann, wenn im Dokument "Wasserzeichen" im Hintergrund mit Schrift vorhanden sind, oder sich die "Bounding Boxes" der Wörter überlappen. Wenn die automatische Löschung der Temporärdateien deaktiviert wird (im Skript die Zeilen rm -rf "$TEMP"/* >/dev/null 2>&1
und rm -rf "$TEMP" >/dev/null 2>&1
auskommentieren und/oder stattdessen etwas wie echo "removing disabled"
einfügen), kann man sich die entstandenen hOCR-Dateien aus dem Verzeichnis /tmp/djvu2pdf.nnnnn in einem Editor genauer anschauen, und die überdimensionierte Box des ersten Text-Eintrages entfernen. Die Kombination via hocr2pdf muss dann allerdings ebenfalls "händisch" erfolgen, natürlich auch das Zusammenführen der PDF-Dateien.
Die Verwendung der djvu2hocr-Optinonen --css
führt ebenfalls dazu, dass die dort gemachte Angabe von hocr2pdf fehlinterprertiert und als übergroße Textangabe die restliche Passung verschiebt; ähnliches gilt, wenn die --title
-Option Text beinhaltet, oder (wenn nicht gesetzt) der Standardtitel "DjVu hidden text layer" verwendet wird. Daher muss die Option zwar gesetzt werden, aber leer bleiben (in den Änderungen so umgesetzt)!
Eine Korrektur der OCR-Ergebnisse ist nicht vorgesehen. Eine - wenn auch beschwerliche - Möglichkeit besteht aber darin, die .hocr-Dateien in einem Editor[6] zu bearbeiten; allerdings lassen sich die eigentlichen Textstrings nur mühsam finden.
Ein Programm zur direkte Umwandlung von DjVu-Dateien in PDFs mit Textlagen ist momentan nicht vorhanden. Erstellt werden können PDF-Dateien mit Textlage z.B. durch pdfsandwich (Konvertierung bestehender PDFs), oder xsane2sandwich und gscan2pdf direkt aus gescannten Vorlagen.
In gscan2pdf oder DjView lassen sich DjVu-Dateien öffnen und dann als PDF abspeichern. Die Dateien müssen dann aber erneut mit einer Textebene versehen werden, weil die existierende Textlage nicht übernommen wird. Die Erkennung bezieht sich dann auch nicht auf die bitonale Lage der DjVu-Datei (das beherrscht zumindest gscan2pdf nicht) sondern muss aus dem extrahierten Bild komplett neu erstellt werden (und das führt ggf. zu Qualitätseinbußen bei schwierigen Vorlagen, siehe oben). Bei guten schwarzweißen DjVu-Vorlagen kann das Ergebnis aber sogar besser (und kleiner) sein, die Textpassung ist bei gscan2pdf erfahrungsgemäß sehr gut.
Möglich ist auch ein anderes zweischrittiges Vorgehen: Umwandeln der DjVu-Datei in ein PDF ohne Textebene, diese dann mit OCRmyPDF in ein durchsuchbares PDF/A-Format überführen. Die Textebenenpassung ist hervorragend, die Dateigrößen ebenfalls akzeptabel.
Mit Paperwork können indirekt ebenfalls gute hOCR-Vorlagen erstellt werden, ein direkter Export als PDF mit Textlage ist aber bisher noch nicht möglich.
Den umgekehrten Weg gehen pdf2djvu und DjVuDigital, wobei nur ersteres ein Übertragung vorhandenen Metadaten aus PDFs, wie Text, Inhaltsverzeichnis etc., in das DjVu-Dokument ermöglicht.
DjVu Übersichtsartikel
Onlinekonverter , mit dem kostenlose Konvertierungen durchgeführt werden können, bei denen auch die Textlage erhalten bleibt
Diese Revision wurde am 2. September 2016 19:43 von Heinrich_Schwietering erstellt.