TWAIN, WIA, ISIS and SANE, are all scanning drivers that support acquiring physical images from scanners and storing the digital images on a computer. Although they are trying to achieve the same task basically, a popularity search shows that TWAIN is leading the game.
These four scanning drivers have some different scanner functionalities and compatibilities, which makes them suitable for different situations. Let’s take a look at them one by one.
TWAIN
It has three key elements, the Application software, the Source Manager software, and the Data Source software. The Source Manager Interface provided by TWAIN allows your application to control data sources, such as scanners and digital cameras, and acquire images, as shown in the figure below.
Although nearly all scanners contain a TWAIN driver that complies with the TWAIN standard (the latest version is 2.4), the implementation of each TWAIN scanner driver may vary slightly in terms of scanner setting dialog, custom capabilities, and other features. It is good if you want to use features specific to a particular scanner model, but if you want your application’s scanning behavior to be consistent on different scanners, you need to be wary of customized code.
The TWAIN standard is now evolving to the next generation, called TWAIN direct. The TWAIN working group, that Dynamsoft is an associate of, claims that with TWAIN direct vendor specific drivers will no longer be needed. The application will be able to communicate directly with scanning devices. The best of TWAIN direct is still to come.
If you are interested in a TWAIN scanning SDK, you can take a look at the SDKs we provide:
- Dynamic Web TWAIN (JavaScript/HTML5 TWAIN SDK, for web-based applications)
- Dynamic .NET TWAIN (.NET TWAIN SDK, for desktop-based applications)
WIA
Both TWAIN and WIA can work with scanners and cameras as long as the driver is installed. Generally, if your application is going to interact with scanners most of the time, especially if old scanners need to be supported, TWAIN is recommended. For cameras, WIA offers better support. But, sometimes TWAIN based applications can communicate with WIA devices, such as scanners or cameras, via the “TWAIN compatibility layer”.
There are other differences between TWAIN and WIA. TWAIN has three transfer modes(native, memory, file) while WIA has only two (memory, file). TWAIN enables device vendors to create a customized user interface for each driver. WIA uses a simplified user interface for all devices, based on a scripting object model. If you only need basic scanning functions, WIA is enough. If you need to use more sophisticated features of a scanner, such as different options for each page when scanning in duplex mode, TWAIN should be your choice.
ISIS
Unlike TWAIN, produced by a non-profit organization, ISIS doesn’t come for free. Scanner vendors need to pay a royalty fee in order to use the ISIS driver. Although ISIS was originally targeted for a production environment (higher volumes, supporting advanced features of high-end scanners), the high cost is driving vendors away. As a result, ISIS is not popular in enterprises.
Moreover, despite ISIS’s reputation in performance, many developers also claimed that no obvious technical advantage is identified when comparing ISIS to TWAIN.
SANE
Unlike TWAIN, SANE separates the user-interface (front-end) from the driver of a device (backend). The SANE driver only provides a backend interface, with the hardware and the use of a number of “options” to drive each scan. One example of an option to define the scan area is as below,
Conclusion
Below is a comparison table for these 4 drivers that summarizes what was mentioned above.