pct-scanner-script
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
pct-scanner-scripts ist eine Sammlung von Skripten, um einfach Vorlagen zu scannen und (einzelne oder mehrseitige) DjVu, PDF- oder (nur einseitige) JPEG-Dateien, z.B. für Archivierungszwecke zu erstellen. Mehrseitige Scans können automatisch produziert und auch manuell erweitert werden, verwendet werden können sowohl einfache Flachbett-Scanner als auch Geräte mit automatischem Dokumenteinzug (ADF). Über Konfigurationsskripte lassen sich individuelle Arbeitsabläufe für verschiedene Aufgaben steuern, um nicht immer alle gewünschten Optionen auf der Kommandozeile eingeben zu müssen. Damit ist das Skript sehr vielseitig einsetzbar. Es wurde von Jelle de Jong 🇬🇧, von der niederländischen Firma PowerCraft 🇳🇱, entwickelt. Verwendet werden u.a. scanadf (aus dem Paket sane) und PDF/DjVu-Werkzeuge.
Installation¶
Das Programm ist in den Ubuntu-Quellen vorhanden, installiert[1] werden muss das Paket
pct-scanner-scripts (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install pct-scanner-scripts
Oder mit apturl installieren, Link: apt://pct-scanner-scripts
Bedienung¶
Die allgemeine Syntax auf der Kommandozeile[2] lautet
pct-scanner-script [Optionen]
In der "Standardeinstellung" (siehe Beispiele, zweite Zeile) wird ein "lineart"-Scan mit der source
-Option ADF
in einer Auflösung von 600 dpi erstellt, der dann in ein DjVu-Dokument umgewandelt wird. Soll auch noch eine PDF-Version erzeugt werden, muss ggf. vorher in der Konfigurationsdatei /etc/pct-scanner-script.conf (s. u. Abschnitt "Konfiguration") bei dem jeweiligen Block die Option NOPDF=1
entweder gelöscht oder mit einem #
davor auskommentiert werden (NOPDF=0
oder NOPDF=NO
funktionieren leider nicht in allen Versionen). Das Dokument wird anschließend zur Kontrolle in Evince geöffnet. Standard für die Speicherung ist ~/scanscripts, in dem dann die Ordner input, output und processing erstellt werden. Die Verarbeitung der Scans erfolgt über das Skript /usr/lib/pct-scanner-scripts/pct-scanner-script-process.
Das Skript erstellt, wenn es nicht durch die Optionen -p | --nopdf
oder -j | --nodjvu
daran gehindert wird, (mehrseitige) Dateien nach dem Muster document-multi-page-color/grayscale/linart.pdf bzw document-multi-page-color/graysacle/lineart.djvu im Ordner scanscript/output. Ggf. werden in scanscript/processing/jpeg von allen Scans .jpeg-Bilder abgelegt. Es empfiehlt sich, nach Abschluss einer Scanaufgabe die Option -e | --clean
zu verwenden (vorher aber das eigentliche Ergebnis sichern, es wird dabei mit gelöscht!), oder das Verzeichnis hin und wieder manuell zu leeren.
Optionen¶
pct-scanner-script | |
Option | Funktion |
-h , --help , -? | Hilfe |
-l , --lineart | Scannen in Schwarz-Weiß ("lineart") [empfohlen] |
-c, --color | Scannen in Farbe, wenn unterstützt |
-g , --grayscale | Scannen in Graustufen, wenn unterstützt |
-o , --outdir /PFAD/ZUM/SPEICHERVERZEICHNIS | Angabe des Speicherverzeichnis [auf genügend Speicherkapazität achten!] |
-s , --source QUELLE | Einstellung der Scan-Quelle, z.B. ADF oder Flatbed , siehe --search |
-r , --resolution N | Einstellung der Scan-Auflösung in dpi, mögliche Einstellungen siehe --search |
-d , --device GERÄTENAME | Einstellung des Gerätes ("device resolution"), siehe --search |
-m , --resume N | Wiederaufnahme-Zähler für die Seiten-Nummer einstellen |
-e , --clean | Löscht alle Dateien im Speicherverzeichnis |
-p , --nopdf | Keine Erstellung von PDF-Dokumenten [empfohlen] |
-j , --nodjvu | Keine Erstellung von DjVu-Dokumenten |
-a , --search | Suche nach Scannern und den verwendbaren Parametern |
-n , --config KONFIGURATIONSNAME | Verwendung eine Vorgabe-Konfiguration, wenn vorhanden |
-v , --version | Ausgabe der Version und Infos zum Autor |
-b, --verbose | "gesprächige" Ausgabe, liefert mehr Informationen zu den Prozessen |
Beispiele¶
pct-scanner-script --search pct-scanner-script --lineart --outdir /home/[benutzer] --source ADF --resolution 600 --device net:192.168.1.1:hpaio:/usb/Officejet_J5700_series?serial=CN7BOCF3HP04TC pct-scanner-script --resume 11 --lineart --outdir /home/[benutzer] --source ADF --resolution 600 --device net:192.168.1.1:hpaio:/usb/Officejet_J5700_series?serial=CN7BOCF3HP04TC
Verwendung eines Konfigurationsskriptes:
pct-scanner-script --lineart pct-scanner-script --config config0 pct-scanner-script --clean --config config0 --nopdf --verbose
Konfiguration¶
Die Konfiguration des Skriptes erfolgt über die Dateien /etc/pct-scanner-script.conf sowie die Steuerungsdateien im Verzeichnis /etc/pct-scanner-script.conf.d/. Darin können die meisten Optionen eingestellt werden, sodass das Programm nicht mit den Parametern gestartet werden muss. Dabei kann man mit der Option --config
auch bestimmte Abschnitte der Konfigurationsdatei auswählen; --lineart --config MeineKonfiguration
würde die Befehle aus Sektion [lineart-MeineKonfiguration]
aus der gewünschten Konfigurationsdatei verwenden. Innerhalb der Optionsdatei kann mit OPEN=COMMAND
ein externes Programm zur Weiterverarbeitung aufgerufen werden, also z.B. ein Betrachter, oder auch ein direkter Druckaufruf nach Beendigung des Scans (Beispiele in der Datei notes 🇬🇧).
Die Optionen auf der Kommandozeile überschreiben die in den Konfigurationsdateien; Angaben aus Konfigurationsdateien (in /etc/pct-scanner-script.conf.d/) mit höheren Nummern überschreiben diejenigen mit niedrigeren Nummern, nicht aber die auf der Kommandozeile angegebenen.
Dazu ein Beispiel: der Befehl
pct-scanner-script --config lineart1
ruft die (hier für einen gt68xx-Scanner modifizierte) Konfiguration 50configuration, Sektion [lineart1]
in /etc/pct-scanner-script.conf.d auf:
# pct-scanner-script --config lineart1 [lineart1] LINEART=1 DEVICE=gt68xx SOURCE=Flatbed RESOLUTION=300 OUTDIR=${HOME} NOPDF=1 OPEN=$(which djview)
Das Ergebnis wird gleich in DjView geöffnet.
Wäre die Datei 60configuration vorhanden, in der in Sektion [lineart1]
eine Auflösung von 150 dpi stünde, würde dieser Wert verwendet werden. Der Befehl
pct-scanner-script -r 600 --config lineart1
hätte aber absolute Priorität, und würde statt dessen die Auflösung auf 600 dpi setzen.
In den Konfigurationsdateien werden in einem Editor[3] die gewünschten Parameter als Zahlenwert 1
für "Verwenden" nach der Angabe geschaltet (z.B. NOPDF=1
); oder als für das Backend verwendbares Kommando (z.B. DEVICE:gt68xx
), nähere Informationen liefert die Verwendung der Option --search
sowie ein Blick in die mitgelieferten Konfigurationsdateien.
Problemlösungen¶
Erstellung von Riesen-PDFs¶
Die Größe der erzeugten PDF-Dateien entspricht bei Eingabe von DIN-A4 dem Format RA0 (mehr als ein Quadratmeter!) (siehe Erläuterung in PDF). Um die Größe auf das tatsächliche Eingabeformat zurückzuführen, in eine Editor mit Root-Rechten die Datei /usr/lib/pct-scanner-scripts/scanner-script-process direkt vor den Vorkommen von
$STRACE convert "$sourcefile" ...
die Zeile
SIZE=`identify "$sourcefile" | cut -d " " -f 3 `
einfügen, und in den entsprechenden Zeilen den convert
-Befehl nach "$sourcefile"
um die Optionen
-resize $SIZE -units PixelsPerInch -density "$SCAN_RES"x"$SCAN_RES"
ergänzen. So bleibt die Größe der PDF-Dateien beim Eingangswert/Scangröße; eine Texterkennung ist damit für die Ausgabedateien problemlos möglich.
Nicht verwendbare Optionen¶
Das Skript verwendet für den scanadf-Aufruf ggf. Optionen, die für das eingesetzte Backend nicht nutzbar sind (z.B. die Option --source
für einen Scanner wie Mustek 1200 UB Plus oder Canon LiDE 220, die zwar bei der Ausgabe zu --search
angezeigt, aber als [inactive]
beschrieben wird). Um trotzdem einen derartigen Scanner verwenden zu können, werden in der Datei /usr/bin/pct-scanner-script (in einem Editor mit Root-Rechten) bei den scanadf-Aufrufen die Option --source $SOURCE
gelöscht werden, weil sonst der Scanprozess nicht startet, und das Programm mit der Meldung
scanadf: attempted to set inactive option source
abgebrochen wird.
Hinweis:
Trotzdem muss für einen Flachbett-Scanner ohne Dokumenteneinzug im Aufruf eine Option --source flatbed
oder den Konfigurationsdateien eine SOURCE=Flatbed
-Angabe erfolgen, da sonst keine --end-count
-Wert gesetzt wird - und so der Flachbett-Scanner ununterbrochen weiter scannt! Für ADF-Scanner ist das kein Problem, es werden, wenn nichts anderes angegben ist, so lange Scans durchgeführt, bis sich im Dokumenteineinzug keine Seiten mehr befinden, und damit beendet sich das Programm dann selbstständig.
DjVu-Dateien werden nicht erstellt¶
Ggf. gibt es Probleme, DjVu-Dateien zu erstellen. Die im pct-scanner-script-process eingesetzte scanadf-System-Variable $SCAN_RES
(siehe Manpage für scanadf) wird aus nicht geklärten Gründen immer als "0" ausgegeben, was dazu führt, dass eine DjVu-Datei mit dieser Auflösung erstellt werden soll, was schlichtweg nicht möglich ist. Abhilfe schafft hier der (laut Entwickler allerdings nicht ganz saubere) Umweg, die $RESOLUTION
-Variable aus dem Hauptskript zu exportieren. Dazu integriert man
[ ! -z "$RESOLUTION" ] && export RESOLUTION="$RESOLUTION"
in der function setup_environment()
-Sektion im pct-scanner-script (ca. Zeile 300). In pct-scanner-script-process wird am Anfang (als Zeile 30) mit
SCAN_RES=$RESOLUTION
die benötigte SCAN_RES
-Variable neu gesetzt, und entspricht dann der angegebenen Auflösung. Alternative Lösung: Im process-Skript die Auflösung manuell festlegen, was aber zu einer starren Auflösungsgröße führt.
Bei weiteren Verweisen auf unbrauchbare Optionen können diese in den Skripten (Editor mit Root-Rechten verwenden) auskommentiert/gelöscht werden. Hinweise auf derartige Probleme liefert die Verwendung der --verbose
-Option, mit deren Ausgabe man ggf. Inkompatibilitäten erkennen kann, oder der Aufruf mit
bash -x pct-scanner-script [Optionen]
der eine noch umfangreichere Ausgabe zu den vorgenommenen Schritten aufzeigt.
Die Log-Datei status.log, die im Verzeichnis scanscript/output/ angelegt wird, ist leider in diesen Fällen nicht sonderlich hilfreich, da dort nur ausgegeben wird, was passiert sein sollte, nicht was wirklich passiert ist.
Erweiterte Möglichkeiten¶
Hinweis:
Diese Beschreibungen beziehen sich auf die Version aus dem aktuellen Entwicklungszweig ⮷, sie sollten z.T. mit der nächsten offiziellen Veröffentlichung in das Programm integriert werden. Die Entwicklung stagniert aber, bis auf kleinere bug-Fixes hat sich seit Erstellung des Artikels (Sommer 2010) nicht viel getan - es wurde noch die Möglichkeit aufgenommen , eine benutzerspezifische Konfigurationsdatei ~./.pct-scanner-script.conf zu verwenden, die Vorrang vor den anderen Konfigurationseinstellungen hat. Außerdem wird auf die Erstellung einzelner .jpg-Dateien verzichtet.
Die Entwicklung des Programms ist wohl (Stand April 2019) endgültig eingestellt worden.
Beziehen kann man die letzte Version mit dem Befehl
svn checkout https://secure.powercraft.nl/svn/packages/trunk/source/pct-scanner-scripts/pct-scanner-scripts-devel/ pct-scanner-script-x.x.x
Ein Paket lässt sich daraus allerdings nicht ohne Weiteres erstellen, die entsprechenden Dateien können aber mit Root-Rechten[4] in die jeweiligen Verzeichnisse kopiert werden. Die Verwendung des makefile führt auch nur zum Eintrag einer ggf. darin geänderten Versionsangabe in den relevanten Skripten.
Größe, Schwellwert, Gamma-Wert¶
Für die Entwicklerversion ist die Möglichkeit vorgesehen, auch andere Optionen, die das verwendete Backend bietet, einsetzen zu können. Sowohl in /etc/pct-scanner-script.conf als auch in den Dateien im Unterverzeichnis /etc/pct-scanner-script.conf.d/ kann eine Zeile in der Art
OPTIONS="-l 5.000mm -t 5.000mm -x 200.000mm -y 275.000mm --threshold 163 --gamma-value 1.75"
verwendet werden, die auch weitere für das jeweilige Backend verwendbare Optionen beinhalten kann (Option --search
listet die Möglichkeiten auf). Dabei können die als [inactive]
gekennzeichneten Optionen meist nicht verwendet werden; das ist z.T. auch vom verwendeten Scan-Modus abhängig. Das Beispiel dient zur Anpassung eines Schwarz-Weiß-Scans, für den die Optionen --treshold 163
und --gamma-value 1.75
verwendet werden, außerdem beginnt der Scanbereich erst jeweils 5 mm von oben und links versetzt, die Breite ist auf 200, die Länge auf 275 mm begrenzt (-l 5.000mm -t 5.000mm -x 200.000mm -y 275.000mm
).
Encodierung mit didjvu, Texterkennung mit ocrodjvu¶
Das Skript lässt auch den Einsatz des sehr leistungsfähigen DjVu-Encoders didjvu zu, außerdem kann mit ocrodjvu auch gleich eine Texterkennung für die DjVu-Dateien erfolgen. Ggf. liefern die aktuellen Versionen dieser Programme bessere Ergebnisse als die in den Quellen vorliegenden Versionen, die oft veraltet sind. Hinweise dazu in den entsprechenden Wiki-Artikeln.
Farbscans¶
Für den Aufruf des Encoder und der Texterkennung aus pct-scanner-script-process wird in der Sektion function process_color()
zur Encodierung eines Farbscans in eine DjVu-Datei die Zeile
c44 -dpi $SCAN_RES "$sourcefile" $OUTDIR/scanscript/processing/document-single-page-$filename.djvu $EXEC_VERBOSE
durch
didjvu encode -o $OUTDIR/scanscript/processing/document-single-page-noocr.djvu --dpi $SCAN_RES "$sourcefile" $EXEC_VERBOSE ocrodjvu --engine tesseract --language deu -o $OUTDIR/scanscript/processing/document-single-page-$filename.djvu $OUTDIR/scanscript/processing/document-single-page-noocr.djvu $EXEC_VERBOSE
ersetzt. Da ocrodjvu keine Ausgabedatei mit dem Namen der Eingabedatei erstellen kann, wird zunächst mit didjvu eine temporäre "noocr"-Datei erstellt, die dann mit der Texterkennung wieder in die weiterzuverarbeitende Datei document-single-page-$filename.djvu umgewandelt wird.
Graycsale-Scans¶
Grayscale-Scans lassen sich ebenfalls mit didjvu unter der Verwendung der Option --fg-crcb none
und --bg-crcb none
erstellen, der Aufruf erfolgt entsprechend durch Ersetzung der Zeile
c44 -crcbnone -dpi $SCAN_RES "$sourcefile" $OUTDIR/scanscript/processing/document-single-page-$filename.djvu $EXEC_VERBOSE
in der Sektion function process_grayscale()
durch
didjvu encode -o $OUTDIR/scanscript/processing/document-single-page-noocr.djvu --dpi $SCAN_RES --fg-crcb none --bg-crcb none "$sourcefile" $EXEC_VERBOSE ocrodjvu --engine tesseract --language deu -o $OUTDIR/scanscript/processing/document-single-page-$filename.djvu $OUTDIR/scanscript/processing/document-single-page-noocr.djvu $EXEC_VERBOSE
Schwarz-Weiß-Scans¶
Für "lineart" liefert der standardmäßig verwendete Encoder cjb2 🇬🇧 ggf. bessere Ergebnisse als didjvu (geringere Dateigrößen, da keine Hintergrundebene erstellt wird), entsprechend wird in function process_lineart()
die Zeile
cjb2 -verbose -clean -dpi $SCAN_RES "$sourcefile" $OUTDIR/scanscript/processing/document-single-page-$filename".djvu $EXEC_VERBOSE
durch die Zeilen
cjb2 -verbose -clean -dpi $SCAN_RES "$sourcefile" $OUTDIR/scanscript/processing/document-single-page-noocr.djvu $EXEC_VERBOSE ocrodjvu --engine tesseract --language deu -o $OUTDIR/scanscript/processing/document-single-page-$filename.djvu $OUTDIR/scanscript/processing/document-single-page-noocr.djvu $EXEC_VERBOSE
ersetzt. Der Aufruf kann natürlich jeweils um weitere Optionen für die Programme ergänzt werden (siehe die jeweilige Manpage).
ocrodjvu-Einstellungen¶
Die Einstellungen für ocrodjvu zu dem gewünschten OCR-Engine, Sprache etc. findet man in den ocrodjvu-Optionen, in den Beispielen wird tesseract-ocr für deutschsprachige Texte verwendet. Allerdings kann es hier allgemein zu Problemen kommen, wenn die Auflösung zu hoch gewählt wurde, empfohlen werden daher höchstens 300 dpi, die als Werte in pct-scanner-sript.conf oder eigenen Konfigurationedateien verwendet werden sollten. Ggf. hilft es, hinter die Optionen für ocrodjvu ein </dev/null
zu verwenden. Wenn höhere Auflösungen verwendet werden (im Skript wird standardmäßig 600 dpi
eingesetzt) kann die Verarbeitung der einzelnen Seiten sehr lange dauern! Unter Cuneiform kommt es dabei recht häufig zu Abstürzen, tesseract liefert momentan verlässlicher gute Ergebnisse.
Falls eine Texterkennung nicht gewünscht ist, kann die ocrodjvu-Zeile natürlich weggelassen werden, dann muss aber in den Encoderzeilen jeweils noocr
wieder durch $filename
ersetzt werden, damit die Weiterverarbeitung gewährleistet ist.
Alternativen¶
Mit gscan2pdf können auch mehrseitige DjVu-Dateien angelegt werden, allerdings ist eine Segmentierung nicht möglich.
xsane2djvu ist ein Wrapper, um direkt aus XSane heraus DjVu-Dateien mit einer integrierten Texterkennung zu erstellen. Es können direkt ein- oder mehrseitigen Dokumente erstellt werden, zur Encodierung können verschiedene Programme genutzt werden.
djvubind ist ein Kommandozeilenprogramm, mit dem aus .tiff-Vorlagen DjVu-Dokumente (z.B. als E-Books) erstellt werden können. Das Programm kann allerdings momentan nur schwarz-weiße .tiff-Dateien verarbeiten (z.B. Scan Tailor-Ausgaben); die Texterkennung erfolgt standardmäßig mit tesseract-ocr.
Links¶
Datei-Verzeichnis 🇬🇧 auf powercraft.nl
Entwickler-Seite 🇬🇧 (archivierte Version von 04/2016)