本文實(shí)例為大家分享了python實(shí)現(xiàn)連續(xù)圖文識(shí)別的具體代碼,供大家參考,具體內(nèi)容如下
1.工具:
1.1 剪切板。我下載并安裝使用的是剪切板查看器(clipbrd.exe),成功后顯示“剪貼薄查看器.exe”
1.2 截圖工具并設(shè)置熱鍵。保存圖片鍵和退出鍵可任意設(shè)置,注意不能同其它熱鍵沖突。我使用的是微信截圖,進(jìn)入設(shè)置---進(jìn)入快捷按鍵---把截取屏幕鍵改為F1。
1.3 Python 3.x,Windows環(huán)境
1.4 注冊(cè)百度云帳號(hào),獲取Appid API Key Secret Key
1.5 新建文件夾。我建的名叫‘圖文識(shí)別'文件夾(C:/Users/Administrator/AppData/Local/Programs/Python/Python35-32/圖文識(shí)別)
1.6 ‘圖文識(shí)別'文件夾下,有3個(gè).py文件,分別是:screenshot.py baiduap.py getText.py;有1個(gè)配置文本文件是password.ini;有個(gè)圖像文件是Picture.png。
1.7 需要有以下第三方庫:keyboard、PIL、aip、configparser、win32con、win32clipboard。
2 完整代碼:
2.1 screenshot.py是主程序,可獨(dú)立運(yùn)行,主要功能為截圖并保存。
""" 本程序可獨(dú)立運(yùn)行,主要功能是截圖并保存"""import sysfrom time import sleepimport keyboardfrom PIL import ImageGrab #pillowfrom baiduap import BaiDuAPIfrom getText import GetText def screenShot(): """用于截圖并保存""" print('請(qǐng)按F1開始截圖') if keyboard.wait(hotkey='f1')==None: print('復(fù)制剪切板的圖片,請(qǐng)按Ctrl+b,不復(fù)制繼續(xù)截圖') if keyboard.wait(hotkey='Ctrl+b')==None: sleep(0.02) #防止獲取的是上一張截圖 #復(fù)制剪貼板里面的圖片 im=ImageGrab.grabclipboard() im.save('Picture.png') if __name__=='__main__': baiduapi=BaiDuAPI('password.ini') for _ in range(sys.maxsize): screenShot() texts=baiduapi.picture2Text('Picture.png') print(texts) GetText.setText(texts) #剪貼板剪貼 sleep(0.02) GetText.getText() print('退出請(qǐng)按Ctrl+x') if keyboard.wait(hotkey='Ctrl+x')==None: name=input('請(qǐng)輸入保存圖像識(shí)別文字文件名:') f=open(name+'.txt','w') f.write(texts) f.close() break2.2 baiduap.py 程序可獨(dú)立使用,主要功能是圖像文字識(shí)別。
from aip import AipOcrimport configparser class BaiDuAPI: """圖片文字識(shí)別""" #初識(shí)化方法 def __init__(self,filePath): #self 就是BaiDuAPI() #讀取工單信息 target=configparser.ConfigParser() target.read(filePath) app_id=target.get('我的工單','App_ID') app_key=target.get('我的工單','App_KEY') secret_key=target.get('我的工單','SECRET_KEY') self.client=AipOcr( app_id, app_key,secret_key) def picture2Text(self,filePath): #讀取圖片 image=self.getPicture(filePath) texts=self.client.basicGeneral(image) #print(texts['words_result']) allTexts='' for word in texts['words_result']: allTexts=allTexts+word.get('words','') return allTexts @staticmethod def getPicture(filePath): with open(filePath,'rb') as fp: return fp.read() if __name__=='__main__': baiduapi=BaiDuAPI('password.ini') print(baiduapi.picture2Text('Picture.png'))
新聞熱點(diǎn)
疑難解答
圖片精選