批量識別圖片中文字(python、百度開發者工具)
阿新 • • 發佈:2019-02-04
進來一直為各種課程的實驗報告困擾,字數很多,百度文庫、豆瓣等資源網站又無法免費下載。
就想著如果我能把他們截圖下來,然後批量轉換成文字該多好呢?
所謂懶惰是人類進步的階梯。
筆者決定通過python程式,呼叫百度api完成這項功能。
認證百度開發者
首先要在百度開發者平臺認證成為百度開發者,建立應用後即會獲得ID、API Key、Secret Key 如圖:圖中為筆者自己的賬號,所以進行了打碼。後文進行程式設計時,筆者將使用網路上分享的賬號等進行演示。
安裝庫
開啟cmd,輸入:pip install baidu-aip
等待安裝完成即可。下面進行程式設計。
匯入必要檔案
from aip import AipOcr import os
AipOcr即我們需要的百度文字識別功能。
設定自己的ID、API Key、Secret Key
筆者在此使用網路上分享的賬號,建議使用自己註冊的賬號。
APP_ID = '9851066'
API_KEY = 'LUGBatgyRGoerR9FZbV4SQYk'
SECRET_KEY = 'fB2MNz1c2UHLTximFlC4laXPg7CVfyjV'
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
開啟並載入圖片檔案的函式
def get_file_content(filePath): #這樣只要獲得檔名就能夠進行識別 with open(filePath, 'rb') as fp: return fp.read()
注意使用二進位制開啟。
關鍵程式碼
在程式碼中具體註釋
for root, dirs, files in os.walk(".", topdown=False): # 該迭代型別每單元返回三個部分,我們需要的檔名在第三部分,具體引數自行了解 for name in files: # name即為資料夾下每個檔案的檔名 if 'png' in name: # 判斷是否為圖片格式,筆者這裡設定png因為常用QQ截圖,可自行新增其他格式 filePath = os.path.join(root, name)[2:] # 記錄下的檔名有./.字首,所以從第二位為我們需要的filepath options = { 'detect_direction': 'true', 'language_type': 'CHN_ENG', } result = aipOcr.webImage(get_file_content(filePath),options) #通過filepath開啟並識圖 for i in result['words_result']: # result為字典型別,識別出的文字資訊存放在'words_result'對應的字典中 print(i['words']) #列表中接著巢狀字典,每一部分資訊儲存在'words'鍵中
完整程式碼
from aip import AipOcr
import os
APP_ID = '9851066'
API_KEY = 'LUGBatgyRGoerR9FZbV4SQYk'
SECRET_KEY = 'fB2MNz1c2UHLTximFlC4laXPg7CVfyjV'
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
for root, dirs, files in os.walk(".", topdown=False):
for name in files:
if 'png' in name:
filePath = os.path.join(root, name)[2:]
options = {
'detect_direction': 'true',
'language_type': 'CHN_ENG',
}
result = aipOcr.webImage(get_file_content(filePath),options)
print(result)
for i in result['words_result']:
print(i['words'])
如何使用
把程式放入單獨資料夾中,下面只要把想識別的圖片全部放入該資料夾下,執行程式即可批量識別並列印所有圖片中的文字。
執行示例
我們任意把一些圖片放入資料夾,如下面兩圖
接著我們執行程式,結果如下圖
可以看到程式讀完第一個圖,接著讀第二個圖,實現批量轉換。
經過筆者多次測試,準確率達到95%以上,達到預期效果。
接著為了提高普適性,可轉換為exe格式、增加圖形介面等,時間原因筆者不再深入。
文中涉及到的帳號密碼來源於網路分享,侵刪
轉載請告知作者