上次我使用的百度AI開放平臺的API接口實現圖片的轉化,後來有許多小夥伴都私信問我,怎麼獲取百度AI平臺的AK和SK。爲了統一回答你們的問題,今天我又使用百度API實現了一個從圖片中提取文字和識別身份證的功能,詳細描述實現過程,有收穫的小夥伴記得收藏、轉發分享哦。python
百度AI開放平臺網址:login.bce.baidu.com/json
首先咱們須要註冊一個帳號,註冊登陸以後咱們選擇文字識別 服務器
菜鳥小白的平臺由於已經建立了一個應用了,首次登陸應該是沒有應用的,點擊建立應用就行了 微信
後面輸入建立的應用名稱,從建立頁面上看API支持的功能不少,什麼文字識別、身份證識別、銀行卡識別和駕駛證識別等等,另外若是須要其餘類型的功能(如圖片效果加強等)也能夠直接勾選上。 網絡
下面咱們不須要選擇文字識別包名,填寫一個應用描述點擊建立就OK了。 oracle
建立完成以後咱們就能夠看到咱們須要的AK(API Key)和SK(Secret Key)了。 app
能夠看到百度AI開放平臺是有提供API文檔和舉例代碼的。寫程序以前須要先看看咱們的要使用的接口是什麼格式,是否須要身份認證。百度AI開放就是須要使用AK和SK去和平臺作一個鑑權操做,獲取一個access token,而後咱們再拿着這個access token去請求接口,完成咱們今天須要完成的文字識別和身份證識別功能。ide
從分析來看,咱們首先須要去獲取一個access token,用於後續的請求合法性鑑別。查看平臺的接口文檔,咱們的編碼以下,這個其實在咱們以前的圖片處理程序中也是同樣的。函數
文檔地址:ai.baidu.com/ai-doc/REFE…工具
def get_access_token():
url = 'https://aip.baidubce.com/oauth/2.0/token'
data = {
'grant_type': 'client_credentials', # 固定值
'client_id': 'eFGwDIb*******HucbnPr', # 在開放平臺註冊後所建應用的API Key
'client_secret': 'XPxWT2L********PFVCKS6PVih' # 所建應用的Secret Key
}
res = requests.post(url, data=data)
res = res.json()
print(res)
access_token = res['access_token']
return access_token
複製代碼
鑑權函數寫好以後,咱們就能夠拿着獲取到的access token去向平臺接口發起請求,識別圖片中的文字了。從平臺文檔上看通用文字識別的url爲 aip.baidubce.com/rest/2.0/oc…
平臺的API文檔地址:cloud.baidu.com/doc/OCR/s/1…
#通用文字識別
def general_word():
#通用文字識別接口url
general_word_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
#獲取執行路徑
# path = os.getcwd()
# 二進制方式打開圖片文件
f = open('5.jpg', 'rb')
img = base64.b64encode(f.read())
print(img)
params = {"image":img,
"language_type":"CHN_ENG"}
access_token = get_access_token()
request_url = general_word_url + "?access_token=" + access_token
print(request_url)
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
# print(response)
# res = response.json()
if response:
res = response.json()["words_result"]
print(res)
file_name = "菜鳥小白.txt"
with open(file_name, 'w', encoding='utf-8') as f:
for j in res:
print(j["words"])
f.write(j["words"]+"\n")
複製代碼
當咱們判斷返回值存在內容時,咱們將json格式的返回值,寫入「菜鳥小白.txt」文檔中。
咱們寫完了文字識別以後,其實寫身份證識別和其它證件的識別就都是同樣的方式了調用了。
#身份證識別
def idcard():
idcard_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"
# 二進制方式打開圖片文件
f = open('4.jpg', 'rb')
img = base64.b64encode(f.read())
params = {"id_card_side":"front","image":img}
access_token = get_access_token()
request_url = idcard_url + "?access_token=" + access_token
print(request_url)
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
res = response.json()["words_result"]
file_name = "菜鳥小白的學習分享.txt"
with open(file_name, 'w', encoding='utf-8') as f:
f.write("住址:"+res["住址"]["words"]+"\n")
f.write("出生日期:" + res["出生"]["words"] + "\n")
f.write("姓名:" + res["姓名"]["words"] + "\n")
f.write("公民身份號碼:" + res["公民身份號碼"]["words"] + "\n")
f.write("性別:" + res["性別"]["words"] + "\n")
f.write("民族:" + res["民族"]["words"] + "\n")
複製代碼
最後咱們寫一個主函數調用不一樣的功能函數就行了。
if __name__ == '__main__':
idcard()
general_word()
複製代碼
這樣咱們的目標就完成了,咱們來看看實現效果吧。首先咱們看看文字識別的效果。
複製代碼
原始圖片:
最終咱們的識別僅將「API」識別爲「AP」,少了一個字符「I」,正確率高達99%以上,一個字——強。
咱們再來看看身份證的識別效果,原始圖片以下(網絡百度圖片,若有侵權請聯繫做者刪除):
老規矩,仍是公衆號回覆「文字識別」便可獲取源碼。
關注公衆號「菜鳥小白的學習分享」,回覆「粉絲福利」就能夠參與抽獎,贏得騰訊視頻會員月卡一張哦~
好了,今天分享結束了。若是你也認同菜鳥小白的學習分享的話,那就給菜鳥小白一個關注、在看、點贊+讚揚吧,大家的支持,是我持續不斷的動力。很是感謝你們的支持,咱們明天再會~
經過server醬實現定時推送天氣狀況,再不用擔憂你的糊塗蛋女朋友忘帶傘了~~
想作一個天氣推送程序,卻被和風天氣API的示例代碼調試得快吐了
媳婦兒讓我給她找一個PDF轉word免費工具,找了半天我決定給她寫一個出來^-^
媳婦兒喜歡玩某音中的動漫特效,那我就用python作一個圖片轉化軟件。
關注微信公衆號——菜鳥小白的學習分享 媽媽不再用擔憂我找不到路了
一我的的學習——孤單 一羣人的學習——幸福