Julia Evans recently wrote about the tiny personal programs she’s
written, one of which was
called “getting my scanner to work better.” She links to her wrapper for
scanimage
which got me thinking: is it possible to use scanimage
with my Fujitsu
ScanSnap S1100?
I love this little ScanSnap S1100 for its miniature size and ease of use.
Unfortunately it comes with bloated software which doesn’t quite meet the
privacy trust threshold for me. Since I like the scanner but don’t like the
first-party software, I figured this was a perfect opportunity to see if I
could get scanimage
to work.
Some Googling later, I found the SANE
project, where “SANE” stands for “Scanner
Access Now Easy.” As a macOS user, I immediately searched Homebrew, where I found
sane-backends
,
a package which would ostensibly give me the scanimage
binary and the
backend firmware needed for my scanner.
With my scanner plugged in, I ran scanimage
but got the error scanimage:
no SANE devices found
. Huh? My scanner was definitely plugged in. System
Report on the Mac told me so. The sane-backends
package comes with a
helpful binary called sane-find-scanner
, but I got another error there
too: could not fetch string descriptor: Pipe error
. Not very helpful.
Back to Google, to figure out why the program couldn’t find my scanner. A
number of forums referenced these mysterious .nal
files. I decided to see
if I had this .nal
file in the sane-backends installation. Unfortunately
I did not. There’s a file called etc/sane.d/epjitsu.conf
which referenced
a .nal
file for the Fujifilm S1100 I had plugged in, but the file it
referenced didn’t exist. That’s odd – I would have expected “sane-backends”
to include the backends for the scanners.
A bit more Googling and I found a GitHub repository which contained the
necessary files and I cloned it into the directory where the epjitsu.conf
file was expecting it to be. I re-ran sane-find-scanner
and – hooray! –
it registered. I ran scanimage
and finally got something!
With scanimage
successfully working, I decided to modify Julia’s
scan.sh
script for my needs. I decided to use tiff
as the output format
and use --batch-prompt
so that I could feed the ScanSnap (the default
batch behavior expects you have a feeder scanner which pulls in each page
one at a time without human intervention). I ran my custom script and –
oops! - no convert
binary in sight. This binary is provided by the
imagemagick
package, so back to Homebrew to install that. Once that was
sorted, I successfully made my tiff scans and converted them into a PDF.
I chose TIFF for its quality. When scanning a document, I want it to be
crisp to promote readability and better quality if it gets printed from
these scans. Unfortunately, TIFF files can be massive. A single page was
just over 1MB, and somehow convert
created a PDF file which was 348
MB large – huge when the input was only 40 1MB files. Luckily Preview on
the Mac has a way to fix this. Open the file, then choose “File ->
Export…”. Under the “Quartz Filter” drop-down, there’s an option to
choose “Black & White” or “Grey Tone”. Choose either and export. (I found
that choosing “Reduce File Size” irreparably reduced the quality, YMMV.)
And finally, the saga was complete. I had my 40-page PDF at a reasonable
size! I hope this is useful to others who don’t want to install gigabytes
of software from their scanner’s vendor but can’t find a way past the
default sane-backends
install. Clearly you need to BYOD: bring your own
driver. Once you have that in place, you’re golden!