python+百度AI實現卡證類圖像身份信息識別
步驟一:進入百度AI開放平台
步驟二:創建應用,有通用和帶有位置信息的兩種api,根據需要選擇,我這里選擇的是通用版
步驟三:創建成功后,會有三個參數,即:APP_ID, API_KEY, SECRECT_KEY,對應填寫到程序的相關位置即可,如圖
步驟四:創建picture文件夾,這里放入你准備識別的圖像。
和picture文件夾同目錄創建python文件,寫入以下代碼:
1 """ 2 Date:2020/03/13 3 利用百度api實現圖片文本識別 4
5 """ 6 7 import glob 8 from os import path 9 import os 10 from aip import AipOcr 11 from PIL import Image 12 13 14 def convertimg(picfile, outdir): 15 '''調整圖片大小,對於過大的圖片進行壓縮 16 picfile: 圖片路徑 17 outdir: 圖片輸出路徑 18 ''' 19 img = Image.open(picfile) 20 width, height = img.size 21 while (width * height > 4000000): # 該數值壓縮后的圖片大約 兩百多k 22 width = width // 2 23 height = height // 2 24 new_img = img.resize((width, height), Image.BILINEAR) 25 new_img.save(path.join(outdir, os.path.basename(picfile))) 26 27 def baiduOCR(picfile, outfile): 28 """利用百度api識別文本,並保存提取的文字 29 picfile: 圖片文件名 30 outfile: 輸出文件 31 """ 32 filename = path.basename(picfile) 33 #***********************************************************在這里填寫你的參數****************************************** 34 APP_ID = '**********' # 剛才獲取的 ID,下同 35 API_KEY = '******************' 36 SECRECT_KEY = '******************'42 43 i = open(picfile, 'rb') 44 img = i.read() 45 print("正在識別圖片:\t" + filename) 46 message = client.basicGeneral(img) # 通用文字識別,每天 50 000 次免費 47 # message = client.basicAccurate(img) # 通用文字高精度識別,每天 800 次免費 48 print("識別成功!") 49 i.close() 50 51 with open(outfile, 'a+',encoding='utf-8') as fo: 52 fo.writelines("+" * 60 + '\n') 53 fo.writelines("識別圖片:\t" + filename + "\n" * 2) 54 fo.writelines("文本內容:\n") 55 56 # 輸出文本內容 57 for text in message.get('words_result'): 58 fo.writelines(text.get('words') + '\n') 59 fo.writelines('\n' * 2) 60 61 print("文本導出成功!") 62 print() 63 64 65 if __name__ == "__main__": 66 67 outfile = 'export.txt' 68 outdir = 'tmp' 69 if path.exists(outfile): 70 os.remove(outfile) 71 if not path.exists(outdir): 72 os.mkdir(outdir) 73 print("壓縮過大的圖片...") 74 #首先對過大的圖片進行壓縮,以提高識別速度,將壓縮的圖片保存與臨時文件夾中 75 for picfile in glob.glob("picture/*"): 76 convertimg(picfile, outdir) 77 print("圖片識別...") 78 for picfile in glob.glob("tmp/*"): 79 baiduOCR(picfile, outfile) 80 os.remove(picfile) 81 print('圖片文本提取結束!文本輸出結果位於 %s 文件中。' % outfile) 82 os.removedirs(outdir)
運行結果如下:
測試圖像:
輸出的文本:
有什么問題歡迎評論區交流。