10幾行代碼,用python打造實時截圖識別OCR

你必定用過那種「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接口

相關文章
相關標籤/搜索