在我們的日常辦公中,經常有識別圖片中的大段文字的需求。現在很多軟體都收費,所以本篇文章分享一個案例,如何通過Python寫一個ocr圖片識別小程序。
本例中的程序十分簡單,流程如下:
本例僅僅實現了基礎功能,還可以開發一個界面上傳圖片,或增加翻譯等功能。
本例用到了百度的OCR識別,可以到百度雲中免費註冊,每天可以免費識別5萬次,足夠日常使用。
根據百度的幫助文檔可以很方便的註冊和創建文字識別應用,參考連接:https://cloud.baidu.com/doc/OCR/s/zk3h7xz52
最終我們獲得了【請求URL】:https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
【API Key】和【Secret Key】,這樣就可以發送請求了。
接下來是代碼部分,參考注釋可以很輕易的讀懂程序,代碼量也較小:
import base64import requestsimport json
image_src = 'C:\\Users\\bli206\\Desktop\\Z.png' image_str_a = ''with open(image_src, 'rb') as f: data = f.read() encodestr = base64.b64encode(data) image_str_a = 'base64,'+str(encodestr,'utf-8') print(image_str_a[0:20]) print('圖片編碼長度:'+str(len(image_str_a)))
v_api_key = 'xxxxxxx 你的API Key'v_secret_key = 'xxxxxxx 你的Secret Key'r_token = requests.post(url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+v_api_key+'&client_secret='+v_secret_key)v_r_token = json.loads(r_token.text)v_token = v_r_token['access_token']print('獲取token:'+v_token)
rq_ocr_url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token='+v_tokenrq_ocr_data = {'image':image_str_a}headers = {'content-type': 'application/x-www-form-urlencoded'}res_ocr = requests.post(url=rq_ocr_url,data=rq_ocr_data,headers=headers)ocr_result = json.loads(res_ocr.text)words_list = ocr_result['words_result']
result = ''for words in words_list: result = result + words['words']result = result.replace('\n', '').replace('\r', '')print(result)txt_src = 'C:\\Lee\\s\\python\\程序\\ocr_result.txt' with open(txt_src, 'w') as f2: f2.write(result)
print('over.')註:本例中用到了python包,base64、requests和json,如果程序報錯無法引入module時可以使用pip進行安裝。
感謝閱讀。
請作者喝杯咖啡