教你用Python實(shí)現(xiàn)自動(dòng)提取并收集信息的功能
一、簡介
- 本功能目的在于提取收據(jù)/發(fā)票上的信息,用機(jī)器代替人的方式,提高工作效率
- 實(shí)現(xiàn)方式是通過cv2模塊截取需要的信息,調(diào)用百度的api文字識別接口
二、代碼實(shí)現(xiàn)
1.導(dǎo)入需要的庫,包括百度的api接口跟cv2圖像截圖圖庫
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)
2.截取圖片,獲取需要的信息,包括以下信息
- 時(shí)間Time
- 商家business
- 商品goods
- 價(jià)格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"] # 標(biāo)題
3.定義函數(shù)將截取好的圖片另存到文件夾
def shotcut_image(args): for index in gener: cv2.imwrite('image/{}.png'.format(args), img)
4.調(diào)用百度api接口,實(shí)現(xiàn)文字識別
# 導(dǎo)入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
5.最后將信息轉(zhuǎn)為Dataframe,利用pandas的to_exccel功能,將數(shù)據(jù)放到excel里面
def convert_to_dataframe(words): # 構(gòu)建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 表頭需要額外處理,這里指定不設(shè)置表頭 frame.to_excel('out.xls',index=False, header=False)
到此這篇關(guān)于教你用Python實(shí)現(xiàn)自動(dòng)提取并收集信息的功能的文章就介紹到這了,更多相關(guān)Python自動(dòng)提取收集信息功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm中使用anaconda部署python環(huán)境的方法步驟
這篇文章主要介紹了pycharm中使用anaconda部署python環(huán)境的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12Python的Flask框架中使用Flask-SQLAlchemy管理數(shù)據(jù)庫的教程
在Python中我們可以使用SQLAlchemy框架進(jìn)行數(shù)據(jù)庫操作,那么對應(yīng)的在Flask框架中我們可以使用SQLAlchemy,下面我們就來看一下Python的Flask框架中使用Flask-SQLAlchemy管理數(shù)據(jù)庫的教程2016-06-06python3.6 tkinter實(shí)現(xiàn)屏保小程序
這篇文章主要為大家詳細(xì)介紹了python3.6 tkinter實(shí)現(xiàn)屏保小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07Python三元運(yùn)算實(shí)現(xiàn)方法
這篇文章主要介紹了Python三元運(yùn)算實(shí)現(xiàn)方法,通過if else語句實(shí)現(xiàn)了三元運(yùn)算的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01關(guān)于Python 3中print函數(shù)的換行詳解
最近在學(xué)習(xí)python3,發(fā)現(xiàn)了一個(gè)問題想著總結(jié)出來,所以下面這篇文章主要給大家介紹了關(guān)于Python 3中print函數(shù)換行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對需要的朋友們具有一定的參考學(xué)習(xí)價(jià)值,感興趣的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08