Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
ocrodjvu ist eine Kommandozeilen-Werkzeug zum Erstellen einer versteckten Textlage für DjVu-Daten, das auf DjVuLibre
fußt. Dazu können momentan die Programme OCRopus
oder Cuneiform-Linux für die eigentliche Texterkennung genutzt werden. Der Wrapper, verfasst in Python, ist eine Neuentwicklung, und wurde u.a. für das polnische poliqarp-Projekt
eingesetzt.
Seit Lucid Lynx ist das Programm in den Ubuntu-Quellen, installiert[1] werden muss
ocrodjvu (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ocrodjvu
sudo aptitude install ocrodjvu
Außerdem muss ocropus, dazu die gewünschten Tesseract-Sprachpakete, installiert sein, optional eine Cuneiform-Version mit libmagick++-Unterstützung (ab Version 0.9.0 integriert).
Unter Precise Pangolin 12.04 ist die Verwendung von OCRopus nicht mehr ohne Weiteres möglich. OCRopus 0.3 ist nicht mehr in den Quellen vorhanden, da es tesseract-ocr-2.xx benötigt, während in den Quellen inzwischen tesseract-ocr-3.xx vorhanden ist. Außerdem gibt es Probleme, den Tesseract-Engine zu finden, die in den Quellen vorliegende ocrodjvu-Version 0.7.7 findet trotz regulärer Installation Tesseract nicht. Abhilfe schafft die Kompilierung von Version 0.7.9 aus dem Quellcode!
Mit der unter Lucid in den Paketquellen vorhandenen Version kann es zu massiven Problemen mit Cuneiform-Linux kommen; daher ist es ggf. sinnvoll, sich die aktuelle Version aus dem Quellcode selbst zu erstellen[2]. Dazu wird der Code von pypi.python.org als .tar.gz heruntergeladen und das Archiv entpackt[3]. Die Installation erfolgt über das setup.py-Skript (zunächst ausführbar machen![4]), ein einfaches Paket lässt sich z.B. mit dem Befehl [5][6]
sudo checkinstall python setup.py install
erstellen und installieren (siehe auch Installationsskripte). Ein aktuelles Paket kann von debian.org bezogen und installiert[7] werden. Ab Version 0.6.0 ist auch die Verwendung von Ocrad, GOCR oder tesseract-ocr als Texterkennungsprogramm möglich; cuneiform kann auch ohne libmagick++-Support verwendet werden.
Fremdpakete können das System gefährden.
Außerdem muss das Paket
python-lxml
mit apturl
Paketliste zum Kopieren:
sudo apt-get install python-lxml
sudo aptitude install python-lxml
installiert sein.
Ab Version 0.7.0 ist ocrodjvu für tesseract-ocr 3.00 ausgelegt. Damit ist aber auch die Verwendung von OCRopus etwas eingeschränkt, da ocrodjvu als mögliche OCRopus-Sprachen die installierten neuen tesseract-Sprachdateien (<langid>.traineddata) erkennt. Die in den Ubuntu-Paketquellen vorhandene OCRopus-Version 3.1.x baut aber intern auf tesseract-ocr 2.0x auf, und verwendet dafür die alten Sprachpakete. Um OCRopus in diesen Versionen verwenden zu können, müssen daher sowohl die "neuen" traineddata-Dateien (für die Erkennung der Sprache) als auch die "alten" Sprachpakete der entsprechenden Sprachen in den selben Ordner (bei selbstkompiliertem tesseract-ocr 3.0x im Regelfall in /usr/local/share/tessdata) installiert sein.
Die allgemeine Syntax auf der Kommandozeile[5] lautet
ocrodjvu {-o | --save-bundled} <Ausgabe>.djvu [Option...] <Eingabe>.djvu
zur Erstellung eines bundled-Dokuments, bzw.
ocrodjvu {-i | --save-indirect} <Index-Datei> [Option...] <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 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.
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 den jeweiligen Engine auf |
--engine <OCR-Anwendung> | zu verwendendes OCR-Programm (Standard: ocropus ) |
--language <Sprachkürzel> | zu verwendende Sprache (Standard eng ) |
zusätzliche spezielle Erkennungsfunktionen | |
--ocr-only | Seiten ohne Texterkennung werden nicht bearbeitet |
--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 ![]() |
--in-place | Resultate werden direkt im Terminal ausgegeben |
--dry-run | Testdurchlauf, keine Änderungen an den Daten |
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 Manpage des Programms, allerdings wird diese bei der manuellen Installation ggf. nicht erstellt.
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 [Optionen] </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 Werten auch für OCRopus enorm, die Verarbeitung eines 600dpi-A4-Scan kann auch auf einem modernen Rechen mehrere Minuten in Anspruch nehmen!
Die ocrodjvu-Version aus den Paketquellen hat einen Fehler, der dazu führt, dass Cuneiform ggf. nicht verwendbar ist. Abhilfe schafft die Verwendung der aktuellen Version aus dem Quellcode.
Bis zur ocordjvu-Version 0.5.2 ist mit Cuneiform 0.7.0 aus den Paketquellen eine Texterkennung nicht möglich, da ocrodjvu eine Version benötigt, die pnm-Daten bearbeiten kann. Abhilfe schafft z.B. die Verwendung der Version 0.9.0 aus dem pdfocr-PPA , oder das Kompilieren mit libmagick++-dev.
Wenn Cuneiform aus dem Quellcode erstellt wurde, und das Programm unter /usr/local/bin abgelegt ist, findet ocrodjvu es nicht, auch wenn der Pfad (was Standard ist) in der PATH
-Variable eingetragen ist. Die Binärdatei cuneiform muss entweder nach /usr/bin verschoben, oder dort eine symbolische Verknüpfung darauf erstellt werden. Das Problem ist ab Version 0.4.7 behoben.
gscan2pdf kann verschiedene OCR-Engines verwenden; sinnvoll allerdings erst ab 0.9.31 mit implementierter OCRopus und Cuneiform-Unterstützung
xsane2djvu und pct-scanner-script können ocrodjvu zur Texterkennung verwenden
Kommerzielle Programme von Celaterm
any2djvu , Texterkennung ist allerdings nur für englische Texte zu empfehlen; außerdem muss eine bitonale "foreground mask" vorliegen.