银行收据的OCR

时间:2019-05-24 06:58:12

标签: python ocr tesseract

enter image description here我正在处理银行收据的OCR问题,我需要提取诸如日期和帐号之类的详细信息。处理输入后,我使用Tessaract-OCR(在python中使用pyteserract)进行相同的操作。我已经获得了hocr输出文件,但我无法理解它。如何从HOCR输出文件中提取信息?请注意,收据上的数字像普通表格一样在框中填写。

我使用以下文本进行提取。是否应该使用其他编码?

import os
if  os.path.isfile('output.hocr'):
    fp=open('output.hocr','r',encoding='UTF-8')
    text=fp.read()
    fp.close()

注意:附件中的图像是数据的一个示例。这些图像可在pdf文件中找到,我正在以编程方式将其转换为图像。

2 个答案:

答案 0 :(得分:0)

您只需提供图像作为输入,而无需处理和创建 HOCR 输出文件。

尝试:-

from PIL import Image
import pytesseract

im = Image.open("reciept.jpg")

text = pytesseract.image_to_string(im, lang = 'eng')

print(text)

此程序获取要通过OCR运行的图像的位置,并从中提取文本,将其存储在变量text中,然后将其打印出来。如果需要,您也可以将数据存储在text的单独文件中。

P.S。:-与要处理tesseract的图像相比,您要处理的图像过于复杂。因此,在处理文本之后,您可能会得到错误的结果。我绝对建议您在使用前对其进行优化,例如减少使用的字符集,在将图像传递给OCR之前对其进行处理,对图像进行上采样,使dpi超过250等。

答案 1 :(得分:0)

我个人将使用诸如tesseract之类的东西来进行OCR,然后使用诸如opencv之类的带有刻度的冲浪...

甚至使用opencv和surf对每个部分进行边缘检测,并通过分析特定区域而不是整个文档来对特定区域进行处理,以使其更加健壮。