Sane Batch Scan Workaround

Fri, 10. Jul 2009

Categories: de sysadmin Tags: bash ImageMagick OS X printf SANE scanimage Scanner

Obwohl scanimage aus dem SANE Werkzeugkasten in der (aktuellen?) OS X Version

1$ scanimage --version
2scanimage (sane-backends) 1.0.21cvs; backend version 1.0.21

(installiert nach http://blog.mro.name/2008/12/scanner-mustek-1200-cu-unter-mac-os-x-105/) beim Versuch per „batch“ mehrere Seiten zu scannen jeweils nach Seite 1 aus der Kurve fliegt:

1$ scanimage --batch-start=45 --batch-count=16 --batch --batch-prompt \
2--format=pnm --mode Color --resolution 300
3...
4Scanning page 46
5scanimage: sane_start: Invalid argument

und das auch ein bekanntes Problem zu sein scheint, gibt’s einen Workaround per selbstgebautem Shell-Script:

 1#!/bin/sh
 2# http://blog.mro.name/2009/07/sane-batch-scan-workaroun/
 3pre=scan-`date "+%Y-%m-%dT%H:%M"`
 4echo "To create a pdf, call after scanning the pages:"
 5echo "    convert $pre*.png -despeckle -density 100x100 -compress JPEG -quality 50 -page a4 $pre.pdf"
 6for ((i=0;i < 100;i++))
 7do
 8  echo "Place document no. $i on the scanner."
 9  echo "Press <RETURN> to continue, <q> + <RETURN> to quit."
10  echo \\a
11  read key
12  if [[ $key == "q" || $key == "Q" ]] ; then
13    break
14  fi
15  dst=$pre-page$(printf %03d $i)
16  scanimage --mode Gray --resolution 300 --buffer-size=1024 --progress > $dst.pnm
17  # background conversion:
18  (convert $dst.pnm -level 15,85% -density 300x300 -type grayscale \
19    -resample 100x100 $dst.png && rm $dst.pnm) &
20done
21ls -l $pre*

é voilá.

Um das ganze dann noch in ein PDF moderater Größe zu verwandeln genügt (ImageMagick z.B. via darwinport vorausgesetzt):

1$ time convert *.png -despeckle -density 100x100 \
2-compress JPEG -quality 75 -page a4 out.pdf
3
4real  3m39.867s
5user  2m55.069s
6sys 0m9.628s

.