2013-11-20 155 views
7

我想创建一个答案纸标记(选择题)python应用程序。答案纸将被扫描到图像文件(gif,png,jpg,无论需要什么格式)。Python OCR:将扫描图像转换为文本进行处理

我的应用程序可以访问存储所有答案的数据库。

所以,它需要的只是扫描图像中的某种数据,以便它可以比较答案并计算出标记。

的答卷已经固定,像这样的表格式(答案将在“X”标记由候选人表明自己的答案)尺寸:

enter image description here

通过网络搜索后,我发现有几个OCR API可用。

第一个是Pytesser。它非常易于使用,结果相当不错。但它只适用于纯文本的图像。所以,我认为这是不合适的。

我发现的第二个是Ocropus。这似乎强大,但在它的文档

的Windows

OCRopus依赖于POSIX路径名和文件系统有很多。 您可能可以在Windows上使用安装OCRopus。更简单的方法 是安装VirtualBox并在Ubuntu下在VirtualBox下运行OCRopus。

所以我认为它主要是为Linux。我找不到窗户平台的详细安装指南。 (我是初学者,所以我可能是错的)

我发现的第三个是python-tesseract,包装为Tesseract OCR。在他们的page中,提供了安装指南。基本上,我需要,

  1. 蟒蛇,正方体,win32.deb
  2. 蟒蛇,OpenCV的
  3. numpy的

,但我对如何在窗口安装.deb文件没有任何线索。我已安装opencvnampy

因此,下面是我的问题:

(1)在其办法可以将表格转换成图像处理数据(它甚至有可能?)?

(2)有没有其他有用的OCR API,我在这里没有提到可能有用? (3)最后(我的愚蠢想法)是否可以使用PIL将图像拆分为小卡盘(基于表格单元的大小 - 因为表格尺寸已知),然后使用pytesser将每个小图像转换为文本,然后相应地处理数据?

供参考:我只需要它的Windows平台,可能为Windows XP 32位。我正在使用Python 2.7.5。

+0

.deb是Linux Deiban/Ubuntu pachage文件,您基本上不要在Windows上安装这些文件。 – McAbra

回答

3

答案符合您的数字

1)OCR是一般很辛苦,但你)测试得分处理(好消息,我觉得这是近一个解决的问题。在这方面,对于这些问题已经有了可靠的解决方案。学校系统一直在这样做,以便自动化评分'scantron'测试多年,所以如果你有权访问这些资源,那么这条路线可能是你最好的选择。至少你应该检查他们是如何做到这一点

2)我肯定还有其他的,但这些是主要的免费的,我知道的

3)我想如果你正在尝试做这一个预算和时间不是问题,你的'愚蠢'的想法其实并不傻。这可能是实现这一目标的最佳方式,并且scantron测试评分员很可能使用类似的方法。您知道测试表单的确切尺寸。你可以知道在哪里看直接像素映射。你可以很容易地使用pytesser。请记住,pytesser有时需要您调整图像的大小(有时会上升,有时会下降)以获得最佳的准确性。

3)b您可能需要考虑滚动您自己的解决方案。你可以使用形态学操作的概念(numpy和其他图像库可以做到这一点几乎开箱即用)。您甚至可能不需要这些运算符,只需执行表格行的二进制阈值(假设您已将图像剪切成表格行),并简单地查找斑点并将得分标记为来自具有最多斑点值的列。