你一定用過那種“OCR神器”,可以把圖片中的文字提取出來,極大的提高工作效率。
今天,我們就來做一款實時截圖識別的小工具。顧名思義,運行程序時,可以實時的把你截出來的圖片中的文字識別出來。、
下次,當你想要復制“百度文庫”中的內容時,不妨試試這個程序。
效果預覽
源碼解析
1)等待用戶截圖
此處需要借助貼圖神器(Snipaste)
其中“f1”是截圖的快捷鍵,“ctrl+c”是把截圖保存到剪貼板的快捷鍵。
如果使用qq截圖的話,需要把快捷鍵改為對應的“ctrl+alt+c”和“enter”
順便安利一波Snipaste,
必備效率神器
importkeyboard
# 利用截圖軟件(Snipaste)截圖到剪貼板
# 輸入鍵盤的觸發事件
keyboard.wait(hotkey="f1")
keyboard.wait(hotkey="ctrl+c")
time.sleep(0.1)
上面這段代碼執行之后,現在已經有一張圖片等待在剪貼板里了。
2)保存截圖
windows安裝PIL
打開cmd
進入python的安裝目錄中的Scripts目錄:
輸入pip install pillow
安裝成功
利用PIL模塊的ImageGrab,可以把剪貼板里的那張圖片,保存到當前的目錄下,並命名為“screen.png”
from PIL import ImageGrab
# 把圖片從剪切板保存到當前路徑
image = ImageGrab.grabclipboard()
image.save("screen.png")
3)識別截圖中的文本
法一
pytesseract模塊
優點:免費,易用
缺點:識別效果很一般,准確率不高
使用方法介紹:
1)pip install pytesseract
2)安裝 tesseract-ocr.exe 配置環境變量
3)修改pytesseract.py文件,將tesseract_cmd指向Tesseract-OCR的tesseract.exe的絕對路徑。
參考文章
見評論第一條
importpytesseract
fromPILimportImage
# 法一:利用pytesseract模塊
# 參數一:圖片
# 參數二:簡體中文
text = pytesseract.image_to_string(Image.open("screen.png"), lang='chi_sim')
print(text)
來看看效果:

low的不行
果然,要想精度高,還得用百度API
法二
百度API接口
AI開放平台文檔中心
https://ai.baidu.com/ai-doc
查看python語言的SDK文檔
點擊右上角(控制台),登錄自己的百度賬號,創建“文字識別”的應用
importpytesseract
fromaipimportAipOcr
fromPILimportImageGrab
# 法二:利用百度API
APP_ID ='你的 App ID'
API_KEY ='你的 Api Key'
SECRET_KEY ='你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 讀取圖片
withopen("screen.png",'rb')asf:
image = f.read()
# 調用百度API通用文字識別(高精度版),提取圖片中的內容
text = client.basicAccurate(image)
result = text["words_result"]
foriinresult:
print(i["words"])
結果
如文章首圖:

我是總結
1)等待用戶截圖
2)保存截圖到當前目錄
3)識別截圖中的文本
其中識別截圖文本,有兩種方法:
1)利用 pytesseract 模塊
2)利用百度API接口