ocrodjvu
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
ocrodjvu 🇬🇧 ist eine Kommandozeilen-Werkzeug zum Erstellen einer versteckten Textlage für DjVu-Daten, das auf DjVuLibre 🇬🇧 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 poliqarp-Projekt 🇬🇧 eingesetzt. ocrodjvu benötigt eine Python-2.7-Installation, für 24.04 eine Python-3.x Version
Installation¶
Voarsussetzung zur Nutzung ist mindestens ein Texterkennungsprogramm, nutzbar sind
cuneiform (multiverse, optional)
tesseract-ocr (universe, sowie die gewünschten Sprachpakete)
gocr (universe, optional)
ocrad (universe, optional)
Befehl zum Installieren der Pakete:
sudo apt-get install cuneiform tesseract-ocr gocr ocrad
Hinweis!
Fremdsoftware kann das System gefährden.
Installation für 20.04¶
ocrodjvu ist nicht mehr in den Quellen vorhanden daher muss es aus dem Quellcode selbst erstellt werden [2]. Dazu wird der Code von GitHub ⮷ als .tar.xz heruntergeladen und das Archiv entpackt[3]. Ein einfaches Paket lässt sich z.B. mit dem Befehl [5]
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 installiert sein:
python-subprocess32 (universe; bis 20.04 in den Paketquellen)
python3-djvu (universe)
python3-lxml
Befehl zum Installieren der Pakete:
sudo apt-get install python-subprocess32 python3-djvu python3-lxml
Das benötigte Paket python-djvu ist allerdings ebenfalls nicht mehr vorhanden, es kann aber auf die Version aus Ubuntu 18.04 zurückgegriffen werden.
Installation unter 24.04¶
Da Python 2.7 für Ubuntu 24.04 nicht mehr in den Quellen vorhanden ist, kann das Programm nur über auf Python-3.x portierte Versionen installiert werden. Eine Python-3.xx-Installation ist Voraussetzung zur Nutzung. Dann kann der Quellcode von python-djvulibre, der benötigt wird, von github ⮷ bezogen werden, das darin befindliche Skript setup.py ausführbar gemacht werden und dann z.B. mit
sudo python3 setup.py install
installiert werden. Das eigentlich Programm ocrodjvu 🇬🇧 ⮷ wird ebenfalls als Quellcode heruntergeladen und dann auf dieselbe Weise erstellt:
sudo python3 setup.py install
Eine Installationsversuch mit pipx scheiterte in beiden Fällen.
Bedienung¶
Die allgemeine Syntax auf der Kommandozeile[5] lautet
ocrodjvu {-o | --save-bundled} AUSGABE.djvu [OPTION(EN)...] EINGABE.djvu
zur Erstellung eines bundled-Dokuments, bzw.
ocrodjvu {-i | --save-indirect} INDEX-DATEI [OPTION(EN)...] EINGABE.djvu
um ein 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 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 hOCR-Datei (wie sie z.B. auch tesseract und cuneiform erstellen können) überführen. Aus einer solchen Datei lässt sich mit 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.
Optionen für ocrodjvu | |
Argument | Funktion |
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 ) |
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 uax29 🇬🇧 |
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 |
Sonstiges | |
-D , --debug | Debugging, temporäre Dateien bleiben zur Kontrolle erhalten |
-j [N] , --jobs [N] | Anzahl der parallel auszuführenden OCR-Prozesse |
--help | Hilfe, listet die möglichen Optionen auf |
--version | gibt die Versionsnr. des Programms aus |
Weitere Informationen liefert die 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
ocrodjvu [OPTION(EN)] </dev/null
aufzurufen, zumindest funktioniert damit auch die Verarbeitung 600-dpi-Scans unter Verwendung von Cuneiform-Linux.
Allerdings erhöht sich die Verarbeitungsdauer bei Verwendung von höheren dpi-Werten, auch für tesseract-ocr, enorm, die Verarbeitung eines 600dpi-A4-Scan kann bereits auf einem modernen Rechner mehrere Minuten in Anspruch nehmen!
Verwendung von tesseract-ocr¶
Insbesondere bei verschachtelten farbigen Vorlagen kommt es mit tesseract-ocr als OCR-Anwendung z.T. zu Abbrüchen mit Meldungen zu nicht verarbeitbaren Zeichen, ocrodjvu stürzt mit Fehlermeldungen ab. Das Problem lässt sich mit der Verwendung einer aktuellen Version von ocrodjvu aus dem Quellcode umgehen, im Log tauchen zwar ggf. weiterhin Meldungen auf, die Verarbeitung wird aber nicht abgebrochen.
Alternativen¶
gscan2pdf kann verschiedene OCR-Programme verwenden
xsane2djvu und pct-scanner-script können ocrodjvu zur Texterkennung verwenden
Links¶
Projektseite 🇬🇧
Texterkennung - Übersichtsartikel
DjVu - Grundlagenartikel
didjvu - Programm zum Erstellen regulärer DjVu-Dateien mit bitonaler Vordergrundebene