1. 背景
??偶爾截取了一張圖片,需要拷貝其中的文字(如下圖)舆绎,用鍵盤打字嫌麻煩鲤脏,又容易出錯(cuò)。現(xiàn)希望對截圖進(jìn)行文字識別吕朵,并將結(jié)果保存至剪切板猎醇,方便直接粘貼。
2. 搭建環(huán)境
1努溃、 安裝keyboard硫嘶、Pillow、baidu-aip和pyperclip四個(gè)第三方庫梧税。
第三方庫 | 作用 |
---|---|
keyboard | 獲取鼠標(biāo)鍵盤輸入的內(nèi)容 當(dāng)截圖后按ctrl+v沦疾,程序才會(huì)進(jìn)行后續(xù)操作 |
Pillow | 從剪切板獲取圖片并保存 |
baidu-aip | 識別圖片中的文字并輸出 |
pyperclip | 保存文字至剪切板 |
2、 打開百度API網(wǎng)絡(luò)圖片文字識別贡蓖,點(diǎn)擊 “立即使用” 曹鸠。登錄百度賬號,點(diǎn)擊 “創(chuàng)建應(yīng)用” 斥铺。記錄APP_ID彻桃,API_KEY和SECRET_KEY這3個(gè)關(guān)鍵信息。詳細(xì)創(chuàng)建和調(diào)用過程可以參考python怎么使用百度文字識別功能和百度API接口說明晾蜘。
3. 源代碼
import keyboard # 用于獲取鼠標(biāo)鍵盤輸入
from PIL import ImageGrab # 用于從剪切板獲取圖片并保存
from aip import AipOcr # 用于識別圖片中的文字并輸出
import pyperclip # 用于將識別出的文字放置到剪切板中方便直接粘貼
if __name__ == '__main__':
# 按ctrl+c后才執(zhí)行下面的語句
keyboard.wait(hotkey='ctrl+c')
# ctrl+c保存截圖至剪切板邻眷, ImageGrab從剪切板讀取圖片
img1 = ImageGrab.grabclipboard()
# print(type(img))
# 文件保存的名字
img_path = '1.png'
# 保存圖片
img1.save(img_path)
# 百度api執(zhí)行所需數(shù)據(jù),運(yùn)行需換成自己的APP_ID剔交,API_KEY肆饶,SECRET_KEY
APP_ID = '18083249'
API_KEY = '27uw73zNq9iE8PYKOCbBaxpI'
SECRET_KEY = 'cHBY3hDcsnV4cEQZib0VBHlGo75TMMCj'
# 初始化AipOcr
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
with open(img_path, 'rb') as f:
img2 = f.read()
# print(type(img2))
# 識別圖片并返回結(jié)果
result = aipOcr.basicAccurate(img2)
data = ''
for r in result['words_result']:
data = data + r['words'] + '\n'
print(data)
# 將文本復(fù)制到剪切板
pyperclip.copy(data)
4. 使用步驟
- 點(diǎn)擊運(yùn)行程序;
- 使用截圖工具截取圖片岖常,ctrl+c保存至剪切板驯镊;
- ctrl+v將剪切板內(nèi)容粘貼到記事本。