blindschleiche

Fujitsu ScanSnap OCR für beliebige PDF

So ein Fujitsu ScanSnap ist eine feine Sache. Mein ScanSnap S1100 leistet mir seit einiger Zeit treue Dienste beim Digitalisieren von Papierunterlagen. Was mir mit anderen Scannern nie gelungen ist, damit hat es geklappt. Alle Papierrechnungen, Rentenunterlagen, Verdienstbescheinigungen, Zeugnisse, etc. die sich so angesammelt haben sind digitalisiert und alles was neu anfällt wird auch gleich gescannt, in DevonThink Pro abgelegt und dem Altpapier übergeben.

Warum das geklappt hat ist die gute s/w-Bildverarbeitung des Scanners und der beiliegenden Software, das einfachere Handling des Einzugsscanners im Vergleich zu einem Flachbettscanner, meine Hazel-Workflows und das integrierte Abbyy OCR Modul.

Und um letzteres soll es hier gehen.

Die Abbyy Software arbeitet sehr gut beim Hinterlegen der gescannten Grafikdaten mit, per OCR gewonnener, Textinformationen. Dies funktioniert standardmäßig aber nur mit PDFs die auch vom ScanSnap generiert wurden und eben nicht mit beliebigen PDF; seien es Altdaten oder Scans die vom iPhone kommen. Das hier beschriebene Verfahren mit tesseract eignet sich gut um ASCII-Dateien aus den Scans zu generieren, aber weniger dafür die PDFs mit — durchsuchbarem — Text zu ergänzen.

Was liegt also näher als zu versuchen die vorhandene — Fujitsu gebundelte — Software von Abbyy auch auf diese Dateien loszulassen.

Eine Analyse der vom ScanSnap erzeugten Dateien hat ans Tageslicht gebracht, daß diese im Feld Creator ScanSnap Manager #S1100 und im Feld Producer Mac OS X 10.8.4 Quartz PDFContext stehen haben. Nur wie bekommt man das jetzt am geschicktesten in die Dateien hinein?

Erfreulicherweise gibt es pdftk, welches sich über die MacPorts auch bequem auf dem Mac installieren lässt.

Fehlt also nur noch ein Skript das einem die Hauptarbeit abnimmt.

pdfocr.sh:

#!/bin/bash
## testen ob Parameter 1 als Datei exitsiert
if [ ! -f "$1" ]
then
    echo "$1: File does not exist"; exit 1
fi

base=$(basename -s .pdf "$1")

## TMP-Verzeichnis anlegen und darin Datei definieren
tmpdir=$(mktemp -d -t pdfocr)
if [ $? -ne 0 ]; then
    echo "$0: Can't create temp dir, exiting..."; exit 1
fi
tmpfile="${tmpdir}/${base}.pdf"

/usr/local/bin/pdftk "$1" update_info ~/bin/lib/SnapScanPDFInfo.txt output "$tmpfile" 2> /dev/null

open -a 'Scan to Searchable PDF.app' "$tmpfile" 

~/bin/lib/SnapScanPDFInfo.txt:

InfoKey: Creator
InfoValue: ScanSnap Manager #S1100
InfoKey: Producer
InfoValue: Mac OS X 10.8.4 Quartz PDFContext

2015-11-28: Unter Mac OS 10.11 (El Capitan) scheitert die Sache an einem renitenten pdftk; eine Abhilfe habe ich hier beschrieben.