这篇文章主要介绍了Python如何实现自动提取并收集信息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何实现自动提取并收集信息文章都会有所收获,下面我们一起来看看吧。

一、简介

本功能目的在于提取收据/发票上的信息,用机器代替人的方式,提高工作效率

实现方式是通过cv2模块截取需要的信息,调用百度的api文字识别接口

二、代码实现

1.导入需要的库,包括百度的api接口跟cv2图像截图图库

importcv2fromaipimportAipOcr#读取图片,利用imshow显示图片pic=cv2.imread(r'Y:cutimg1.png')pic=cv2.resize(pic,None,fx=0.5,fy=0.5)cv2.imshow('img',pic)cv2.waitKey(0)

2.截取图片,获取需要的信息,包括以下信息

时间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"]#标题




3.定义函数将截取好的图片另存到文件夹

defshotcut_image(args):forindexingener:cv2.imwrite('image/{}.png'.format(args),img)

4.调用百度api接口,实现文字识别

#导入apiAppID='24177719'API_Key='p8skmRYfHGoVGR4UU03Q5jiM'Secret_Key='dyM0tzSILBZu9CFqZ7IkjWwECGaws4xo'cilent=AipOcr(AppID,API_Key,Secret_Key)defget_words(img_name):withopen('image/{}.png'.format(img_name),'rb')asf:result=cilent.basicAccurate(f.read())returnresult

5.最后将信息转为Dataframe,利用pandas的to_exccel功能,将数据放到excel里面

defconvert_to_dataframe(words):#构建dataframeresult=words['words_result']forwordinresult:excel_data.setdefault('a',[]).append(word['words'])#将所有words读取后,取出语句存入exceldefconvert_to_excel():frame=DataFrame(excel_data,columns=pd_columns)#todo表头需要额外处理,这里指定不设置表头frame.to_excel('out.xls',index=False,header=False)

关于“Python如何实现自动提取并收集信息”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python如何实现自动提取并收集信息”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。