Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
Farbige mehrlagige DjVu-Dateien lassen sich mit Open-Source-Programmen nicht ohne Umwege erstellen, da der Quellcode für die Segmentierung nicht freigegeben ist. Eine vollwertige Alternative ist aber mit dem Programm didjvu von Jakub Wilk gegeben. Es greift auf das Open-Source-Projekt Gamera
zurück, um eine Aufsplittung in Vorder- und Hintergrundebene zu realisieren. Mit dieser Zerlegung ist es auch für "Privat"-Anwender einfach möglich, die bitonale Ebene einer Bildvorlage zu extrahieren, und eine mehrlagige DjVu-Datei zu erstellen; diese kann dann z.B. mit dem Programm ocrodjvu auch mit einer Textebene versehen werden.
Seit Ubuntu 11.10 Oneiric Ocelot liegt das Programm (derzeit in Version 0.2.1) in den Paketquellen vor, es muss das Paket
didjvu
mit apturl
Paketliste zum Kopieren:
sudo apt-get install didjvu
sudo aptitude install didjvu
installiert[1] werden.
Voraussetzung ist die Installation des Frameworks Gamera, und der grundlegenden DjVu-Programme.
gamera-gui (universe)
python-gamera (univers)
djvulibre-bin (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install gamera-gui python-gamera djvulibre-bin
sudo aptitude install gamera-gui python-gamera djvulibre-bin
Das Programm selbst ist in den Paketquellen noch nicht vorhanden, und muss daher aus dem Quellcode erstellt werden Dazu wird das tar.gz-Archiv entpackt[2], kompiliert[3] und installiert, dazu muss das Installationsskript setup.py ausführbar[5] gemacht werden, Verfahren siehe bei hg-Version.
Um didjvu z.B. mit pct-scanner-script verwenden zu können, muss ggf. die aktuelle Entwicklerversion verwendet werden. Dazu wird der Code mit dem Befehl[4]
hg clone http://bitbucket.org/jwilk/didjvu didjvu
heruntergeladen (siehe auch Mercurial), dafür wird das Paket
mercurial
mit apturl
Paketliste zum Kopieren:
sudo apt-get install mercurial
sudo aptitude install mercurial
benötigt. Um die Manpage mit zu erstellen, muss zunächst im Verzeichnis didjvu-x.x.x/doc der Befehl make
ausgeführt werden, dazu ist das Paket
docbook-xsl
mit apturl
Paketliste zum Kopieren:
sudo apt-get install docbook-xsl
sudo aptitude install docbook-xsl
nötig. Ein einfaches Paket kann im Downloadverzeichnis mit dem Befehl
sudo checkinstall python setup.py install
erstellt und installiert werden (siehe auch Installationsskripte). Wenn dabei ein Fehlermeldung
File "setup.py", line 4 SyntaxError: Non-ASCII character '\xc2' in file setup.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
erscheint, reicht es, in der Datei setup.py in einem Editor in Zeile 4 das ©
zu entfernen.
didjvu ist ein reines Kommandozeilen-Werkzeug; dabei sind drei Varianten möglich: didjvu encode
zu Encodierung einseitiger Dateien, didjvu bundle
zum Erstellung mehrseitiger Dateien und didjvu separate
, um eine sog. bitonale "foreground mask" des DjVu-Formats aus der Vorlage zu erstellen.
Die allgemeine Syntax auf der Kommandozeile lautet
didjvu {encode|bundle|separate} -o Ausgabedatei [Optionen] Eingabedatei
Die Meldung
/usr/lib/pymodules/python2.6/gamera/util.py:30: DeprecationWarning: the sets module is deprecated
kann ignoriert werden, sie wird von einer veralteten gamera-Version verursacht, die in den Ubuntu-Paketquellen noch verwendet wird.
didjvu kann alle Bildformaten verarbeiten, die von Python Imaging Library unterstützt werden. Die Erstellung lässt sich durch vielfältige Parameter steuern, die für die Versionen unterschiedlich einsetzbar sind.
Die Hauptfunktion, die didjvu von den existierende DjVuLibre-Programmen absetzt und den entscheidenden Schritt zur automatischen Erstellung vollwertiger DjVu-Dateien mit Open-Source-Verfahren darstellt, ist die Segmentierung der Vorlage und die Erstellung der bitonalen
foreground mask
, die bisher nur mit den proprietären Versionen von Celartem möglich war. Im Prinzip handelt es sich dabei um ein Schwellwertverfahren, mit dem eine Schwarz-Weiß-Variante der Vorlage erstellt und gleich bearbeitet wird. So kann weitestgehend auf einen Einsatz von unpaper oder ähnlichen "Säuberungsverfahren" verzichtet werden, da einerseits über die Optionen
--clean
, andererseits über die Verwendbarkeit unterschiedlicher Binarisations-Verfahren (Option --method
) gezielt Einfluss auf die Qualität dieser bitonalen Ebene genommen werden kann. Die Möglichkeiten der unterschiedlichen Verfahren sind gerade bei "historischen" Vorlagen (alten Drucken, minderwertigem Papier, fleckigen Vorlagen etc.) oder farbigen Bildern, die mit einem Textverarbeitungsverfahren "lesbar" gemacht werden sollen, von großem Vorteil. Die verwendbaren Methoden werden in der Gamera-Dokumentation kurz vorgestellt. Mit der
separate
-Version lassen sich einfach Probeversionen für die verschiedenen Verfahren erstellen, bei der die bitonale Ebene dann als pbm-Datei ausgegeben wird. Dies können dann auch individuell bearbeitet und als Masken über die mask/masks
-Option wieder mit den Original-Vorlagen in DjVu-Dokumente zusammengeführt werden.
Durch weitere Optionen lässt sich die Kompressionsrate auch für die anderen Ebenen stark verbessern (Chrominanz, Subsample-Angaben), für große Archivierungsprojekte lassen sich auch bestimmte Namensgebungs- bzw. Nummerierungsvorlagen über die --output/--pageid-template
-Option verwenden.
didjvu | |
Option | Funktion |
verwendbare Optionen für alle Versionen | |
<input-image> [<input-image> ...] | Eingabedatei(en) |
-o DATEI , --output DATEI | Ausgabe-Dateiname |
--loss-level N | Stärke der verlustbehafteten Kompression, Werte von 0 - 200 |
--lossless | verlustlose Kompression, Standardeinstellung |
--clean | verlustbehaftete Kompression: entfernt einzeln stehende Pixel |
--lossy | verlustbehaftete Kompression: fasst Muster mit nur kleinen Unterschieden zusammen |
-m , --method | Binarisations-Methode, verwendbar sind {bernsen,tsai,white_rohrer,gatos,abutaleb,otsu,djvu,sauvola,niblack} , Standard djvu |
-v , --verbose | "gesprächige" Ausgabe |
-q , --quiet | Ausgabe im Terminal wird unterdrückt |
-h , --help | Hilfe |
verwendbare Optionen für encode und bundle | |
--masks MASKE [MASKE ...] | verwendet vorher erstellte Masken (für bundle ) |
--mask MASKE | verwendet eine vorgefertigte Maske (für encode ) |
--fg-slices N | Anzahl der "slices" für den Vordergrund, Standard 100 |
--fg-crcb {normal,half,full,none} | Chrominanz-Encodierung des Vordergrunds, Standard full |
--fg-subsample N | Subsample-Rate für den Vordergrund, Werte von 1 - 12 , Standard 6 |
--bg-slices N+...+N | --bg-slices N,...,N | Anzahl der "slices" für jeden einzelnen Hintergrund-"chunk", Standard 74+10+6+3 |
--bg-crcb {normal,half,full,none} | Chrominanz-Encodierung des Hintergrunds, Standard normal |
--bg-subsample N | Subsample-Rate für den Hintergrund, Werte von 1 - 12 , Standard 3 |
-d N , --dpi N | Bildauflösung in dpi, Standard 300 , möglich sind Werte zwischen 72 und 6000 |
verwendbare Optionen für encode und separate | |
--output-template TEMPLATE | Benennungsschema für die Ausgabedatei, siehe Manpage |
verwendbare Optionen nur für bundle | |
--pageid-template TEMPLATE | Benennungsschema für die Seitennamen ("page identifiers"), siehe Manpage |
-p N , --pages-per-dict N | Anzahl der Seiten, die in einem Durchgang verarbeitet werden sollen, Standard 1 |
Eine echte Alternative besteht als Open-Source-Anwendung nicht; natürlich ließen sich "händisch" über Bildbearbeitungsprogramme (wie GIMP) bitonale Versionen von farbigen Vorlagen erstellen, die dann mit den DjVuLibre-Programmen auch als Multilayer-DjVu zusammengefasst werden könnten. Der Aufwand ist aber immens, und für größere Projekte kaum praktikabel. Die DjVuLibre-Encoder c44 und cbj2
liefern entweder keine Segmentierung oder nur eine Schwarz-Weiß-Ebene, minidjvu ist ebenfalls nur eine "Wrapper" für cbj2 und djvumake
, mit dem nur Schwarz-Weiß-Vorlagen verarbeitet werden können.
didjvu kommt standardmäßig in xsane2djvu zur Encodierung zum Einsatz, auch mit pct-scanner-script kann der Encoder verwendet werden.