我正在处理银行收据的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文件中找到,我正在以编程方式将其转换为图像。
答案 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对每个部分进行边缘检测,并通过分析特定区域而不是整个文档来对特定区域进行处理,以使其更加健壮。