[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] [:Packprogramme: Archive entpacken] [:Rechte: Rechte für Dateien und Ordner ändern] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [https://jwilk.net/software/ocrodjvu ocrodjvu] {en} ist eine Kommandozeilen-Werkzeug zum Erstellen einer versteckten Textlage für [:DjVu:]-Daten, das auf [http://djvu.sourceforge.net/ DjVuLibre] {en} fußt. Dazu können die Programme [:tesseract-ocr:], [:Cuneiform-Linux:] [:GOCR:] und/oder [:Ocrad:] für die eigentliche Texterkennung genutzt werden. Der Wrapper, verfasst in [:Python:], wurde u.a. für das polnische [http://poliqarp.wbl.klf.uw.edu.pl/slownik-polszczyzny-xvi-wieku/ poliqarp-Projekt] {en} eingesetzt. ocrodjvu benötigt eine Python-2.7-Installation. = Installation = Bis einschließlich [:18.04:Ubuntu 18.04] ist das Programm in den Quellen, installiert[1] werden müssen die Pakete {{{#!vorlage Paketinstallation ocrodjvu, universe cuneiform, optional tesseract-ocr, sowie die gewünschten [:tesseract-ocr#Installation:Sprachpakete], optional gocr, optional ocrad, optional }}} == Manuelle Installation == ocrodjvu wird aktiv weiterentwickelt und die Versionen in den Quellen sind ggf. veraltet oder nicht mehr vorhanden, daher ist es sinnvoll, sich die aktuelle Version (0.12, Stand November 2020) aus dem Quellcode selbst zu erstellen[2]. Dazu wird der Code von [github:jwilk/ocrodjvu/releases:GitHub] {dl} als '''.tar.xz''' heruntergeladen und das Archiv entpackt[3]. Ein einfaches Paket lässt sich z.B. mit dem Befehl [5] {{{#!vorlage Befehl sudo checkinstall }}} erstellen und installieren, ein `configure` und `make`-Aufruf sind nicht nötig, die enthaltenen Programme sind bereits kompiliert. Eine manpage wird damit allerdings nicht erstellt. Außerdem müssen zur Nutzung die Pakete {{{#!vorlage Paketinstallation python-subprocess32 python-djvu python-lxml }}} installiert sein. == Installation unter 20.04 == Da das Paket unter [:20.04:Ubuntu 20.04] nicht mehr in den Quellen vorhanden ist, muss es manuell installiert werden (s.o.). Das benötigte Paket [packages:python-djvu:] ist allerdings ebenfalls nicht mehr vorhanden, es kann aber auf die Version aus [:18.04:Ubuntu 18.04] zurückgegriffen werden. = Bedienung = Die allgemeine Syntax auf der Kommandozeile[5] lautet {{{#!vorlage Befehl ocrodjvu {-o | --save-bundled} AUSGABE.djvu [OPTION(EN)...] EINGABE.djvu }}} zur Erstellung eines [:DjVu#bundled-documents:bundled]-Dokuments, bzw. {{{#!vorlage Befehl ocrodjvu {-i | --save-indirect} INDEX-DATEI [OPTION(EN)...] EINGABE.djvu }}} um ein [:DjVu#indirect-documents:indirect]-Dokument zu erstellen. Dazu sollte ein Ordner mit dem Namen der Index-Datei existieren, in den dann die Indexdatei selbst und alle weiteren Dateien abgelegt werden. Ansonsten werden alle Daten im gerade genutzten Verzeichnis abgelegt. Um z.B. mit [:XSane:] o.ä. selbsterstellte und mit [:pdf2djvu:] oder [:DjVuDigital:] ins DjVu-Format konvertierte PDF-Dateien mit einer Textlage zu versehen, ist die Option `--render all` nötig, da die standardmäßig verarbeitete [:DjVu#Vordergrund:bitonale] Lage (`mask`) nicht vorhanden ist, und ocrodjvu eine Fehlermeldung ausgibt. Das gilt auch für farbige mit [:gscan2pdf:] erstellte DjVu-Dateien ohne Textlage. Das Programm [:xsane2djvu:] verwendet ocrodjvu, um direkt die Textlage aus der dort erstellten "foreground-mask" für ein gescanntes Dokument zu erstellen. == djvu2hocr und hocr2djvused == Neben dem Hauptprogramm befinden sich noch die Kommandozeilenwerkzeuge djvu2hocr und hocr2djvused in dem Paket. Mit djvu2hocr lassen sich die Textinformationen eines bestehenden DjVu-Dokuments auslesen und in eine [wikipedia:HOCR_(Standard):hOCR-Datei] (wie sie z.B. auch tesseract und cuneiform erstellen können) überführen. Aus einer solchen Datei lässt sich mit [:ExactImage#hocr2pdf:hocr2pdf] eine Textlage für eine durchsuchbare PDF-Datei erstellen. Diese Funktion kann mit [:djvu2pdf:] zur Umwandlung von DjVu-Dateien in PDF-Dateien verwendet werden, bei denen die Textebene erhalten bleibt. hocr2djvused kann genutzt werden, um aus hOCR-Daten die Textinformationen auszulesen und diese in ein djvused-Skript zu überführen, das dann bearbeitet und für die Erstellung von Textlagen für DjVu-Dateien verwendet werden kann (zur Verwendung derartiger Skripte siehe [:djvused:]). Nähere Informationen zur Verwendung finden sich in den manpages zu den Programmen. == Optionen für ocrodjvu == Das Programm kann durch vielfältige Optionen gesteuert werden. ||<-2 rowclass="titel"> Optionen für ocrodjvu || || Argument || Funktion || ||<-2 rowclass="trennzeile"> ''OCR-Anwendungen''|| || `--list-engines` || listet die installierten OCR-Anwendungen auf|| || `--engine OCR-ANWENDUNG --list-languages` || listet die installierten Sprachen für die jeweiligen OCR-Programme auf || || `--engine OCR-ANWENDUNG` || zu verwendendes OCR-Programm (Standard: `tesseract`)|| || `--language SPRACHKÜRZEL` || zu verwendende Sprache (Standard `eng`)|| ||<-2 rowclass="trennzeile"> ''zusätzliche spezielle Erkennungsfunktionen'' || || `--ocr-only` || Seiten ohne Texterkennung werden nicht gespeichert|| || `--clear-text` || vorher bereits existierender Text wird entfernt|| || `--render {foreground,all,mask}` || Angabe, welche Ebene bearbeitet werden soll, sinnvoll z.B. für fehl-gesplittete Dateien (Standard: `mask`)|| || `-p SEITENZAHLEN/BEREICHE`, `--pages SEITENZAHLEN/BEREICHE` || Seiten/Bereiche, die bearbeitet werden sollen, durch Kommata getrennt (z.B. `1-7, 9, 13-15`)|| || `-t {lines,words,chars}`, `--details {lines,words,chars}` || Angabe zu Erkennungsdetails - Zeilen, Wörter oder Buchstaben (Standard: `words`)|| || `--word-segmentation {simple,uax29}` || zu verwendender Wort-Aufteilungs-Algorithmus, jede zusammenhängende Zeichenfolge oder [https://unicode.org/reports/tr29/ uax29] {en}|| ||<-2 rowclass="trennzeile"> ''mögliche Ausgabeformen'' || || `-o DATEINAME`, `--save-bundled DATEINAME` || Resultat als mehrseitiges "bundled"-Dokument speichern || || `-i INDEX DATEINAME`, `--save-indirect INDEX-DATEINAME` || Resultat als mehrseitiges "indirect"-Dokument speichern || || `--save-script DATEINAME` || Resultate werden als Skript für [:djvused:] ausgegeben || || `--in-place` || Resultate werden direkt im Terminal ausgegeben|| || `--dry-run` || Testdurchlauf, keine Änderungen an den Daten || ||<-2 rowclass="trennzeile"> ''Sonstiges''|| || `-D`, `--debug` || Debugging, tempöräre Dateien bleiben zur Kontrolle erhalten|| || `-j [N]`, `--jobs [N]` || Anzahl der parallel auszuführenden OCR-Prozesse|| || `-h`, `--help` || Hilfe, listet die möglichen Optionen auf || || `-v`, --`version` || gibt die Versionsnr. des Programms aus || Weitere Informationen liefert die [:man:Manpage] des Programms. = Probleme = == Auflösung zu hoch == Ggf. funktioniert ocrodjvu bei Vorlagen mit Auflösungen höher als 300 dpi insbesondere bei Verwendung von Cuneiform nicht einwandfrei und stürzt ab; bis 300 dpi sollte es aber kein Probleme geben. Ggf. hilft es, das Programm mit dem Befehl {{{#!vorlage Befehl ocrodjvu [OPTION(EN)]