Python结合OpenCV与百度OCR实现发票信息自动提取
本文介绍如何使用Python的OpenCV库进行图像局部截取,并结合百度AI开放平台的文字识别API,实现从收据或发票图片中自动提取时间、商家、商品、价格及单号等关键信息。通过代码示例展示图像预处理、API调用及Pandas数据导出至Excel的完整流程,旨在提升财务或行政工作的数据处理效率。
一、简介
- 该功能的核心目标是自动化提取收据或发票上的关键数据,以机器替代人工操作,从而显著提升工作效率。
- 技术实现路径主要依赖cv2模块对目标区域进行精准截取,随后调用百度提供的API文字识别接口完成信息转换。

二、代码实现
首先导入必要的库,包括用于图像处理的cv2模块以及百度AI的API接口库。
import cv2
from aip import AipOcr
# 读取图片,利用imshow显示图片
pic = cv2.imread(r'Y:\cut\img1.png')
pic = cv2.resize(pic,None,fx = 0.5, fy = 0.5)
cv2.imshow('img',pic)
cv2.waitKey(0)
接着执行图片截取操作,获取所需的关键信息字段,具体包括以下五项内容:
- 时间Time
- 商家business
- 商品goods
- 价格money
- 单号num
# 删除不必要的部分
img = pic[210:500, 100:580]
# 截取各部分的文字
time = pic[400:430, 100:580]
business = pic[370:400, 100:580]
goods = pic[350:380, 100:580]
money = pic[210:300, 100:580]
num = pic[460:500, 100:580]
# 查看截取的部分是否合适
gener_name = ['time','business','goods','money','num']
excel_data = {}
pd_columns = ["a","b","c","d","e"] # 标题




定义一个函数,将截取处理后的图片保存至指定文件夹中。
def shotcut_image(args):
for index in gener:
cv2.imwrite('image/{}.png'.format(args), img)
调用百度API接口,对保存的图片执行文字识别操作。
# 导入api
AppID = '24177719'
API_Key = 'p8skmRYfHGoVGR4UU03Q5jiM'
Secret_Key = 'dyM0tzSILBZu9CFqZ7IkjWwECGaws4xo'
cilent = AipOcr(AppID,API_Key,Secret_Key)
def get_words(img_name):
with open('image/{}.png'.format(img_name), 'rb') as f:
result = cilent.basicAccurate(f.read())
return result
最后,将识别到的信息转换为DataFrame格式,并利用pandas库的to_excel功能,将数据导出保存至Excel文件中。
def convert_to_dataframe(words):
# 构建dataframe
result = words['words_result']
for word in result:
excel_data.setdefault('a', []).append(word['words'])
# 将所有words读取后,取出语句存入excel
def convert_to_excel():
frame = DataFrame(excel_data, columns=pd_columns)
# todo 表头需要额外处理,这里指定不设置表头
frame.to_excel('out.xls',index=False, header=False)

至此,关于使用Python实现自动提取并收集信息的功能介绍完毕。如需了解更多相关Python自动提取与收集信息的内容,建议搜索本站历史文章或继续阅读后续相关文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









