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

时间:2011-12-20 14:04:12

标签: c# java image-processing ocr image-recognition

我在网上搜索过,因为在OCR方面我有点像n00b,而我实际上并不确定一个好的起点会在哪里。

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

我主要以c#编码,所以.net解决方案会更好,但如果没有,我会采取我能得到的。

我想到的是重新设计用户填写的表格,使其与此类似。 (请原谅粗略的ASCII艺术:P)所以填写表格的人只需要在纸上查看一个值。

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

任何想法都将不胜感激

谢谢!

4 个答案:

答案 0 :(得分:6)

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

2)如果您想使用图像处理自行推送,可以查看EmguCV库,它是OpenCV的.NET包装器。

opencv-tag上最近有一个post,它试图解决一个非常类似的问题,涉及检测乐透卡上的标记。

答案 1 :(得分:2)

您可以尝试使用Office MODI library

其他选项

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

答案 2 :(得分:2)

如果你正在做的只是在盒子里寻找X,那么你可以用浅蓝色打印表格并让人们用黑色墨水笔标记盒子。

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

答案 3 :(得分:2)

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

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

Disclamer:我在@ABBYY工作。