如何以编程方式读取扫描的文档或图像

Posted

技术标签:

【中文标题】如何以编程方式读取扫描的文档或图像【英文标题】:How to programmatically read over a scanned document or image 【发布时间】:2012-01-24 11:42:13 【问题描述】:

我在网上四处搜索,因为我在 OCR 方面有点n00b,实际上我不确定从哪里开始是一个好的起点。

我想构建一个能够识别和计数的应用程序,例如在任何给定的文档/图像行上填写了多少复选框(如果有人知道某些内容,它甚至可以是另一种格式最好适合这种类型的应用程序)。最终目标是消除手动数据捕获并加快将整体统计信息提供给应用程序最终用户的过程

我主要使用 c# 编写代码,因此最好使用 .net 解决方案,但如果不是,我将尽我所能。

我的想法是将用户填写的表单重新设计为与此类似的内容。 (请原谅粗糙的 ASCII 艺术:P)所以填写表格的人只需检查纸上的值。

                |  1  |  2  |  3  |  4  |  5  |  
Product A       | [ ]   [ ]   [ ]   [ ]   [x] |    
Product B       | [ ]   [ ]   [x]   [ ]   [ ] |

任何想法将不胜感激

谢谢!

【问题讨论】:

【参考方案1】:

1) 您还可以查看免费但​​功能强大的Tesseract OCR 引擎。它是用 C++ 编写的,但您可能可以使用 C# 轻松地与它交互。

2)如果您想自己动手进行图像处理,可以考虑使用EmguCV 库,它是OpenCV 的.NET 包装器。

最近在 opencv-tag 上有一个 post,它试图解决与您的问题非常相似的问题,即检测乐透卡上的标记。

【讨论】:

谢谢! (以及所有回答的人)如果我启动并运行它,我会尝试发布一些示例代码或其他东西(如果有人感兴趣的话)【参考方案2】:

您可以尝试使用Office MODI library。

其他选项是

    商业 OCR 库,或 实现您自己的位图识别逻辑(如果您可以完全控制要扫描的布局,这可能是可行的)。

【讨论】:

遗憾,在 Office 2010 technet.microsoft.com/en-us/library/cc179199.aspx 中已弃用 MODI。但也有替代方案:en.wikipedia.org/wiki/…【参考方案3】:

如果您只是在方框中寻找 X,那么您可以将表格打印成浅蓝色并让人们用黑色墨水笔在方框中做标记。

您只需扫描图像并寻找黑色 X 像素。与浅蓝色形式相比,它们应该相对容易找到。扫描图像上的特定 x、y 坐标将分别与答案和产品类型相对应。

【讨论】:

【参考方案4】:

您需要的是光学标记识别 (OMR)。如果您正在计划商业软件,请查看ABBYY FlexiCapture Engine,它是一个用于在服务器、桌面和移动应用程序中集成数据和文档捕获技术的 SDK。它不是免费的,但在业务方面 - 它可以为您的产品增加重要价值。

您还可以使用云服务 - 一个可以让您上传图像并将 OCR 数据发回给您的网站。试试www.ocrsdk.com,它是ABBYY最近推出的基于云的OCR SDK。它现在处于测试阶段,因此完全免费使用。它要求最终用户设备具有互联网连接,但它完全独立于您的编程语言选择和用户的设备资源。 github 上有 .NET 和 Java 代码示例 avalaibe。

声明:我在 @ABBYY 工作。

【讨论】:

您好 Nikolay,ABBYY 的云解决方案与 Redmond 的智能手机照片ocr.a9t9.com 相比如何? (有没有可以比较的网站?)

以上是关于如何以编程方式读取扫描的文档或图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在扫描的文档图像上找到空白字段

当用户单击图像时,如何使用 JavaScript 或 jQuery 读取图像的像素?

以编程方式在Word文档中布局图像

图像处理 - 旋转扫描的文档以对齐文本

C# 如何以编程方式导出/保存 DBML 图?

以编程方式将图像添加到Word文档