[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Packprogramme: Archive entpacken] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] [:Rechte: Rechte für Dateien und Ordner ändern] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(DjVu/djvu-logo.png, 80, left)]] Farbige mehrlagige [:DjVu:]-Dateien lassen sich mit Open-Source-Programmen nicht ohne Umwege erstellen, da der Quellcode für die [:DjVu#Grenzen-der-Open-Source-Implementierung:Segmentierung] nicht freigegeben ist. Eine vollwertige Alternative ist aber mit dem Programm [https://jwilk.net/software/didjvu didjvu] {en} von Jakub Wilk gegeben. Es greift auf das Open-Source-Projekt [https://gamera.informatik.hsnr.de/ Gamera] {en} zurück, um eine Aufsplittung in Vorder- und Hintergrundebene zu realisieren. Mit dieser Zerlegung ist es auch für "Privat"-Anwender einfach möglich, eine 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. = Installation = Das Programm liegt nicht mehr in den Paketquellen vor, und muss daher manuell installiert werden; es benötigt ein Python-2.7-Installation. [[Vorlage(Fremd, Software)]] Die aktuelle Version ist 0.9 (November 2020), das Programm kann aus [https://jwilk.net/software/didjvu Quellcode] {en} erstellt werden. Dazu wird das '''tar.gz'''-Archiv heruntergeladen, entpackt[2], und installiert. Die aktuelle Entwicklerversion kann von der [github:jwilk/didjvu:github-Seite] {en} des Entwicklers bezogen werden. Dazu wird der Code mit dem Befehl[5] {{{#!vorlage Befehl git clone https://github.com/jwilk/didjvu.git }}} heruntergeladen (siehe auch [:Git:]). Benötigt werden {{{#!vorlage Paketinstallation python-gamera, universe python-pil git docbook-xsl, universe, um die manpage zu erstellen minidjvu }}} Ein einfaches Paket kann im Downloadverzeichnis mit dem Befehl {{{#!vorlage Befehl sudo checkinstall }}} installiert werden; das Programm selbst ist bereits erstellt, so dass ein `configure`- und `make`-Aufruf nicht nötig sind. == Installation unter 20.04 == Unter [:20.04:Focal Fossa] ist das Paket '''python-gamera''' nicht mehr in den Quellen; es kann aber auf das Paket aus [:18.04:Ubuntu 18.04] zurückgegriffen werden. = Verwendung = 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 bitonale "foreground mask" des [:DjVu:]-Formats aus der Vorlage zu erstellen. Die allgemeine Syntax auf der Kommandozeile lautet {{{#!vorlage Befehl didjvu {encode|bundle|separate} -o AUSGABEDATEI.djvu [OPTIONEN] EINGABEDATEI }}} didjvu kann alle Bildformaten verarbeiten, die von der [https://www.pythonware.com/library/pil/handbook/#appendixes Python Imaging Library] {en} unterstützt werden. Die Erstellung lässt sich durch vielfältige Parameter steuern, die für die Varianten unterschiedlich einsetzbar sind. == Funktionsweise == Die Hauptfunktion, die didjvu von den existierende [sourceforge2:djvu:DjVuLibre-Programmen] {en} 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 [:DjVu#Vordergrund: `foreground mask`], die bisher nur mit proprietären Versionen möglich war. Im Prinzip handelt es sich dabei um ein [wikipedia:Schwellwertverfahren:], mit dem eine Schwarz-Weiß-Version 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 `--loss-level` (`--clean` etc.), 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 Vorlagen, die mit einem Textverarbeitungsverfahren "lesbar" gemacht werden sollen, von großem Vorteil. Die verwendbaren Methoden werden in der [https://gamera.informatik.hsnr.de/docs/gamera-docs/binarization.html Gamera-Dokumentation] {en} kurz vorgestellt. Mit der `separate`-Variante lassen sich einfach Probeversionen für die verschiedenen Verfahren erstellen, bei der die bitonale Ebene dann als '''pbm'''-Datei ausgegeben wird. Diese 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 ([wikipedia:Chrominanz:], Subsample-Angaben), für große Archivierungsprojekte lassen sich auch bestimmte Namensgebungs- bzw. Nummerierungsvorlagen über die `--output/--pageid-template`-Option verwenden. == Optionen == ||<-2 rowclass="titel"> didjvu || || Option || Funktion || ||<-2 rowclass="trennzeile"> ''verwendbare Optionen für alle Varianten'' || || `EINGABE-DATEI [EINGABE-DATEI1 ...]` || Eingabedatei(en)|| || `-o DATEI`, `--output DATEI`|| Ausgabe-Dateiname || || `--loss-level N` || Stärke der verlustbehafteten Kompression, Werte von 0 - 200 || || `--lossless` || verlustlose Kompression, Standardeinstellung, entspricht `--loss-level=0`. || || `--clean` || verlustbehaftete Kompression: entfernt einzeln stehende Pixel, entspricht `--loss-level=1`.|| || `--lossy `|| verlustbehaftete Kompression: fasst Muster mit nur kleinen Unterschieden zusammen. entspricht `--loss-level=100`|| || `-m`, `--method `|| Binarisations-Methode, verwendbar sind `{bernsen,tsai,white_rohrer,gatos,abutaleb,brink,otsu,djvu,sauvola,niblack,shading-subtraction}`, Standard `djvu`; Verwendbarkeit ggf. von der eingesetzten Gamera-Version abhängig || || `-v`, `--verbose` || ausführliche Ausgabe || || `-q`, `--quiet` || Ausgabe im Terminal wird unterdrückt || || `-h`, `--help`|| Hilfe || ||<-2 rowclass="trennzeile"> ''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 [:DjVu#chunks-und-slices:"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 [:DjVu#chunks-und-slices:"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`|| ||<-2 rowclass="trennzeile"> ''verwendbare Optionen für `encode` und `separate`'' || || `--output-template TEMPLATE`|| Benennungsschema für die Ausgabedatei, siehe Manpage || ||<-2 rowclass="trennzeile"> ''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` || = Alternativen = Eine Alternative stellt Djvu Solo 3.1 dar. Es ist Freeware und läuft unter wine. Eine Open-Source-Alternative gibt es nicht. Theoretisch 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 [http://djvu.sourceforge.net/doc/man/c44.html c44] {en} und [http://djvu.sourceforge.net/doc/man/cjb2.html cbj2] {en} liefern entweder keine Segmentierung oder nur eine Schwarz-Weiß-Ebene; [:minidjvu:] ist ebenfalls nur eine "Wrapper", der auf cbj2 und [http://djvu.sourceforge.net/doc/man/djvumake.html djvumake] {en} zurückgreift und mit dem nur Schwarz-Weiß-Vorlagen verarbeitet werden können. = Programme = didjvu kommt standardmäßig in [:xsane2djvu:] zur Encodierung zum Einsatz, auch mit [:bscand:] und [:pct-scanner-script:] kann der Encoder verwendet werden. = Links = * [:DjVu:] {Übersicht} - Übersichtsartikel * [https://jwilk.net/software/didjvu didjvu] {en} * [wikipedia_en:Otsu_Method:Beispiel] der Binarisations-Variante "Otsu" #tag: Grafik, Bildung, Büro, Kommunikation, djvu, Python