1. 程式人生 > >批量識別圖片中文字(python、百度開發者工具)

批量識別圖片中文字(python、百度開發者工具)

進來一直為各種課程的實驗報告困擾,字數很多,百度文庫、豆瓣等資源網站又無法免費下載。

就想著如果我能把他們截圖下來,然後批量轉換成文字該多好呢?

所謂懶惰是人類進步的階梯。

筆者決定通過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格式、增加圖形介面等,時間原因筆者不再深入。

文中涉及到的帳號密碼來源於網路分享,侵刪

轉載請告知作者