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