上次我使用的百度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作一个图片转化软件。
关注微信公众号——菜鸟小白的学习分享 妈妈不再用担忧我找不到路了
一我的的学习——孤单 一群人的学习——幸福