ubuntuusers.de

pdfsandwich

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Wiki/Icons/terminal.png 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)

Paketliste zum Kopieren:

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)

Paketliste zum Kopieren:

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)

Paketliste zum Kopieren:

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.

Diese Revision wurde am 17. Februar 2020 12:06 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Texterkennung, PDF, OCR, Kommunikation, Grafik, Büro