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.

Blick vom Kornberg zum Schneeberg

Mal was hübsch kitschiges von einem schneelosen Winter im Fichtelgebirge:

Kamera:     Pentax K-5
Objektiv:   Pentax Pentax SMC-DA 35mm
ISO:        100
Blende:     19
Belichtungszeit:1/500s -- 1/2s (HDR aus 5 Bildern)

Sonderzeichen schnell in Mavericks eingeben

Ob das neu ist in MacOS 10.9 (Mavericks) oder ob es das schon länger gibt, kann ich garnicht sagen, praktisch ist es auf jeden Fall:

Per ctrl-cmd-space erscheint in entsprechenden Texteingabebereichen beim Cursor ein kleines Hilfsfenster zur Eingabe von Sonderzeichen, Smilies, etc.

Komplett mit verschiedenen Kategorien und einer Historie.

Freigaben automatisch verbinden

Natürlich kann man sich Netzwerkfreigaben auch einfach in die Anmeldeobjekte werfen, aber das hat den Nachteil, daß ein so, oder über den Finder, eingebundenes Netzlaufwerk verschwindet sobald es mal nicht verfügbar ist. Da mein Mac i.d.R. durchläuft, mein NAS sich aber Nachts schlafen legt, wäre das bei mir jeden Tag der Fall.

Nutz man die Laufwerke nur manuell ist es einfach ein Ärgernis und man muß sie einfach neu verbinden, bei automatisch ablaufenden Skripten aber ist es extrem ungünstig wenn die plötzlich nur Leere vorfinden wo sie einen Ordner auf dem NAS erwarten.

Umgehen kann man das Ganze indem man den automount-Mechanismus benutzt den es seit einiger Zeit in OS X gibt.

Als erstes legt man, z.B. pro Server oder Netzwerk, einen Ordner unter /Volumes an:

mkdir /Volumes/NAS

(NAS dient nur als Beispiel, der Ordner kann natürlich heißen wie er will, solange er nicht mit bereits unter /Volumes eingebundenem kollidiert.)

Dann fügt man in die Datei /etc/auto_master eine neue Zeile für diesen Ordner ein:

/Volumes/NAS           auto_NAS

Und legt eine neue Datei /etc/auto_NAS an in die man nun die zur verbindenden ‘Shares’ mitsamt Anmeldeinformationen eingibt.

home   -fstype=smbfs ://USER:PASSWORD@NAS/home
Sync   -fstype=smbfs ://USER:PASSWORD@NAS/Sync

Zu beachten ist dabei, daß in den Dateien jeweils ein LineFeed nach der letzten Zeile sein muß!

Damit das alles auch greift fehlt jetzt nur noch ein:

sudo automount -vc

Für manches mag das Verfahren den Nachteil haben, daß die Laufwerke jetzt nicht mehr, wie händisch eingebundene, in der Seitenleiste des Finders erscheinen, aber man kann sich entweder die Wurzel /Volumes/NAS manuell da hineinlegen oder sich mit Aliases oder Symlinks an geeigneter Stelle behelfen.