While thrifting, I found a nice flatbed scanner for a 5 euro's. A nice compact Canon LIDE 220, which apparently is still available new! We haven't had a decent flatbed scanner for years as we mostly use camera scanning software on iPads and such, but sometimes it is nice to be able to scan at flatbed resolutions.
My plan was to place this scanner in the network by sharing it via the sane project on a raspberry pi. Surely, how hard would it be to use that shared scanner on other non-linux machines? Well, it turned out to be frustrating and eventually in need of a hack.
Now setting up sane is trivial. It is a perfectly managed software package that does a fantastic job of supporting a ton of scanners, old and new. Basically it is CUPS for scanners. So on my desktop development pi, I had the scanner up and running in minutes. Good, so now for the OSX side of the equation.
There is a project that promised to expose a sane'd scanner to the TWAIN interface that OSX uses. The TwainSane project. Basically it is the sane project for OSX with some glue logic to attach it to the relevant interfaces. Problem is, the project is in disrepair and even worst, it does not work! The sane part is fine, it sees the scanner on the network and the various attributes it understands, but it simply does not provide a device to the various applications like image capture or photoshop. Well, that makes the whole endeavour pretty pointless!
Using imagescan from the command line, it was clear that it was perfectly possible to scan an image over the network, but other application would have non of that. There was one exception though. Libreoffice did somewhat support the sane environment and presented me with a basic scanner window with previews, settings and other options. The problem however was that is was pure garbage. It did work somewhat, but setting could not be altered because the interface was a mess. This and the failure of the twain interface started a trend. A trend that I have seen all to often in open source. The failure of making something simple work.
I tried a couple of frontend packages and all failed in one way or another. Either being completely unable to find the scanner, when it was apparent that it was working perfectly fine, and in some cases, finding the scanner, but being unable to use it for some daft reason. All the front ends (including xsane, which I installed via brew as a final ditch effort) were frustrating and useless. Most of them have not seen updates in 3 to 5 years. I have a theory why that is and why sane is such a quality project while all frontends are pure unadulterated spittle.
For Linux, if you want to scan a document in any capacity, you probably end up using the sane project. As I said, sane is to scanners what CUPS is to printers. But this isn't true in the windows or mac realms. Here the majority of scanners are combo devices that provide an interface via their driver. There is no need to have a all encompassing environment that can cater to every scanner users needs. With the arrival of cheap printer scanner combination units, the need for a robust frontend for sane on non Linux platforms simply vanished.
This left me with 2 options. Either use some web based sane interface which would give laptops and tablets access to a web interface that controlled the scanner. This of course is extremely ugly, or make some sort of front end that is more OSX like.