pdfsandwich
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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.
Achtung!
Bei der 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.
In Version 0.1.7 wird standardmäßig die Eingabegröße des verwendeten PDFs für die Ausgabe verwendet; mit der Option -pagesize
kann auch eine gewünschte Größe (NUMxNUM
) in Pixeln festgelegt werden.
Installation¶
pdfsandwich ist in den Paketquellen vorhanden[1].
pdfsandwich (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install pdfsandwich
Oder mit apturl installieren, Link: apt://pdfsandwich
Verwendung von tesseract 4.x¶
Mit der in den Quellen für 18.04 vorhandenen Version 0.1.6 kann es ggf. zu Problemen mit tesseract 4.x, das ab 18.04 eingesetzt wird, kommen. Daher empfiehlt der Entwickler dringend, stattdessen ein .deb-Pakete der Version 0.1.7 für 64-bit von der Downloadseite ⮷ des Projektes herunterzuladen und zu installieren[2].
Hinweis!
Fremdpakete können das System gefährden.
Korrektur zur Verwendung von ImageMagick¶
Um das Programm unter 18.04 verwenden zu können, muss ggf. in der Datei /etc/imagemagick-6/policy.xml in einem Editor[3] mit Rootrechten die Zeile
<policy domain="coder" rights="none" pattern="PDF" />
in
<policy domain="coder" rights="read | write" pattern="PDF" />
umgewandelt werden. Ansonsten hat können die intern verwendeten ImageMagick-Programme die PDF-Dateien nicht bearbeiten; pdfsandwich gibt Fehler zu fehlenden Berechtigungen aus und liefert kein Ergebnis.
Bedienung¶
Die allgemeine Syntax zur Bedienung im Terminal[4] 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.
Hinweis:
PDFs werden vom Programm standardmäßig als Schwarz-Weiß bearbeitet, wenn nicht die Option -grey
(Grautöne) oder -rgb
(bunt) verwendet wird.
Optionen¶
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 | 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" | zusätzliche unpaper-Optionen verwenden, diese immer in Anführungsstriche setzen! |
-grayfilter | Den Graufilter von unpaper verwenden, weitere Optionen dazu lassen sich über die -unpo -Option setzen | |
-layout | single | double | none | Die Layout-Funktion von unpaper verwenden |
-nopreproc | keine Vorbereitung mit unpaper | |
-maxpixels | NUM | 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 | 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 | Die Temporärdateien in /tmp werden nicht gelöscht (zur Fehlersuche ggf. nützlich) |
Die manpage des Programms liefert eine vollständige Auflistung der möglichen Optionen.
pdfsandwich kompilieren¶
Voraussetzung zur Kompilierung ist neben den im SVN-Artikel genannten Paketen die Installation von
ocaml (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install ocaml
Oder mit apturl installieren, Link: apt://ocaml
Die von pdfsandwich verwendeten Programme müssen natürlich ebenfalls installiert sein, also
imagemagick
exactimage (universe)
ghostscript
tesseract-ocr (sowie die gewünschten Sprachpakete, universe)
unpaper (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install imagemagick exactimage ghostscript tesseract-ocr unpaper
Oder mit apturl installieren, Link: apt://imagemagick,exactimage,ghostscript,tesseract-ocr,unpaper
Den Code mit
svn checkout svn://svn.code.sf.net/p/pdfsandwich/code/trunk/src pdfsandwich
herunterladen. Die Kompilierung erfolgt dann nach üblichem Muster[5].
Extra-Optionen¶
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 ) |
Weitere Möglichkeiten finden sich in der manpage des Prgramms.
Alternativen¶
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.
xsane2OCRmyPDF kann verwendet werden, um direkt aus Xsane heraus durchsuchbare PDF-Dateien mit eingebetteter Textlage zu erstellen; es können auch bestehenden Dateien bearbeitet werden.
Links¶
Projektseite 🇬🇧
pdfsandwich auf sourceforge
blog-Eintrag 🇩🇪 zu Sandwich-PDFS