Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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.
Dazu wird die gescannte PDF-Vorlage mit convert
aus ImageMagick in eine oder mehrere .png-Dateien überführt und aus diesen mit 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. Ab Version 0.1.2 erfolgt standardmäßig eine Vorbereitung der Vorlagen durch unpaper. pdfsandwich setzt ab dieser Version zudem standardmäßig auf die pdf-Funktion von tesseract 3.03, ab Ubuntu 14.04 in den Quellen.
Durch die Verwendung von Tesseract 3.03 mit dem pdf-Konfigurationsskript können sehr große PDF-Dateien entstehen, da keine Größenangabe für die PDF-Datei angegeben werden kann, und die Standarderstellung mit einer Auflösung von 300 dpi die Ausgangsgröße gut versechzehnfacht (aus einer DIN-A4-Vorlage wird etwa ein DIN-A0-Format!). Grafische PDF-Dateien, die z.B. durch convert
oder econvert
ohne eine konkrete Papiergrößenangabe erstellt wurden, haben oft bereits Ausmaße im DIN-A0-Bereich (841x1189 mm) oder größer, daher vor Verarbeitung in den Datei-Informationen die Größe überprüfen. Wenn eine derartig überdimensionierte PDF-Datei mit pdfsandwich verarbeitet werden soll, ist schnell selbst ein moderner Rechner gnadenlos überfordert und wird unbedienbar!
Ab Version 0.1.3 lässt sich daher die Maximalgröße für die Ein- und Ausgabedateien festlegen (Optionen -maxpixels
und -pagesize
). Standardmäßig werden ohne Angabe Vorlagen, die größer als DIN A3 sind, darauf herunterskaliert.
pdfsandwich ist in den Paketquellen vorhanden.
pdfsandwich
mit apturl
Paketliste zum Kopieren:
sudo apt-get install pdfsandwich
sudo aptitude install pdfsandwich
Vor Ubuntu 16.04 ist pdfsandwich nicht in den offiziellen Paketquellen vorhanden, es können aber .deb-Pakete für 32- und 64-bit-Versionen von der Downloadseite des Projektes heruntergeladen und installiert[1] werden. Allerdings wird vor der deb-Installation der 0.1.2-Version gewarnt, als kleinen "Scherz" hat der Entwickler dort als Abhängigkeiten alle tesseract-Sprachpakete eingebaut, sodass mal eben gut 60 Pakete installiert werden. Ab 0.1.3 erfolgt stattdessen bei der Verwendung eine Warnung, falls eine nicht installierte Tesseract-Sprachversion angegeben werden sollte.
Fremdpakete können das System gefährden.
Die allgemeine Syntax zur Bedienung im Terminal[2] lautet
pdfsandwich [Optionen] EINGABEDATEI.pdf
Es entsteht eine durchsuchbare PDF-Datei mit dem Namen EINGABEDATEI_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 recht gute Texterkennungsqualität von tesseract. Empfohlen werden Schwarz-weiße Vorlagen ohne Bilder, die Passung wird mit verschachtelten Vorlagen schwieriger. Eine Korrekturfunktion ist bisher leider nicht implementiert.
pdfsandwich-Optionen | ||
Option | ggf. Wert | Funktion |
-coo | OPTION(EN) | zusätzliche convert -Optionen; diese müssen in Anführungszeichen stehen, z.B. -coo "-normalize -black-threshold 75%" |
Siehe convert --help oder die Manpage zu convert | ||
-tesso | OPTION(EN) | zusätzliche tesseract-Optionen; diese müssen in Anführungszeichen (" ") stehen! |
-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, abhängig von den installierten tesseract-Sprachpaketen (Standard: eng ) |
-noimage | Keine Verwendung des Bildes, reine OCR-Ausgabe in der PDF-Datei (ab 0.1.2 nur mit -enforcehocr2pdf ) | |
-nthreads | N | 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 | |
-enforcehocr2pdf | ab 0.1.2 | hocr2pdf auch bei tesseract >= 3.03 verwenden |
-hoo | zusätzliche hocr2pdf-Optionen, nur mit -enforcehocr2pdf nutzbar, diese müssen in Anführungszeichen stehen! | |
-unpo | -unpo "OPTION" (ab 0.1.2) | zusätzliche unpaper-Optionen verwenden, diese immer in Anführungsstriche setzen! |
-grayfilter | (ab 0.1.3 verwendbar) | Den Graufilter von unpaper verwenden, weitere Optionen dazu lassen sich über die -unpo -Option setzen |
-layout | single | double | none (ab 0.1.3) | Die Layout-Funktion von unpaper verwenden |
-nopreproc | keine Vorbereitung mit unpaper | |
-maxpixels | NUM (ab 0.1.3) | Maximalwert der in der Eingabedatei erlaubten Pixel, wenn (resolution/72)^2 *Breite*Höhe > maxpixels werden die Seiten der Eingabedatei vor der Texterkennung auf die angegebene Seitengröße reduziert, Standardeinstellung ist 17415167 (DIN-A3 @ 300 dpi) |
-pagesize | original | NUMxNUM (ab 0.1.3) | Legt die Seitengröße der Ausgabedatei fest; original erhält die Eingangsgröße (Standard), NUMxNUM : Breite x Höhe in Pixel (z.B. DIN-A4: -pagesize 595x842 ) |
-debug | (ab 0.1.3) | Die Temporärdateien in /tmp werden nicht gelöscht (zur Fehlersuche ggf. nützlich) |
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 Version 0.1.2 mit Tesseract 3.03 ist dieses Problem allerdings so nicht lösbar, ganz im Gegenteil, siehe Warnung oben!
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)
unpaper
mit apturl
Paketliste zum Kopieren:
sudo apt-get install imagemagick exactimage ghostscript tesseract-ocr unpaper
sudo aptitude install imagemagick exactimage ghostscript tesseract-ocr unpaper
Den Code mit
svn co https://pdfsandwich.svn.sourceforge.net/svnroot/pdfsandwich/trunk/src pdfsandwich-0.x.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 ) |
-unpaper | -unpaper DATEINAME : Name des unpaper-Programm (Standard: unpaper ) |
OCRmyPDF ist ein ähnliches Programm, das momentan mit tesseract-ocr die besten Ergebnisse für die Textebenenerkennung und Passung für grafische PDF-Dateien liefert.
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. Die Schriftgröße wird angemessen ausgegeben, dabei ist aber die Erkennung (bei fett und kursiv gesetzten Textteilen) unter Cuneiform eingeschränkt; 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.
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.
Diese Revision wurde am 28. August 2016 17:01 von Heinrich_Schwietering erstellt.