Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
![]() |
© Quelle |
pdfsandwich ist ein Kommandozeilenwerkzeug zum Erstellen von durchsuchbaren PDF-Dateien. Mit Textverarbeitungsprogrammen erstellte PDF-Dateien können ohne Weiteres durchsucht werden, anders ist es mit reinen Bild-Vorlagen, die z.B. mit Scannern zur Archivierung (papierloses Büro, Digitalisierung alter Unterlagen etc,) erstellt wurden. Dafür wird die gescannte PDF-Vorlage mit
convert
aus ImageMagick in eine oder mehrere .bmp3-Dateien, ab 0.0.6 .png-Dateien überführt und aus diesen mit Cuneiform-Linux, ab 0.0.6 tesseract-ocr 3.0x, jeweils eine Texterkennung im hOCR-Format erstellt. Die OCR-Dateien und die PDF-Vorlagen werden mittels hocr2pdf als "unsichtbare" Schicht zusammengeführt, und schließlich mit ghostscript
zu einer zusammenhängenden PDF-Datei weiterverarbeitet. Durch die Möglichkeit, mehrere Prozesse parallel arbeiten zu lassen (Befehlsoption -nthreads
), ergeben sich gerade auf Rechnern mit 4 oder gar 8 CPUs erhebliche Zeitersparnisse gegenüber einer rein sequentiellen Verarbeitung.
Die Probleme mit den von Cuneiform-Linux > 0.8.0 erstellten hocr-Dateien für hocr2pdf
machen das Programm in der Version 0.0.3 für aktuelle Ubuntu-Versionen fast unbrauchbar. Ab Version 0.0.6 wird daher Tesseract in Version 3.0x verwendet, um die hocr/html-Dateien zu erzeugen. Benötigt werden dazu die gewünschten tesseract-ocr-Sprachpakete, die inzwischen in dutzenden Sprachen vorliegen.
pdfsandwich ist nicht in den Ubuntu-Quellen vorhanden, es können aber .deb-Pakete für 32- und 64-bit-Versionen von der Downloadseite des Projektes heruntergeladen und installiert[1] werden. Bei Versionen < 0.0.5 darauf achten, dass Cuneiform-Linux in einer Version kleiner als 0.9.0 installiert ist (siehe Kompilieren!).
Fremdpakete können das System gefährden.
Die allgemeine Syntax zur Bedienung im Terminal[2] lautet
pdfsandwich [Optionen] <Ausgangsdatei>.pdf
Es entsteht eine durchsuchbare PDF-Datei mit dem Namen <Ausgangsdatei>_ocr.pdf. Standard ist dabei die Verwendung von tesseract für englischsprachige Texte, der Prozess lässt sich aber über etliche Optionen den eigenen Bedingungen und Bedürfnissen entsprechend anpassen. pdfsandwich verlässt sich dabei auf die, zugegebenermaßen recht gute, Texterkennungsqualität von tesseract. Empfohlen werden Schwarz-weiße Vorlagen ohne Bilder, die Passung wird mit verschachtelten Vorlagen schwieriger. Eine Korrekturfunktion (z.B. wie das Mozilla-hOCR-Addon /
) ist bisher leider nicht implementiert.
pdfsandwich-Optionen | ||
Option | ggf. Wert | Funktion |
-coo | Option(en) | zusätzliche convert -Optionen; diese müssen in " " stehen, z.B. -coo "-normalize -black-threshold 75%" |
Siehe convert --help oder die Manpage zu convert | ||
-cuo , ab 0.0.6 -tesso | Option(en) | zusätzliche Cuneiform-Optionen bzw. tesseract-Optionen; diese müssen in " " stehen! z.B. -cuo "--fax" (ein für Faxvorlagen optimierter Texterkennungsmodus) |
-first_page | Seitenzahl | Seitenzahl, ab der OCR durchgeführt werden soll (Standard: 1) |
-last_page | Seitenzahl | Seitenzahl, bis zu der OCR durchgeführt werden soll (Standard: letzte Seite der Vorlage) |
-lang | Sprachkürzel | verwendete Sprache für die Texterkennung (Standard: eng ) |
-noimage | Keine Verwendung des Bildes, reine OCR-Ausgabe in der PDF-Datei | |
-nthreads | <Anzahl> | Anzahl der parallel durchgeführten Prozesse (Standard: vermutete Anzahl der CPUs; sonst 1) |
-o | <Dateiname> | Ausgabe-Datei; Standard: <Eingabedatei>_ocr.pdf |
-resolution | NUMxNUM (in dpi) | Auflösung für die Texterkennung (Standard: 300x300 dpi) |
-rgb | Verwendung des RGB-Farbraums in den Vorlagen (Standard: Strichzeichnung) | |
-sloppy_text | hocr2pdf-Option: Zeichen mit größeren Abständen zusammenfassen, keine einzelnen Zeichen wiedergeben | |
-quiet | keine Prozessausgaben | |
-verbose | "gesprächige" Ausgabe, z.B. zur Fehlereingrenzung | |
-version | Versionsangabe | |
-help, | --help | Anzeige der möglichen Optionen |
Wenn bei der Erstellung unerwartet große PDF-Dateien entstehen (ein Vielfaches der Ausgangsdokumentgröße), kann es helfen, die entstandenen Dateien erneut mit pdfsandwich zu bearbeiten. Damit sollte die Größe auf ein normales Maß zurückgeführt werden können; unter tesseract sollte dieses Problem allerdings nicht auftreten.
Voraussetzung zur Kompilierung ist neben den im SVN-Artikel genannten Paketen die Installation[3] von
ocaml
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ocaml
sudo aptitude install ocaml
Die von pdfsandwich verwendeten Programme müssen natürlich ebenfalls installiert sein, also
imagemagick
exactimage
ghostscript
tesseract-ocr (sowie die gewünschten Sprachpakete)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install imagemagick exactimage ghostscript tesseract-ocr
sudo aptitude install imagemagick exactimage ghostscript tesseract-ocr
Den Code mit
svn co https://pdfsandwich.svn.sourceforge.net/svnroot/pdfsandwich/trunk/src pdfsandwich-0.0.x
herunterladen. Die Kompilierung erfolgt dann nach üblichem Muster[4].
Für Bastler, die ihre eigenen Versionen der benötigten Programme verwenden möchten, können für die PDF-Erstellung als Option die jeweils verwendeten Namen der Programme angegeben werden:
binary-Optionen | |
Option | Funktion |
-convert | -convert <Dateiname> : Name des convert-Programms (Standard: convert ) |
-tesseract | -tesseract <Dateiname> : Name des tesseract-Programms (Standard: tesseract ) |
-gs | -gs <Dateiname> : Name des Ghostscript-Programms (Standard: gs ) |
-hocr2pdf | -hocr2pdf <Dateiname> : Name des hocr2pdf-Programms (Standard: hocr2pdf ) |
gscan2pdf ist ebenfalls in der Lage, durchsuchbare PDF-Dateien zu erstellen; die Verwendung von Cuneiform-Linux ist allerdings erst ab Version 0.9.31 möglich, und auch nur ab Version 0.9.0, die mit libmagick++-Unterstützung kompiliert wurden. Die Schriftgröße wird angemessen ausgegeben, dabei scheint aber die Erkennung (bei fett und kursiv gesetzten Textteilen unter Cuneiform) hinter der bei der Verwendung von pdfsandwich zurückzubleiben; die Verwendung von tesseract-ocr 3.0x liefert aber sehr gute Ergebnisse). Außerdem kann die Texterkennung vor der Verarbeitung überprüft und ggf. korrigiert werden (zumindest bis Version gscan2pdf 0.9.32).
pdfocr funktioniert nach ganz ähnlichem Prinzip wie pdfsandwich, hat aber mit Cuneiform > 0.9.0 dieselben Probleme.
xsane2sandwich kann verwendet werden, um direkt aus Xsane heraus durchsuchbare PDF-Dateien mit eingebetteter Textlage zu erstellen; allerdings können keine bestehenden Dateien bearbeitet werden.