24

在典型的文档处理 webapp 中考虑以下扫描过程:

  • 用户使用连接到他/她的计算机的扫描仪扫描文档
  • 扫描的图像以 BMP/JPG/TIF/PNG 文件的形式本地保存在用户的计算机上
  • 用户在 Web 应用程序中点击文件上传“浏览..”按钮
  • 用户会看到一个文件对话框,他/她用它来定位扫描的图像
  • 用户点击“上传图像”,扫描的图像被上传到存储它的服务器

这个过程非常复杂,我想减少步骤数,以使该过程更加用户友好/防呆。在理想情况下,上述步骤将被替换为只有一个步骤,即程序启动文档扫描、完成文档扫描并上传当点击“扫描并上传”时,Web 应用程序会自动触发生成的图像。不幸的是,“网络/扫描仪集成”的状态似乎很差,所以这可能是乌托邦。

你将如何解决这个问题?更具体地说,您将如何减少所描述的用例中涉及的步骤数量?

4

11 回答 11

15

好吧,两年过去了,所以这里有一个最新的最新消息,供那些刚刚加入我们的人使用。

Dynamsoft和Atalasoft具有与任何服务器端堆栈兼容的多浏览器 Web 扫描工具包。两者都需要用户安装 ActiveX(在 IE 中)或 NPAPI 插件(Chrome、Firefox 等)才能通过 TWAIN API 访问扫描仪。

显然,如果您有时间或预算有限,您可以创建自己的插件。我衷心推荐FireBreath 插件框架任何TWAIN 库,而不是编写自己的 TWAIN 代码。

一旦安装了 ActiveX 或插件,剩下的工作就是客户端上的 javascript 和 HTML 的组合,以及服务器上的某种处理程序来接受和处理传入的图像,可以使它看起来像一个多部分表格提交附上文件。

我建议使用 AJAX 在 javascript 中上传图像,因为它是与网页相同的浏览器“会话”的一部分,并且它继承了浏览器的代理设置、会话 cookie 和服务器端身份验证。不知道Dynamsoft的控件,Atalasoft工具包中包含这样的AJAX上传。图像作为 base64 编码字符串从插件传递给 javascript,因此实际上没有创建本地文件。

免责声明:我在 Atalasoft 的 WingScan 网络扫描工具包上工作。

于 2012-09-24T20:40:06.923 回答
7

如果您的目标受众正在运行 Windows 和 IE,并且您不介意花几美元,Atalasoft有一些组件可以满足您的需求。

于 2009-10-26T00:26:04.987 回答
1

Silverlight 4 即将问世。它应该能够与用户计算机上的 COM 对象进行交互(前提是它们运行的​​是 Windows)。理论上,您可以从 Silverlight 网页调用 WIA 方法。

于 2009-11-28T00:07:57.957 回答
1

我们实施了一个解决方案来为一家银行实施远程存款。它仅适用于 IE。 创建了一个与 LeadTools TWAIN dll 接口的winforms dll。Leadtools TWAIN dll 提取所有 TWAIN 细节。这种方法比使用 ActiveX 控件要好一些。客户端需要 .NET Framework。扫描的图像被发送回页面上的隐藏变量,并在服务器上进行处理。

于 2009-12-21T22:58:23.413 回答
1

实际上,我在设置我的帐户时看到银行有人这样做,我非常惊讶。有问题的银行使用的是 Windows 和 IE,我假设您处于同样受控的环境中。我认为银行使用了自定义/可预测的扫描仪驱动程序和 ActiveX 控件的组合。

加载的页面显示“打开扫描仪”,工作人员弹出文档并在网页上点击扫描,然后页面变为扫描,然后在网页上显示扫描的文档以供工作人员批准。我只能假设扫描仪驱动程序将图像发送到某个位置,并且活动 X 控件正在轮询它是否出现,一旦它出现,它就会在屏幕上显示图像,一旦工作人员批准它,活动 X 就会将它上传到的背景。她打开下一页并继续进行其余的过程。

天知道他们是如何让所有这些技术发挥作用的,但这是可以做到的。

于 2009-10-28T22:01:20.767 回答
0

嗯,我一直想在对扫描文件进行任何处理之前先查看它,但我想这取决于您的扫描仪以及您需要多少质量。

如果目标是“自动化扫描和上传过程”而不是“编写网络应用程序”,我会编写一个 AutoIt 脚本来控制现有的扫描仪软件和一个简单的 ftp 程序。

于 2009-10-21T15:47:29.583 回答
0

最有可能删除最多步骤的选项可能是编写自定义扫描实用程序,用户将下载并在其本地计算机上运行该实用程序。

SANE 或 TWAIN 将处理获取扫描的图像。cURL 可以处理将图像上传到您的网络应用程序。为了让最终用户更轻松,我会使用 Comet 连接之类的东西在文件可用时更新网页。

如果这不是一个选项,您可能会查看您的用户在使用他们的扫描仪软件时可能会有哪些选项。我相信现在很多程序都支持扫描到电子邮件或 ftp。

我用于 Intranet 应用程序的解决方案是使用多功能扫描仪/复印机扫描到 Web 服务器可以访问的 SMB 共享。用户只需将复印机扫描到共享,当他们回到办公桌时,他们会转到新的扫描页面,该页面显示所有新的未处理文件的列表。

于 2009-10-21T16:25:40.667 回答
0

由于您的受众是受控环境,您可以编写自己的基于 WIA/TWAIN 的浏览器扩展程序/程序来进行扫描。如果您选择浏览器扩展,例如 BHO/ActiveX/XPCOM 等,您需要获得用户的许可才能安装您的扩展。如果您选择编写程序,则可能需要从 Web 启动 ClickOnce 或 Java Web Start 等 Web 部署技术。

在 Windows 上连接 TWAIN 是一件很痛苦的事情。除了复杂性之外,您还必须显示一些由不同扫描仪驱动程序开发人员编写的 GUI。它可能是支持旧扫描仪或未通过其他接口(例如来自文档进纸器的全速多页扫描)公开的功能的唯一方法。

Microsoft 的 WIA 使用脚本对象模型使与扫描仪的接口变得更加容易,但是特定于扫描仪的功能不可用,并且一些旧的扫描仪不支持该接口。

扫描后您可以调用网络服务通知服务器,网页可以定期刷新以检查新图像。

于 2009-10-31T00:02:46.220 回答
0

我们做过类似的事情。我们使用了一个命令行 TWAIN 程序(http://www.burrotech.com/quickscan.php)。$$$49

1) 我们开发了一个小型 .Net 应用程序以将 QuickScan 程序作为 shell 命令运行。
2) 命令被分配给扫描按钮。
3) 一旦用户按下扫描按钮,就会出现输入文件名的提示。用户将事务 ID 保存为文件名。
4)考虑到文件名是事务ID,另一个.Net应用程序(或者可能与前面提到的相同)将读取此文件并将其上传到数据库中。

像黄油中的热刀一样工作!



您可以尝试在 IE 中显示交易 ID,用户选择 ID 然后按扫描。您的应用程序将读取 SELECTED 文本并使用 SELECTED 文本作为文件名保存文件。我们还没有尝试过,但它应该可以工作。

于 2010-06-14T15:35:46.107 回答
-2

如果您认为 Web 应用程序仅限于 Web 浏览器,那只是乌托邦,事实上,Web 应用程序可以包含许多不同的技术,除了 HTML 和 Javascript。

解决这个问题的好方法——事实上,我已经将它用于一些 USB 串行设备——是使用 SOAP+XMPP 实现您的应用程序。您可以在 Perl 中通过使用 XML::CompileX::Transport::SOAPXMPP、Catalyst::Engine::XMPP2、Catalyst::Controller::SOAP 和 Catalyst::Model::SOAP 来做到这一点。

使用 XMPP 的有趣之处在于它简化了寻址管理,因为您使用 JID(Jabber ID)来查找软件代理,而不是一些主机+端口寻址模式。使用 XMPP 的第二个有趣的部分是更容易支持服务器将信息推送到客户端。

但是,如果您不想处理 XMPP,您仍然可以使用轻量级嵌入式 http 服务器(Perl 中的 HTTP::Server::Simple)做同样的事情,并以某种方式在服务器中注册当前扫描仪地址,以便它可以打回来。

最后一个不太可爱的选项是让软件代理轮询服务器以查看该特定机器何时有“扫描文档并上传”命令,并在出现时实现该操作。

总之,只要您使用 Web 标准(如 XML、SOAP 等)来执行该通信,拥有一个与本地硬件交互的本地软件代理不会使您的 Web 应用程序变得不那么“Web”。

于 2009-10-21T15:41:44.433 回答
-3

您可以在您的网站中放置一个 Java 小程序。这可以访问扫描仪并通过 REST 将数据发送到您的 Web 服务器。

于 2009-10-25T07:57:28.877 回答