天天看點

Python——調用百度AI實作圖檔上文字識别簡介步驟

Python——調用百度AI實作圖檔上文字識别

  • 簡介
  • 步驟
    • 安裝百度AI庫
    • 調用百度AI開放平台
    • 調用glob庫
    • 調用AipOcr庫識别文字
      • 可能會遇到的問題
    • 批量操作

簡介

Python免費調用百度AI實作圖檔上面的文字識别

步驟

安裝百度AI庫

!pip install baidu-aip
           

調用百度AI開放平台

先注冊百度AI,獲得ID和密鑰。注冊方法可參考:注冊方法 隻需走到 “1.6 擷取密鑰” 即可。然後記錄下自己的APP_ID、API_KEY、SECRET_KEY,就可以開始了。

Python——調用百度AI實作圖檔上文字識别簡介步驟

調用glob庫

glob庫用于獲得指定路徑下的指定字尾的檔案,圖檔使用的是《數學模型》pdf掃描版,部分如下:

Python——調用百度AI實作圖檔上文字識别簡介步驟
import glob
path = "數學模型\\"
glob.glob(path+"*.png")
           

指定檔案夾中的指定的.png字尾的檔案,全部提取出來了:

Python——調用百度AI實作圖檔上文字識别簡介步驟

選取第一張圖檔 “數學模型1.png” 做測試:

files = glob.glob(path+"*.png")
file = files[0]
           

調用AipOcr庫識别文字

導入AipOcr子產品,這個子產品是用于做文字識别的(OCR即Optical Character Recognition,光學字元識别)。

from aip import AipOcr #導入AipOcr子產品,用于做文字識别
import glob

APP_ID = '*********' # 你申請的
API_KEY = '*********'# 你申請的
SECRET_KEY = '*********'# 你申請的

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
pic = open(file,'rb')# 以二進制(rb)打開
img = pic.read() # 讀取
message = client.basicGeneral(img) # 調用百度AI識别圖檔中的文字
           

檢視message參數,結果如下:

Python——調用百度AI實作圖檔上文字識别簡介步驟

可見,message參數的結果為 “大字典” 形式,其中的鍵 “words_result” 所對應的值為一個 “大清單” ,這個清單又是以 “小字典” 作為元素。使用語句可以篩選出該頁的标題:

Python——調用百度AI實作圖檔上文字識别簡介步驟

識别效果圖:

Python——調用百度AI實作圖檔上文字識别簡介步驟

識别也不是完美的,有很多識别錯誤與未識别出的文字。當然,原圖字型越清晰,識别度越高。

可能會遇到的問題

識别過程中可能會遇到類似識别錯誤(無法識别)問題,原因是未領取免費識别次數,解決過程如下:

百度OCR API識别失敗:Open api qps request limit reached 錯誤 解決方法

Python——調用百度AI實作圖檔上文字識别簡介步驟

批量操作

若要批量操作則隻需要增加一句for循環就行:

from aip import AipOcr #導入AipOcr子產品,用于做文字識别
import glob

APP_ID = '*********' # 你申請的
API_KEY = '*********'# 你申請的
SECRET_KEY = '*********'# 你申請的
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

path = "數學模型\\"
files = glob.glob(path+"*.png")

txt_file = open('數學模型.txt', 'a')

for file in files:
    pic = open(file,'rb')# 以二進制(rb)打開
    img = pic.read() # 讀取
    message = client.basicGeneral(img) # 調用百度AI識别圖檔中的文字
    for words in message['words_result']:
        word = words['words'] # 提取文字
        print(word)

        txt_file.write(word) # 将文字寫入文本檔案

txt_file.close() # 關閉文本檔案