【问题标题】:Python OCR : Converting Scanned Image Into Text For ProcessingPython OCR:将扫描的图像转换为文本进行处理
【发布时间】:2013-12-04 10:24:27
【问题描述】:

我正在尝试创建一个答卷标记(多项选择题)python 应用程序。答题卡会被扫描成图片文件(gif,png,jpg,需要的格式都可以)。

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

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

答题卡具有固定尺寸,表格格式如下(考生将用“X”标记答案以表明他们的答案):

通过互联网搜索后,我发现有一些 OCR API 可用。

第一个是 Pytesser 。它非常易于使用,结果还不错。但它只适用于纯文本的图像。所以,我觉得不合适。

我找到的第二个是Ocropus。它看起来很强大,但在它的文档中

窗户

OCRopus 在很大程度上依赖于 POSIX 路径名和文件系统。 您可以使用 .更简单的方法 就是在VirtualBox下的Ubuntu中安装VirtualBox并运行OCRopus。

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

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

  1. python-tesseract-win32.deb
  2. python-opencv
  3. numpy

但我不知道如何在窗口上安装.deb 文件。我已经安装了opencvnampy

以下是我的问题:

(1) 我可以通过哪种方式将表格图像转换为可处理的数据(甚至可能吗?)?

(2) 是否还有其他有用的 OCR API 我没有在此处提及但可能会有所帮助?

(3) 最后,(我的愚蠢想法)是否可以使用PIL 将图像分成小块(基于表格单元格的大小 - 因为表格尺寸是已知的)然后使用pytesser将每个小图像转换为文本,然后对数据进行相应的处理?

仅供参考:我只需要它用于 Windows 平台,可能用于 windows xp 32 位。我正在使用 python 2.7.5。

【问题讨论】:

  • .deb 是 Linux Deiban/Ubuntu pachage 文件,你基本上不用在 Windows 上安装这些文件。

标签: python python-2.7 python-imaging-library ocr tesseract


【解决方案1】:

答案与您的数字相对应

1) OCR 通常非常困难,但是(对您来说是个好消息)对于考试成绩处理,我认为它几乎是一个已解决的问题。在这种情况下,有针对此类问题的经过尝试和真正的解决方案。多年来,学校系统一直在这样做以自动对“scantron”测试进行评分,因此,如果您可以访问此类资源,那么走这条路可能是您最好的选择。至少你应该检查他们是如何做到的

2) 我相信还有其他的,但这些是我所知道的主要免费的

3)a 我认为,如果您尝试在预算范围内执行此操作并且时间问题不大,那么您的“愚蠢”想法实际上一点也不愚蠢。这可能是最好的方法,而且 scantron 测试分级员很可能使用类似的方法。您知道测试表格的确切尺寸。您可以知道查看位置的直接像素映射。你可以很容易地使用 pytesser。请记住,pytesser 有时需要您调整图像大小(有时向上,有时向下)以获得最佳精度。

3)b 您可能需要考虑推出自己的解决方案。您可以使用形态学操作的概念(numpy 和其他图像库几乎可以立即执行此操作)。您甚至可能不需要这些运算符,只需对表格行进行二进制阈值(假设您已经将图像切割成表格行)并简单地查找 blob 并将分数标记为来自具有最多 blob 值的列。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2012-04-21
    • 2017-01-17
    • 2018-10-26
    相关资源
    最近更新 更多