你必定用過那種「OCR神器」,能夠把圖片中的文字提取出來,極大的提升工做效率。html
!python
今天,咱們就來作一款實時截圖識別的小工具。顧名思義,運行程序時,能夠實時的把你截出來的圖片中的文字識別出來。app
下次,當你想要複製「百度文庫」中的內容時,不妨試試這個程序。工具
效果預覽url
源碼解析spa
1)等待用戶截圖code
此處須要藉助貼圖神器(Snipaste)htm
其中「f1」是截圖的快捷鍵,「ctrl+c」是把截圖保存到剪貼板的快捷鍵。blog
若是使用qq截圖的話,須要把快捷鍵改成對應的「ctrl+alt+c」和「enter」接口
順便安利一波Snipaste,
必備效率神器
import keyboard
# 利用截圖軟件(Snipaste)截圖到剪貼板
# 輸入鍵盤的觸發事件
keyboard.wait(hotkey="f1")
keyboard.wait(hotkey="ctrl+c")
time.sleep(0.1)
上面這段代碼執行以後,如今已經有一張圖片等待在剪貼板裏了。
2)保存截圖
利用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的絕對路徑。
參考文章
見評論第一條
import pytesseract
from PIL import Image
# 法一:利用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文檔
點擊右上角(控制檯),登陸本身的百度帳號,建立「文字識別」的應用
import pytesseract
from aip import AipOcr
from PIL import ImageGrab
# 法二:利用百度API
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 讀取圖片
with open("screen.png", 'rb') as f:
image = f.read()
# 調用百度API通用文字識別(高精度版),提取圖片中的內容
text = client.basicAccurate(image)
result = text["words_result"]
for i in result:
print(i["words"])
結果
如文章首圖:
我是總結
1)等待用戶截圖
2)保存截圖到當前目錄
3)識別截圖中的文本
其中識別截圖文本,有兩種方法:
1)利用 pytesseract 模塊
2)利用百度API接口
你必定用過那種「OCR神器」,能夠把圖片中的文字提取出來,極大的提升工做效率。
今天,咱們就來作一款實時截圖識別的小工具。顧名思義,運行程序時,能夠實時的把你截出來的圖片中的文字識別出來。
下次,當你想要複製「百度文庫」中的內容時,不妨試試這個程序。
效果預覽
源碼解析
1)等待用戶截圖
此處須要藉助貼圖神器(Snipaste)其中「f1」是截圖的快捷鍵,「ctrl+c」是把截圖保存到剪貼板的快捷鍵。
若是使用qq截圖的話,須要把快捷鍵改成對應的「ctrl+alt+c」和「enter」
順便安利一波Snipaste,
必備效率神器
import keyboard
# 利用截圖軟件(Snipaste)截圖到剪貼板
# 輸入鍵盤的觸發事件
keyboard.wait(hotkey="f1")
keyboard.wait(hotkey="ctrl+c")
time.sleep(0.1)
上面這段代碼執行以後,如今已經有一張圖片等待在剪貼板裏了。
2)保存截圖
利用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的絕對路徑。
參考文章
見評論第一條
import pytesseract
from PIL import Image
# 法一:利用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文檔 點擊右上角(控制檯),登陸本身的百度帳號,建立「文字識別」的應用
import pytesseract
from aip import AipOcr
from PIL import ImageGrab
# 法二:利用百度API
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 讀取圖片
with open("screen.png", 'rb') as f:
image = f.read()
# 調用百度API通用文字識別(高精度版),提取圖片中的內容
text = client.basicAccurate(image)
result = text["words_result"]
for i in result:
print(i["words"])
結果如文章首圖:
我是總結
1)等待用戶截圖2)保存截圖到當前目錄3)識別截圖中的文本
其中識別截圖文本,有兩種方法:
1)利用 pytesseract 模塊
2)利用百度API接口