App下載

Python怎么實(shí)現(xiàn)自動(dòng)提取并收集信息?

猿友 2021-08-03 15:26:12 瀏覽數(shù) (2712)
反饋

在日常生活中我們可能需要批量收集一些圖片內(nèi)的信息(比如從截圖中收集信息),這時(shí)候我們可以使用python來(lái)進(jìn)行信息提取。一種可行的方案是使用OpenCV對(duì)目標(biāo)圖片的特定內(nèi)容進(jìn)行裁剪,然后使用python文字識(shí)別的方式獲取裁剪圖片的文字內(nèi)容,最后使用python對(duì)這些數(shù)據(jù)進(jìn)行一個(gè)收集整理。那么具體怎么操作呢?接下來(lái)這篇文章告訴你。

一、簡(jiǎn)介

  • 本功能目的在于提取收據(jù)/發(fā)票上的信息,用機(jī)器代替人的方式,提高工作效率
  • 實(shí)現(xiàn)方式是通過(guò)cv2模塊截取需要的信息,調(diào)用百度的api文字識(shí)別接口

目標(biāo)采集圖片

二、代碼實(shí)現(xiàn)

1.導(dǎo)入需要的庫(kù),包括百度的api接口跟cv2圖像截圖圖庫(kù)

import cv2
from aip import AipOcr

# 讀取圖片,利用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.截取圖片,獲取需要的信息,包括以下信息

  • 時(shí)間Time
  • 商家business
  • 商品goods
  • 價(jià)格money
  • 單號(hào)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)題

在這里插入圖片描述
在這里插入圖片描述
采集內(nèi)容
在這里插入圖片描述

3.定義函數(shù)將截取好的圖片另存到文件夾

def shotcut_image(args):
    for index in gener:
        cv2.imwrite('image/{}.png'.format(args), img)

4.調(diào)用百度api接口,實(shí)現(xiàn)文字識(shí)別

# 導(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讀取后,取出語(yǔ)句存入excel
def convert_to_excel():
    frame = DataFrame(excel_data, columns=pd_columns)
    # todo 表頭需要額外處理,這里指定不設(shè)置表頭
    frame.to_excel('out.xls',index=False, header=False)

收集信息

到此這篇python信息提取和python文字識(shí)別的應(yīng)用介紹就介紹到這了。更多Python學(xué)習(xí)內(nèi)容請(qǐng)搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章。

0 人點(diǎn)贊