Schlagwort-Archive: Technik

Workflow für schicke & schlanke Buch-PDFs mit Fraktur-Texterkennung

Heute etwas Technisches: zur Abwechslung will ich an dieser Stelle einmal meinen Workflow skizzieren, wie sich Buchscans mit einem Bündel freier Software unter Windows oder Linux effizient in hochaufgelöste und schlanke, durchsuchbare schwarz-weiß PDFs wandeln lassen. Die vorgestellte Vorgehensweise, bei der eine optimierte Bild-PDF am Ende mit dem OCR-Ergebnis überlagert wird, liefert bei gleicher Qualität rund 25% kleinere Ergebnisse als die direkte Erzeugung von OCR-PDFs mit tesseract und anschließender PDF-Optimierung.

1. ScanTailor

Zur Umwandlung der Scans in gerade ausgerichtete und auf den Textinhalt beschnittene (d.h. randlose) Binärbilder der Einzelseiten verwende ich ScanTailor Advanced (Windows-Version 1.0.19: github.com/ScanTailor-Advanced/scantailor-advanced/releases). Anleitungen gibt es zuhauf: wiki.ubuntuusers.de/Scan_Tailor/, wiki.genealogy.net/Scan_Tailor, www.heise.de…). Nota bene:

  • Zur Prüfung, ob beim Arbeitsschritt „Inhalt auswählen“ alle Seitenzahlen oder sonstige Marginalien einbezogen wurden, hilft die Sortiermöglichkeit der Seiten nach aufsteigender Höhe bzw. Breite (rechte Spalte ganz unten).
  • Da die Seitenränder später im PDF definiert werden, reicht es für die jetzt erzeugten TIFFs im Schritt „Ränder“ ein Rand von je 1 mm („Anwenden auf …“ → „Alle Seiten“ nicht vergessen).
  • Um bei nur teilweise gefüllten Seiten die ursprüngliche Anordnung der Textblöcke beizubehalten, sollte man im gleichen Schritt unter „Ausrichtung“ mit der Einstellung „Original“ experimentieren.
2. img2pdf

Im nächsten Arbeitsschritt fasse ich die von Scantailor standardmäßig im Unterverzeichnis \out abgelegten TIFF-Dateien mit dem Kommandozeilentool img2pdf (Windows-Version unter gitlab.mister-muffin.de/josch/img2pdf/releases) in einer PDF zusammen, wobei die TIFFs beim Einbinden unverändert bleiben. Ein A4-PDF mit 1 cm Rand erzeugt man so:

img2pdf -o out.pdf -S A4 -b 1cm *.tif

Für DIN-A5 mit bspw. 6 mm Rand passt man die Parameter wie folgt an, wobei zusätzlich auch weitere Parameter für die PDF-Metadaten angegeben werden können:

img2pdf -o out.pdf -S A5 -b 6mm *.tif --producer "ScanTailor+Tesseract" --title "Gehrman: Erlebnisse/Erinnerungen, 1903" 

Hinweis: Damit das Kommadozeilenprogramm in jedem Verzeichnis ausgeführt werden kann, muss unter Windows der Verzeichnispfad der Anwendung vollständig aufgerufen oder zur PATH-Umgebungsvariablen hinzugefügt werden.

Alternative: Wer statt eines Kommandozeilentools lieber mit grafischer Benutzeroberfläche arbeitet, kann unter Windows die PDFill PDF Tools nutzen, Menüpunkt 9 Convert Images to PDF.

3. pdfsizeopt

Für möglichst kompakte PDFs können mit pdfsizeopt (Windows-Version: https://github.com/pts/pdfsizeopt/releases) nun die in der soeben erzeugte out.pdf eingebetteten Binärbilder weiter optimiert und in der Größe reduziert werden. Das für monochrome Bilder geeignete JBIG2-Kompressionsverfahren ruft man damit folgendermaßen auf:

pdfsizeopt --use-image-optimizer=jbig2 out.pdf opt.pdf

Alternative: Wer eine Adobe Acrobat Pro Lizenz sein eigen nennt, kann mit der PDF-Optimierung bei Auswahl der JBIG2-Komprimierung ähnliche Ergebnisse erzielen, siehe helpx.adobe.com/de/acrobat/using/optimizing-pdfs-acrobat-pro.html.

4. Ghostscript

Nun wird mittels ghostscript aus der gerade erzeugten opt.pdf oder der inhaltsgleichen out.pdf ein Multipage-TIFF erzeugt. Nötig ist dieser Schritt nur, weil die OCR-Software Tesseract kein PDF einlesen kann. Auch die von ScanTailor erzeugten TIFFs können nicht direkt für die OCR verwendet werden. Wegen des individuell festgelegten DIN-Zielformats und der zusätzlichen Seitenränder wäre der OCR-Layer später nicht deckungsgleich zum PDF. Um aus der vorliegenden out.pdf eine mehrseitige schwarz-weiss-TIFF-Datei zu erzeugen, startet man ghostscript auf der Kommandozeile wie folgt:

gswin64 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=tiffg4 -r600 -sOutputFile=out.tif out.pdf

Dass die in die Texterkennung einfließende out.tif größer als die Ausgangs-PDF ist, muss nicht stören. Nach der OCR im nächsten Schritt wird sie ohnehin wieder gelöscht.

5. Tesseract

Unter Windows holt man sich die OCR-Software Tesseract am besten unter github.com/UB-Mannheim/tesseract/wiki. Das Projektteam OCR-BW an der Unibibliothek Mannheim stellt zugleich eigene Tesseract-Modelle zum Download bereit, die deutlich bessere Ergebnisse bei der Texterkennung von Fraktur liefern als die Standardmodelle frk und script/Fraktur. Von OCR-BW empfohlen wird das Modell frak2021_1.069.traineddata. Installieren lässt es sich ganz leicht, indem man die Datei dem entsprechenden Ordner (Standardpfad in Windows: C:\Program Files\Tesseract-OCR\tessdata) zu den übrigen Schrift- bzw. Sprachmodellen hinzufügt. Für leichtere Aufrufe kürzt man den Dateinamen z.B. in frak.traineddata.

Mit folgendem Kommandozeilenaufruf wird die Erzeugung des OCR-Textlayers text.pdf angestoßen, wobei zu Kontrollzwecken gleich noch eine Textdatei text.txt mit dem erkannten Volltext ausgegeben wird:

tesseract out.tif text -l frak -c textonly_pdf=1 pdf txt
6. pdftk

Zu guter Letzt wird nun mit der Funktion multibackground des PDF-Werkzeugs PDFtk Server der OCR-Textlayer text.pdf in die JBIG2-optimierte opt.pdf eingebunden:

pdftk opt.pdf multibackground text.pdf output ocr.pdf


Jetzt muss nur noch ein wenig aufgeräumt werden. Die in ocr.pdf eingeflossenen Zwischenprodukte out.pdf, opt.pdf, out.tif sowie text.pdf können getrost gelöscht werden. Gleiches gilt für die im Endprodukt enthaltenen schwarz-weiß TIFF-Dateien aus der ScanTailor-Bearbeitung im out-Verzeichnis.

Als Beispiel für ein auf diese Weise prozessiertes PDF stehen hier die Erlebnisse aus meiner 15jährigen Dienstzeit im Geschäftsbezirk einer Generalkommission des DVW-Ehrenmitglieds Eduard Gehrmann von 1903 zum Download bereit. Zum Verfasser dieser Lebenserinnerungen informiert der nächste Blogbeitrag.