我正在尝试创建一个答案纸标记(多项选择题)python应用程序。答题纸将被扫描到图像文件(gif,png,jpg,无论哪种格式)。
我的应用程序可以访问存储所有答案的数据库。
因此,它只需要扫描图像中的某种数据,以便比较答案并计算标记。
答题纸的固定尺寸与表格格式一样(答案将由候选人用'X'标记,以表明他们的答案):
通过互联网搜索后,我发现有一些OCR API可用。
第一个是Pytesser
。它非常易于使用,结果非常好。但它只适用于纯文本的图像。所以,我认为这不合适。
我找到的第二个是Ocropus
。它似乎很强大,但在它的文档中
窗
OCRopus非常依赖POSIX路径名和文件系统。 您可以使用在Windows上安装OCRopus。更简单的方法 是在VirtualBox下安装VirtualBox并在Ubuntu中运行OCRopus。
所以我认为这主要是针对Linux的。我找不到窗户平台的详细安装指南。 (我是初学者,所以我错了)
我找到的第三个是python-tesseract
,Tesseract OCR
的包装。在他们的page中,提供了安装指南。基本上,我需要,
但我不知道如何在窗口上安装.deb
文件。我已经安装了opencv
和nampy
。
以下是我的问题:
(1)我可以通过哪种方式将表格图像转换为可处理数据(甚至可能?)?
(2)我在这里没有提到任何其他有用的OCR API可能有用吗?
(3)最后,(我的愚蠢想法)是否可以使用PIL
将图像分割成小块(基于表格单元的大小 - 因为表格尺寸已知)然后使用{ {1}}将每个小图像转换为文本,然后相应地处理数据?
仅供参考:我只需要它用于Windows平台,可能用于windows xp 32位。我使用的是python 2.7.5。
答案 0 :(得分:3)
答案与您的号码相对应
1)对于测试分数处理来说,OCR通常非常难,但是(对你来说是个好消息),我认为这几乎是一个已经解决的问题。在这种情况下,有针对这些问题的尝试和真正的解决方案。多年来,学校系统一直在这样做,以便对“扫描仪”测试进行自动评分,因此,如果您可以访问这些资源,那么该路线可能是您最好的选择。至少你应该检查他们是如何做到的
2)我确信还有其他人,但这些是我所知道的主要免费的
3)我想如果你想在预算和时间上做这件事不是一个问题,你的“愚蠢”的想法实际上并不愚蠢。这可能是最好的方法,而且scantron测试分级员很可能使用类似的方法。您知道测试表格的确切尺寸。您可以知道要查看的位置的直接像素映射。你可以很容易地使用pytesser。请记住,pytesser有时需要您调整图像大小(有时向上,有时向下)以获得最佳精度。
3)b您可能想考虑推出自己的解决方案。您可以使用形态学操作的概念(numpy和其他图像库几乎可以开箱即用)。您甚至可能不需要这些运算符,只需执行表行的二进制阈值(假设您已将图像切割成表行)并简单地查找blob并将得分标记为来自具有最多blob值的列。< / p>