Comparison of document scanning protocols.

Blog category: TWAIN.NET

August 25, 2025

Modern document processing systems are increasingly integrated with peripheral devices to obtain digital copies of paper media. The key issue in developing such solutions is the choice of a protocol for interaction with an image/document scanner. In this article, we will analyze the main standards, evaluate their advantages and limitations, and consider how to implement their support using VintaSoft TWAIN .NET SDK.

1. Scanning documents with TWAIN scanners

TWAIN is a standard that defines a software protocol and API (application programming interface) for communication between software applications and imaging devices such as scanners and digital cameras.

TWAIN is a standard and therefore ensures uniformity of interaction between different devices and applications, simplifying the development and use of software for working with images.


1.1. Supported operating systems

The TWAIN standard declares support for Windows, Linux, macOS operating systems.


1.2. Availability of a device driver

For work with TWAIN device you must install a TWAIN driver in the operating system.

The TWAIN driver for an image scanner is in most cases developed by the manufacturer of the image scanner - thanks to this, the TWAIN driver provides access to all capabilities of the image scanner and the maximum speed of working with the image scanner is ensured.

The TWAIN standard is the most popular and basic standard for working with image scanners in the Windows operating system. Almost all image scanners have a TWAIN driver for Windows.

At the moment, VintaSoft employees have seen really working TWAIN drivers for Linux from Kodak only.

VintaSoft employees do not know anything about the existence of TWAIN drivers for macOS for modern image scanners. On the Apple forums, you can find information that Apple officially stopped supporting the TWAIN standard in its macOS operating system around 2019.


1.3. Transferring an image from an image scanner to a client application

The TWAIN standard defines 3 modes for transferring a scanned image from an image scanner to a client application. The "Native" mode allows to transfer an image as a Windows Bitmap object. The "Memory" mode allows to transfer an image via memory, i.e. the data is transferred as a byte array that contains "raw" image data or encoded (for example, CCITT4 or JPEG) image data. The "File" mode allows to save the scanned image directly to a file. The presence of three modes allows to select the mode that best matches the logic of the client application and achieves maximum performance and flexibility.


1.4. Working with image scanner capabilities

The TWAIN standard contains over 700 pages of text and describes in great detail the process of interaction between the TWAIN driver and the application. The TWAIN standard provides the ability to work with almost all capabilities of an image scanner.


1.5. The image scanner speed

Using the TWAIN standard provides excellent speed of work with an image/document scanner.


1.6. Technology support

The TWAIN standard is developed by the "TWAIN Working Group" (website https://twain.org) - a non-profit organization that supports and develops the TWAIN standard. This group includes various image scanner manufacturers and software development companies.


2. Scanning documents with SANE scanners

SANE (Scanner Access Now Easy) is an open source Application Programming Interface that provides a standardized interface for accessing raster image scanners. SANE allows to acquire images from various devices, such as flatbed scanners and cameras. SANE implements a clear separation of the device driver from the device user interface.


2.1. Supported operating systems

SANE API is the most popular and basic standard for working with image scanners on the Linux operating system.


2.2. Availability of a device driver

Almost all image scanners have a SANE driver for Linux.

There are SANE drivers from the image scanner manufacturer or from the SANE community. SANE is an API and defines only the architecture of the SANE driver. The specific implementation of the SANE driver depends on the driver developer. Most SANE drivers are developed by developers from the SANE community.

For work with SANE device you must to install the SANE driver into Linux operating system. The list of devices that support the SANE API can be found here: http://www.sane-project.org/sane-supported-devices.html


2.3. Transferring an image from an image scanner to a client application

The SANE device transfers image data through memory, i.e. the scanned image data is transferred as an array of bytes, which contains the "raw" image data.


2.4. Working with image scanner capabilities

The document that defines the SANE API is not large and defines the functionality for basic work with the image scanner, i.e. the SANE API defines an API for simple image acquisition without using the advanced features of the image scanner. At the same time, nothing prevents the SANE driver developer from implementing support for advanced capabilities, but these will be capabilities outside the SANE API.


2.5. The image scanner speed

Using the SANE API ensures good performance with the image/document scanner.


2.6. Technology support

The SANE Project (website http://www.sane-project.org) is an open source project, which allows its source code to be freely modified and distributed for community collaboration and to facilitate ongoing improvements and updates.


3. Scanning documents with eSCL scanners

eSCL (eXtensible Scanner Control Library) is a standard developed by the Mopria Alliance that defines an image scanning protocol to enable wireless scanning on various devices without the need to install drivers. The eSCL protocol uses HTTP(S) and XML to communicate between the image scanner and the application that uses the image scanner.


3.1. Supported operating systems

The eSCL protocol can be used on Windows, Linux, macOS, Android. The eSCL protocol can use a wired or wireless network.


3.2. Availability of a device driver

For work with eSCL device you do not need to install a driver into the operating system. Typically, an eSCL device is a Linux device running a web server that serves requests to the device using the eSCL protocol. The web server also provides a web interface that allows the user to configure scanning parameters and conveniently manage image scanning tasks via a web browser.

A list of devices that support the eSCL protocol can be found here: https://mopria.org/it/certified-products


3.3. Transferring an image from an image scanner to a client application

The eSCL standard specifies that any eSCL device must support transferring a scanned image as a JPEG or PDF stream, i.e. in order for a client application to receive a scanned image from an image scanner, the following steps are performed:

If the scanned image needs to be saved immediately to a file or database, then the process of transferring the image from the image scanner to the client application is optimal. If you need to view the scanned image after scanning, you will have to decode the JPEG image or render the PDF page - this is a disadvantage, because in principle there is an unnecessary intermediate "encoding-decoding" of the scanned image.

The eSCL standard also defines the ability to receive "raw" image data from an image scanner, but this option is not mandatory and is not supported by all eSCL scanners.


3.4. Working with image scanner capabilities

The eSCL protocol specification contains 70+ pages and defines the functionality for basic work with an image scanner, i.e. the eSCL protocol is suitable for simple image scanning without using the advanced features of an image scanner.


3.5. The image scanner speed

The speed of image scanning depends on the speed of the network through which the eSCL image scanner and the client application are connected. In most cases, using the eSCL protocol provides good speed of work with an image/document scanner.


3.6. Technology support

The Mopria Alliance (website https://mopria.org) is an organization of printer manufacturers and software developers that creates and promotes universal standards for wireless printing and scanning from mobile devices. Mopria standards enable devices certified to them to find each other on the network and exchange data, providing simple and convenient printing and scanning from a variety of mobile devices such as smartphones and tablets.


4. Scanning documents with WIA scanners

WIA stands for Windows Image Acquisition. It is a component of the Windows operating system that allows software to communicate with imaging devices such as scanners and digital cameras. WIA provides an API (Application Programming Interface) for developers to create applications that can access images from these devices.


4.1. Supported operating systems

WIA is a component of the Windows operating system and therefore WIA compliant devices can only be used on Windows.


4.2. Availability of a device driver

You do not need to install a WIA driver for a WIA device to work, because a standard WIA driver is already installed in the Windows operating system. A scanner that supports WIA is ready to work immediately after installation in Windows.


4.3. Transferring an image from an image scanner to a client application

WIA API defines 2 modes for transferring a scanned image from an image scanner to a client application. The "Memory" mode allows to transfer an image via memory, i.e. the data is transferred as an array of bytes. The "File" mode allows to save the scanned image directly to a file.


4.4. Working with image scanner capabilities

Information about WIA API is available on the Microsoft website: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/wia/-wia-wia-application-programming-interface

WIA API defines an API for easily images scanning without using advanced image scanner features.


4.5. The image scanner speed

Using WIA API provides good performance with an image/document scanner.


4.6. Technology support

WIA API is supported by Microsoft.


5. Scanning documents with ICA scanners

ICA stands for Image Capture. ICA is an Apple framework that is designed to "search for media devices and programmatically control them from your application."

The ICA framework is part of the macOS operating system and is therefore the most popular and basic standard for working with image scanners in the macOS operating system.

For work with an ICA device you must install the ICA driver in the macOS operating system.


6. Scanning documents with ISIS scanners

The ISIS scanning standard is an "Image and Scanner Interface" specification developed by Pixel Translations (now part of OpenText) for driving imaging devices such as scanners. It is known for its high performance, modularity, and complete specification for integrating high-speed scanners into applications, allowing them to operate at or above their rated speed. Unlike the more common TWAIN standard, ISIS was initially targeted at production environments and required vendors to pay a royalty for the driver, making it less popular in the enterprise sector.

For work with an ISIS device the ISIS driver must be installed into the operating system.

ISIS drivers were originally developed by Pixel Translations, which later became part of EMC (now OpenText). Scanner manufacturers pay EMC to use the ISIS driver and include it with their hardware, or they purchase development kits and sample code from companies like DELL EMC Captiva to create their own ISIS drivers.

Using the ISIS driver provides the best/maximum speed for your document scanner.


7. Which image scanning protocol to choose?

The choice of scanning protocol should be based not only on the technical characteristics of the devices, but also on the actual operating conditions, business requirements, and infrastructure limitations.

Scanner type and model:

Tip: Before you start developing, collect a list of scanner models that your software will work with and check their specifications on the manufacturer's website.


Quality and speed requirements:


Features of the workflow:

Example: if you have an archive with thousands of double-sided sheets, the lack of duplex support can double the operating time.


Implementation and support costs:
For starting a project with a limited budget, TWAIN is the most rational choice.


8. Implementation in VintaSoft TWAIN .NET SDK

VintaSoft TWAIN .NET SDK is a professional .NET library for image scanning, which allows you to create a .NET application to control TWAIN image scanners in Windows and Linux, SANE image scanners in Linux, eSCL image scanners in Windows and Linux.

Also VintaSoft TWAIN .NET SDK provides JavaScript API and VintaSoft Web TWAIN service, which allow a web developer to quickly and easily create a cross-browser web application for receiving images from TWAIN image scanners in Windows and Linux, SANE image scanners in Linux, eSCL image scanners in Windows and Linux. The developed web application can be used in all major web browsers.

Choosing a scanning protocol is a strategic decision for developers of document management systems. TWAIN remains a universal standard, and VintaSoft TWAIN .NET SDK provides convenient and flexible implementation, supporting TWAIN, WIA (via TWAIN), SANE, eSCL. With proper integration, you can achieve stable operation with scanners from different manufacturers and in different environments - from desktop applications to cloud services.