我正在尝试创建一个答卷标记(多重选择问题) python应用程序。答案将被扫描到图像文件(gif,png,jpg,任何需要的格式)。
我的应用程序可以访问存储所有答案的数据库。
所以,它所需要的只是扫描图像中的一些数据,这样就可以比较答案和计算分数。
答题纸有固定的尺寸,表格格式如下(考生将用“X”标记答案,以表示答案):

在网上搜索后,我发现有一些OCR可用。
第一个是Pytesser。这是非常容易使用和结果是相当好。但它只适用于只有纯文本的图像。因此,我认为这是不合适的。
我发现的第二个例子是Ocropus。它看起来很强大,但在它的文档中
视窗 OCRopus在很大程度上依赖于POSIX路径名称和文件系统。可以在Windows上安装OCRopus。一种更简单的方法是在Ubuntu中安装VirtualBox并在VirtualBox下运行OCRopus。
所以我认为这主要是针对linux的。我找不到窗口平台的详细安装指南。(我是初学者,所以我可能错了)
我发现的第三个例子是python-tesseract,它是Tesseract OCR的包装器。在他们的页面中,提供了安装指南。基本上,我需要,
但是我不知道如何在窗口上安装.deb文件。我已经安装了opencv和nampy。
以下是我的问题:
(1)如何将表映像转换为可处理的数据(甚至可能吗?)
(2)是否还有其他我在此没有提及的有用的OCR API可能会有所帮助?
(3)最后,(我愚蠢的想法)是否可以使用PIL将图像分割成小块(根据表格单元格的大小--因为表的尺寸是已知的),然后使用pytesser将每个小图像转换为文本,然后相应地处理数据?
FYI:我只需要Windows平台,可能是windows 32位。我正在使用python2.7.5。
发布于 2013-11-20 13:02:31
答案与你的数字相对应
1) OCR在总体上是很难的,但是(对你来说是个好消息)对于考试成绩的处理,我认为这是一个几乎解决了的问题。在这种情况下,这些问题得到了切实有效的解决。多年来,学校系统一直在这样做,以实现“scantron”测试的自动化,因此,如果你能够获得这样的资源,走这条路可能是你最好的选择。至少你应该检查一下他们是怎么做的
2)我相信还有其他人,但这些是我所知道的主要免费的
A我认为如果你想在预算上做这件事,而时间不是问题,你的“愚蠢”想法实际上一点也不傻。这可能是最好的方法,这很可能是斯坎特恩测试等级使用类似的方法。你知道考试表格的确切尺寸。你可以知道直接的像素映射到哪里。你可以很容易地使用pytesser。记住,pytesser有时需要您调整图像的大小(有时是向上的,有时是向下的),以获得最佳的精度。
你可能想考虑使用你自己的解决方案。您可以使用形态操作的概念(numpy和其他映像库几乎可以做到这一点)。您甚至可能不需要这些操作符,只需对表行执行二进制阈值(假设您已经将图像切割成表行),只需查找blob并将分数标记为来自具有最多blob值的列。
https://stackoverflow.com/questions/20095737
复制相似问题