python - 银行收据的 OCR
问题描述
我正在处理银行收据的 OCR 问题,我需要提取日期和帐号等详细信息。处理输入后,我使用 Tessaract-OCR(在 python 中使用 pyteseract)。我已经获得了 hocr 输出文件,但是我无法理解它。我们如何从 HOCR 输出文件中提取信息?请注意,收据的方框中填写了数字,就像普通表格一样。
我使用以下文本进行提取。我应该使用不同的编码吗?
import os
if os.path.isfile('output.hocr'):
fp=open('output.hocr','r',encoding='UTF-8')
text=fp.read()
fp.close()
注意:所附图像是数据的一个示例。这些图像以 pdf 文件的形式提供,我正在以编程方式将其转换为图像。
解决方案
您可以简单地提供图像作为输入,而不是处理和创建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
单独的文件中。
PS:-与 tesseract 处理的图像相比,您尝试处理的图像太复杂了。因此,在处理文本后,您可能会得到不正确的结果。我绝对建议您在使用前对其进行优化,例如减少使用的字符集、在将图像传递给 OCR 之前对其进行处理、对图像进行上采样、dpi 超过 250 等。
推荐阅读
- github - 有没有办法在 Github Actions 的 main.workflow 中以不同的密钥传递秘密?
- rank - 根据具有匹配 ID 的先前行计算总计
- python - Python - Manage cursor connection outside context manager
- iphone - 线程 1: EXC_BAD_ACCESS (code=1, address=0x48) - 被 iOS13.1 破坏了 (dev build 2)
- python - 在scrapy上找到合适的选择器css来爬取网页
- c++ - 传递参数时如何更新 C++ 可选参数?
- php - PHP 表单将 HTML 特殊字符作为纯文本发布
- c - 连接的 upd 套接字不监听传入的数据包
- node.js - 如何使用永久 sqlite 数据库运行我的 node.js 进程?
- c# - 将基类转换为派生类