[[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Paketinstallation_DEB: Ein einzelnes Paket installieren] [:Editor: Einen Editor verwenden] [:Terminal: Ein Terminal öffnen] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [http://www.tobias-elze.de/pdfsandwich/index.html pdfsandwich] {en} 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 [wikipedia:HOCR_(Standard):hOCR]-Format erstellt. Die OCR-Dateien und die PDF-Vorlagen werden mittels [:ExactImage#hocr2pdf: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 [:tesseract-ocr#Direktes-Erstellen-von-PDF-Dateien:pdf-Funktion] von tesseract. {{{#!vorlage Warnung 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 [:ImageMagick#convert:`convert`] oder [:ExactImage#econvert:`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]. {{{#!vorlage Paketinstallation pdfsandwich, universe }}} == 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 [sourceforge:pdfsandwich/files/:Downloadseite] {dl} des Projektes herunterzuladen und zu installieren[2]. [[Vorlage(Fremd, Paket,)]] == 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 {{{ }}} in {{{ }}} 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 {{{#!vorlage Befehl 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. {{{#!vorlage Hinweis PDFs werden vom Programm standardmäßig als Schwarz-Weiß bearbeitet, wenn nicht die Option `-grey` (Grautöne) oder `-rgb` (bunt) verwendet wird. }}} == Optionen == {{{#!vorlage Tabelle <-3 rowclass="titel"> 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 [:man:Manpage] zu `convert` +++ `-tesso` `OPTION(EN)` zusätzliche [:tesseract-ocr: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` [:ExactImage#hocr2pdf: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 [:man:manpage] des Programms liefert eine vollständige Auflistung der möglichen Optionen. ##= Probleme = = pdfsandwich kompilieren = Voraussetzung zur Kompilierung ist neben den im [:SVN:]-Artikel genannten Paketen die Installation von {{{#!vorlage Paketinstallation ocaml, universe }}} Die von pdfsandwich verwendeten Programme müssen natürlich ebenfalls installiert sein, also {{{#!vorlage Paketinstallation imagemagick exactimage, universe ghostscript tesseract-ocr, sowie die gewünschten Sprachpakete, universe unpaper, universe }}} Den Code mit {{{#!vorlage Befehl 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: ||<-2 rowclass="titel"> 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 `: 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 = * [http://www.tobias-elze.de/pdfsandwich/index.html Projektseite] {en} * [sourceforge:pdfsandwich:] auf sourceforge * [https://www.auxnet.de/cuneiform-und-hocr2pdf-unter-ubuntulinux-installieren-und-einsetzen blog-Eintrag] {de} zu Sandwich-PDFS #tag: Grafik, Büro, Kommunikation, OCR, PDF, Texterkennung