文件扫描-TWAIN,WIA,ISIS,SANE

news/2024/11/23 23:03:50/

文档扫描功能是软件开发者建立一个网站,内容管理系统,或办公自动化系统的重要组成部分。 市场上有几种不同的扫描驱动程序:

  • TWAIN
  • WIA
  • ISIS
  • SANE

当然,对于什么是最佳解决方案,您可能会感到困惑。TWAIN,WIA,ISIS和SANE都是支持从扫描仪获取物理图像并将数字图像存储在计算机上的扫描驱动程序。 尽管他们基本上试图实现相同的任务,但搜索热门度显示TWAIN处于领先地位。

这四个文档扫描驱动程序具有一些不同的扫描仪功能和兼容性,这使其适用于不同情况。 让我们逐一介绍他们。

TWAIN

Alt
TWAIN是一种扫描协议,最初被用于Microsoft Windows和Apple Macintosh操作系统,并且从2.0版开始添加了Linux / Unix支持。 第一版发布于1992年。它被设计为图像处理软件与扫描仪或数码相机之间的接口。

Alt

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,用于基于桌面的应用程序)

Alt

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 scan area “options”
这种分离的实现方式使SANE非常适合网络扫描方案,在该方案中,您将所有计算机都连接在LAN中,而扫描仪仅作为共享扫描仪连接到一台或两台计算机上。 此外,无需像使用TWAIN一样使用Win32或Mac API绑定特定的GUI,SANE易于实现一个由命令行驱动的界面。 另一方面,SANE确实有一些GUI,例如XSane,phpSANE等,您可以根据需要使用。 或者,您可以为一个扫描仪专门定制一个GUI。

总结

那么,现在您已经有了一个主意并下定了决心吗?

下面是这四个驱动程序的比较表,总结了上面提到的内容。

TWAINWIAISISSANE
扫描功能✮✮✮✮✮✮✮✮✮✮✮✮✮✮✮✮
数码相机支持✮✮✮✮✮✮✮✮✮✮✮
操作系统支持Windows, Mac OS, Linux/UnixWindowsWindowsLinux/Unix
扫描仪市场份额✮✮✮✮✮✮✮✮✮✮✮✮✮
应用市场份额✮✮✮✮✮✮✮✮✮✮✮✮✮
价格免费免费昂贵免费且开源

TWAIN驱动程序在大多数情况下均具有优越性,因为它提供了与扫描仪的最大兼容性,并提供了根据扫描仪型号自定义扫描的自由。 如果您要构建一个简单的扫描应用程序,则WIA也可能适用。

ISIS仅在有特定要求的情况下才适用。 SANE为整个网络扫描以及没有Windows系统的系统提供了最佳支持。

建立一个将文件扫描为PDF的网页

在本教程中,我们将逐步向您展示如何构建一个简单的HTML页面来扫描文档并将其另存为PDF文件。(点击下图)
在这里插入图片描述


http://www.ppmy.cn/news/422276.html

相关文章

ExactScan pro for mac(万能扫描仪整合工具)

ExactScan pro for mac是一款功能强大操作简单的万能扫描仪整合工具。exactscan pro支持各种专业扫描仪和图像处理,可以快速扫描,归档,排序,存档和查找文档,旨在将纸张转移到数字世界,节省用户时间和金钱。…

openGauss企业版单节点部署指南

openGauss企业版单节点部署指南 操作系统配置单节点配置文件安装前检查执行openGauss安装安装后验证初始化数据库查看数据库用户openGauss启停 🚗部署环境:CentOS 7.9 🚋服务器配置:16C32G 🍰安装包:openGa…

通过key值修改yml文件内容

1.引入pom <dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId><version>2.0</version></dependency>2. JAVA代码 // 无法保存注释public static void YML_FILE_UPDATE(String ymlOriginName, Str…

JavaScript之ES6高级语法(三)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 ES6高级语法(三&#xff09; 前言一、原型对象1.1、constructor 属性1.2、对象原型 二、原型继承三、原型链 前言 今天学习的…

别人不愿意教,那我来教你Simulink建模(一)【原创】【无偿分享】

文章目录 前言怎么建立第一个Demo模型?matlab自己会优化代码?流程图加一个实线边界线的作用?默认转移点连到边界线上的作用?流程图终点连到边界线上的作用?默认转移点连到边界线外的作用?边界线内外都有默认转移点的作用?两个状态的并行状态?en:、du:、ex:三个语法的作…

基于Java物流管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

H5 拨打电话

点击按钮 跳转链接 window.location.href tel:18505365925

Android 拨打电话

/*** 拨打电话&#xff08;跳转到拨号界面&#xff0c;用户手动点击拨打&#xff09;** param phoneNum 电话号码*/public void callPhone1(String phoneNum) {Intent intent new Intent(Intent.ACTION_DIAL);Uri data Uri.parse("tel:" phoneNum);intent.setData…