python實(shí)現(xiàn)連續(xù)圖文識(shí)別
本文實(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 需要有以下第三方庫(kù):keyboard、PIL、aip、configparser、win32con、win32clipboard。
2 完整代碼:
2.1 screenshot.py是主程序,可獨(dú)立運(yùn)行,主要功能為截圖并保存。
""" 本程序可獨(dú)立運(yùn)行,主要功能是截圖并保存"""
import sys
from time import sleep
import keyboard
from PIL import ImageGrab #pillow
from baiduap import BaiDuAPI
from getText import GetText
def screenShot():
"""用于截圖并保存"""
print('請(qǐng)按F1開(kāi)始截圖')
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()
break
2.2 baiduap.py 程序可獨(dú)立使用,主要功能是圖像文字識(shí)別。
from aip import AipOcr
import 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'))
2.3 getText.py 程序,主要功能是把圖像識(shí)別出來(lái)的文字,保存到剪切板。
import sys
import os.path
import win32clipboard as w
import win32con
class GetText:
def getText():#讀取剪切板
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return d
def setText(aString):#寫(xiě)入剪切板
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardText(aString)
w.CloseClipboard()
if __name__=='__main__':
GetText.setText('布衣弓長(zhǎng)')
GetText.getText()
2.4 password.ini 文件,用記事本編寫(xiě),把百度云獲取的相關(guān)信息填進(jìn)去。內(nèi)容是:
[我的工單];節(jié)
App_ID=151313**
App_KEY=1V2LlBhLUYaHu2Y9*******
SECRET_KEY=fGufC1CbiZ0tw1imTGoIsaGO******
3.運(yùn)行。啟動(dòng)qq和剪貼薄查看器.exe,在python環(huán)境下運(yùn)行screenshot.py。
經(jīng)實(shí)測(cè):識(shí)別率高,能快速抓取多圖,但每運(yùn)行一次程序,只能識(shí)別保存在Picture.png文件里圖像的文字。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python實(shí)現(xiàn)識(shí)別相似圖片小結(jié)
- Python 40行代碼實(shí)現(xiàn)人臉識(shí)別功能
- Python+Opencv識(shí)別兩張相似圖片
- python驗(yàn)證碼識(shí)別的實(shí)例詳解
- python下調(diào)用pytesseract識(shí)別某網(wǎng)站驗(yàn)證碼的實(shí)現(xiàn)方法
- Python驗(yàn)證碼識(shí)別處理實(shí)例
- Python中利用Scipy包的SIFT方法進(jìn)行圖片識(shí)別的實(shí)例教程
- Python實(shí)現(xiàn)簡(jiǎn)單的語(yǔ)音識(shí)別系統(tǒng)
- kNN算法python實(shí)現(xiàn)和簡(jiǎn)單數(shù)字識(shí)別的方法
- 詳解Python驗(yàn)證碼識(shí)別
相關(guān)文章
Django框架獲取form表單數(shù)據(jù)方式總結(jié)
這篇文章主要介紹了Django框架獲取form表單數(shù)據(jù)方式總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
淺談Python列表嵌套字典轉(zhuǎn)化的問(wèn)題
這篇文章主要介紹了淺談Python列表嵌套字典轉(zhuǎn)化的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
Python的標(biāo)準(zhǔn)模塊包json詳解
這篇文章主要介紹了Python的標(biāo)準(zhǔn)模塊包json詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
Python實(shí)現(xiàn)向好友發(fā)送微信消息優(yōu)化篇
利用python可以實(shí)現(xiàn)微信消息發(fā)送功能,怎么實(shí)現(xiàn)呢?你肯定會(huì)想著很復(fù)雜,但是python的好處就是很多人已經(jīng)把接口打包做好了,只需要調(diào)用即可,今天通過(guò)本文給大家分享使用?Python?實(shí)現(xiàn)微信消息發(fā)送的思路代碼,一起看看吧2022-06-06
pycharm查看之前的運(yùn)行結(jié)果詳細(xì)步驟
在工作場(chǎng)景下,程序員如何運(yùn)用PyCharm去書(shū)寫(xiě)代碼以及運(yùn)行文件,還有學(xué)會(huì)對(duì)各種突發(fā)情況的應(yīng)對(duì),這篇文章主要給大家介紹了關(guān)于pycharm查看之前的運(yùn)行結(jié)果的相關(guān)資料,需要的朋友可以參考下2023-04-04

