Einzugsscanner am RPI

Um wichtige Briefe immer gleich zu archivieren, habe ich mir einen alten Fujitsu fi-5110C geleistet. Der läuft nun autark an einem Raspberry PI mit SANE auf Knopfdruck.

Wahrscheinlich begleiten euch Scanner schon ähnlich lange wie mich. Irgendein Flachbett-Scanner liegt immer zu Hause, aber um ehrlich zu sein, eigentlich fotografiere ich heutzutage eher Dokumente, weil es einfach schneller geht. Da ich aber meine Dokumente in ein Dokument-Management-System überführt habe, wollte ich das nicht nur sehr schnell machen, sondern zukünftig Briefe und wichtige Papiere immer gleich als digitale Version haben. Etwas was mit den diesen beiden Lösungen einfach nicht gut funktioniert.

Von der Arbeit / Universität kennen die meisten sicherlich die professionellen Kopiermaschinen, welche ganze Papierberge kopieren bzw. scannen können. So etwas wollte ich auch, nur ohne das ganze Gefummel, was man dort an Einstellungen treffen muss. Papier rein, Scan los!

Fujitsu fi-5110C

Nach etwas Recherche zu Linux-tauglichen Einzugsscannern und etwas Glück bei eBay, hatte ich für wenig Geld diesen kompakten Dokumentscanner erstanden. Neben dem automatischen Einzug (ADF) bietet er auch die Möglichkeit beidseitig zu scannen (duplex) und braucht dafür pro Seite nur wenige Sekunden.
Am Desktop PC (Linux Mint 20) erkannte das SANE-Framework ihn gleich automatisch und man konnte etwa mit Gnome Simple Scan sofort anfangen Dokumente einzulesen.

Für den autonomen Betrieb schloss ich ihn nun an einen meiner RPIs an, wo er ebenfalls von SANE erkannt wurde. Für das auslösen des Scans nutzte ich nun das Kommandozeilen Tool scan-image, welches bei SANE mit installiert wird. Im Einfachsten Fall, etwa so

scanimage --format=tiff --mode Gray --resolution=200 > ~/Dokumente/testscan.tiff

Doch ich möchte ja eigentlich Duplex und evtl. auch mehrere Seiten nacheinander verarbeiten lassen. Dann muss natürlich auch immer ein neuer Dateiname gewählt werden. Außerdem dauert das Finden des Scanners doch schon fast 10 Sekunden und die Zeit kann man sparen, wenn man Modell und Anschluss gleich mit übergibt. Für meinen Fall ist das also:

scanimage --device=fujitsu:fi-5110Cdj:521961 --source="ADF Duplex" --format=tiff --mode Gray --resolution=200 --batch=testscan%d.tiff

Und ja, man kann seinen SANE Dienst auch im Netzwerk freigeben, so dass über das Netzwerk von anderen PCs aus darauf zugegriffen werden kann. Diese Funktionen verwende ich allerdings in meinem Szenario nicht.

Auf Knopfdruck

Getreu dem Motto „one task, one tool“, beschränkt sich SANE nur auf Funktionalität, welche das eigentliche Scannen betreffen. Auch Windows-Nutzer kennen das Problem, dass für einen Scanner oft eine eigene Anwendung in der Taskbar neben der Uhr laufen muss, damit die Taster auch die gewünschten Aktionen in Software auslösen können.

Unter Linux ergänzt diese Funktionalität scanbd, welches für verschiedenste Scanner die Tasten und Sensoren abfragen kann und dann beliebige Skripte ausführen kann. Alte Hasen kennen vielleicht noch den Vorgänger scanbuttond. Das etwas Fummelige ist an dieser Stelle das Zusammenspiel mit SANE einzurichten. So darf sich SANE nicht mehr automatisch starten und das USB Gerät blockieren, sondern stattdessen übernimmt der Manager scanbm dies. Diese Komponente prüft dann permanent den Zustand der Taster und kann entsprechend der eingestellten Regeln reagieren und z.B. dann mittels SANE einen Scan auslösen. In diesem Fall wird SANE aber lediglich der Scanner über den sog. net Treiber durchgereicht. Das USB Gerät selbst bleibt weiterhin unter exklusivem Zugriff von scanbd und wird von ihm auch angesteuert.

Trotz der wie üblich sehr guten Anleitung von ubuntuusers.de hatte ich dabei so meine Probleme. Zum einen schien sich SANE permanent trotzdem vorzudrängeln und das Gerät zu blockieren. Zum anderen hatte scanbd wohl einige Berechtigungsprobleme. Auch das unter /etc/scanbd noch einmal die komplette SANE Konfiguration gespiegelt war, verwirrte mich und bereitete Probleme, dass die richtige Konfiguration nicht gefunden wurde. Das klappte erst, als ich in /etc/scanbd/scanbd.conf noch die Zeile saned_env = {„SANE_CONFIG_DIR=/etc/scanbd“} setzte. In den action Abschnitten der Konfiguration lies ich dann immer nur ein einziges Skript aufrufen, was scan.script ist und unter /etc/scanbd/scripts liegt und dem saned Nutzer und der scanner Gruppe gehört.

#!/bin/bash

logger -t "scanbd: $0" "Begin of $SCANBD_ACTION for device $SCANBD_DEVICE"

# printout all env-variables
#/usr/bin/printenv > `mktemp -t scanbd.script.env.XXXXXXXXXX`

#scanimage --format tiff --mode Gray --resolution 300 > /home/pi/Dokumente/scans/scan.tiff

SANE_CONFIG_DIR=/etc/scanbd scanimage -d "$SCANBD_DEVICE" --source="ADF Duplex" --format=tiff --mode Gray --resolution=300 --batch="/home/pi/Dokumente/scans/scan $(date +"%Y_%m_%d_%I_%M") S%d.tiff"

logger -t "scanbd: $0" "End   of $SCANBD_ACTION for device $SCANBD_DEVICE"

Das Skript macht wenig Magisches. Es stößt per SANE den Scan und geht dabei davon aus, dass mehrere Seiten beidseitig nacheinander eingelesen werden sollen. Der jeweilige Dateiname enthält dann immer das aktuelle Datum mit Minuten-Zeitstempel, sowie die fortlaufende Seitennummer (z.B. scan 2021_03_21_01_26 S2.tiff ) Perfekt also, um später die Seiten-Scans je Dokument zu gruppieren und dennoch eindeutige Namen zu haben.

Fazit

Das Ganze läuft so wie ich es mir vorgestellt habe. Ich lege eine Seite ein, drücke den Button am Scanner und erhalte 2 Photos des Schriftstücks binnen weniger Sekunden. Das dabei auch eventuell leere Rückseiten mit gescannt werden, finde ich nicht schlimm, da ich die Bilddateien sowieso noch einmal durchsehe. Mehrseitige Dokumente stelle ich ich dann auch zu einer einzigen multipage-TIFF-Datei zusammen. Einziger Wehmuts-Tropfen ist, dass die

Der Scanner hat auch eine 7-Segment Anzeige, über die man verschiedene Scan-Modi einstellen und im Skript auch abfragen könnte. Darüber könnte man steuern, ob man wirklich doppelseitig bzw. mehrseitig scannen möchte, so dass nicht unnötig leere Bilddateien entstehen. Ich hatte schon die Idee, mit zusätzlichen Wählschaltern noch mehr Information zu erfassen, die über den Dateinamen dann in das DMS wandern sollen (z.B. Empfänger, Art des Dokuments, …). Aber um ehrlich zu sein funktioniert das so auch schon sehr gut, insbesondere dank der Texterkennung und automatischen Regeln für tags.

Author: Matthias
Betreibt dies Blog und probiert so einiges aus Technik herauszuholen. Oft mit Bezug zur Wirklichkeit, aber manchmal auch weil es eben geht ;-) Hat sich von Robotron über Basic, ASM, qC, ... soweit hochgearbeitet, dass er eigentlich gar nicht mehr so oft codet.

7 thoughts on “Einzugsscanner am RPI

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert