文档扫描功能是软件开发者建立一个网站,内容管理系统,或办公自动化系统的重要组成部分。 市场上有几种不同的扫描驱动程序:
- TWAIN
- WIA
- ISIS
- SANE
当然,对于什么是最佳解决方案,您可能会感到困惑。TWAIN,WIA,ISIS和SANE都是支持从扫描仪获取物理图像并将数字图像存储在计算机上的扫描驱动程序。 尽管他们基本上试图实现相同的任务,但搜索热门度显示TWAIN处于领先地位。
这四个文档扫描驱动程序具有一些不同的扫描仪功能和兼容性,这使其适用于不同情况。 让我们逐一介绍他们。
TWAIN
TWAIN是一种扫描协议,最初被用于Microsoft Windows和Apple Macintosh操作系统,并且从2.0版开始添加了Linux / Unix支持。 第一版发布于1992年。它被设计为图像处理软件与扫描仪或数码相机之间的接口。
TWAIN是文档扫描仪中最常用的协议和标准。 在大多数情况下,用户应该可以为他们的扫描仪找到免费的TWAIN驱动程序,或者可以从制造商的网站上轻松找到TWAIN驱动程序,比如佳能,惠普,爱普生,柯达,施乐等。
该软件具有三个关键要素:
- Applictaion
- Source Manager
- Data Source (数据源)
TWAIN提供的Source Manager接口使您的应用程序可以控制Data Source,例如扫描仪和数码相机,并获取图像,如下图所示。
尽管几乎所有扫描仪都包含符合TWAIN标准的TWAIN驱动程序,但是每个TWAIN扫描仪驱动程序在实现扫描仪设置对话框、自定义功能和其他功能方面可能会略有不同。如果您使用特定扫描仪型号的功能,那没有问题,但是,如果您希望应用程序的扫描行为在不同的扫描仪上保持一致,则需要警惕自定义代码。
TWAIN标准现在正在演变为下一代——TWAIN direct。 TWAIN工作组声称,通过TWAIN direct将不再需要供应商提供特定的驱动程序。 该应用程序将能够直接与扫描设备进行通信。 (Dynamsoft是TWAIN工作组的成员之一。)目前TWAIN direct仍然在完善中。
如果您对TWAIN扫描SDK感兴趣,可以查看我们提供的SDK:
- Dynamic Web TWAIN(JavaScript / HTML5 TWAIN SDK,用于基于Web的应用程序)
- Dynamic .NET TWAIN(.NET TWAIN SDK,用于基于桌面的应用程序)
WIA
WIA (Windows Image Acquisition)是自Window Me以来由Microsoft引入的,是Windows操作系统随附的驱动程序平台,包括Windows 7,Windows 8等。它使应用程序能够从各种数码相机和扫描仪获取图像。 听起来与TWAIN非常相似,不是吗?
只要安装了驱动程序,TWAIN和WIA都可以与扫描仪和照相机一起使用。 通常,如果您的应用程序大多数时候将要与扫描仪进行交互,尤其是在需要支持旧扫描仪的情况下,建议使用TWAIN。 对于相机,WIA提供更好的支持。 但是,有时基于TWAIN的应用程序可以通过“TWAIN compatibility layer”与WIA设备进行通信,例如扫描仪或照相机。
TWAIN和WIA之间还有其他区别。 TWAIN具有三种传输模式(native, memory, file),而WIA仅具有两种传输模式(memory, file)。 TWAIN使设备供应商可以为每个驱动程序创建自定义的用户界面。 WIA根据脚本对象模型对所有设备使用简化的用户界面。 如果只需要基本的扫描功能,则WIA就足够了。 如果您需要使用扫描仪的更高级功能,例如在双面模式下扫描每页时使用不同的选项,则应选择TWAIN。
ISIS
ISIS(Image and Scanner Interface Specification)是Pixel Translations(如今的EMC Captiva)在1990年开发的专有扫描仪接口。
与非营利组织制作的TWAIN不同,ISIS并非免费提供。 扫描仪供应商需要支付版权费才能使用ISIS驱动程序。 尽管ISIS最初是针对生产环境(更高的产量,支持高端扫描仪的高级功能)而设计的,但高昂的成本却使供应商望而却步。 因此,ISIS在企业中并不受欢迎。
此外,尽管ISIS在性能方面享有盛誉,但许多开发人员还声称,将ISIS与TWAIN进行比较时,没有发现明显的技术优势。
SANE
SANE (Scanner Access Now Easy) 是UNIX(包括GNU / Linux)中常用的应用程序编程接口(API)。 SANE是一个开源项目。 您可以从http://www.sane-project.org/source.html下载其源代码。
与TWAIN不同,SANE将用户界面(前端)与设备驱动程序(后端)分开。SANE driver只提供一个后端接口,通过硬件和使用多个“options”来驱动每次扫描。定义扫描区域的option示例如下所示,
这种分离的实现方式使SANE非常适合网络扫描方案,在该方案中,您将所有计算机都连接在LAN中,而扫描仪仅作为共享扫描仪连接到一台或两台计算机上。 此外,无需像使用TWAIN一样使用Win32或Mac API绑定特定的GUI,SANE易于实现一个由命令行驱动的界面。 另一方面,SANE确实有一些GUI,例如XSane,phpSANE等,您可以根据需要使用。 或者,您可以为一个扫描仪专门定制一个GUI。
总结
那么,现在您已经有了一个主意并下定了决心吗?
下面是这四个驱动程序的比较表,总结了上面提到的内容。
TWAIN | WIA | ISIS | SANE | |
---|---|---|---|---|
扫描功能 | ✮✮✮✮ | ✮✮✮ | ✮✮✮✮✮ | ✮✮✮✮ |
数码相机支持 | ✮✮✮✮ | ✮✮✮✮✮ | ✮✮ | ✮ |
操作系统支持 | Windows, Mac OS, Linux/Unix | Windows | Windows | Linux/Unix |
扫描仪市场份额 | ✮✮✮✮✮ | ✮✮✮✮ | ✮✮ | ✮✮ |
应用市场份额 | ✮✮✮✮✮ | ✮✮✮✮ | ✮✮ | ✮✮ |
价格 | 免费 | 免费 | 昂贵 | 免费且开源 |
TWAIN驱动程序在大多数情况下均具有优越性,因为它提供了与扫描仪的最大兼容性,并提供了根据扫描仪型号自定义扫描的自由。 如果您要构建一个简单的扫描应用程序,则WIA也可能适用。
ISIS仅在有特定要求的情况下才适用。 SANE为整个网络扫描以及没有Windows系统的系统提供了最佳支持。
建立一个将文件扫描为PDF的网页
在本教程中,我们将逐步向您展示如何构建一个简单的HTML页面来扫描文档并将其另存为PDF文件。(点击下图)