百度AI开放平台-身份证识别改进版

           可识别身份证正反面信息,优化了提取识别信息代码。

'''
百度AI开放平台,身份证识别应用,后期将进行UI设计,将识别可视化
'''

#导入相关库
# encoding:utf-8
import requests
import base64
import re



#API_Key  Secret_Key  请从百度AI开放平台申请。
API_Key = "dz2******Ojj8U2"
Secret_Key = "zUtd3Mw********K7qqXZ"

#调用鉴权接口获取的token,方法参考:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu中示例代码

def get_access_token():
    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="+ API_Key +"&client_secret="+Secret_Key
    payload = ""
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    access_token = re.findall(r'access_token":"(.*?)"',response.text)
    return access_token

#识别过程代码,参考:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck中的示例代码

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"
# 二进制方式打开图片文件,e:/lai.jpg为识别的身份证图片的本地地址
path = input("请输入身份证图片地址:")
f = open(path, 'rb')
img = base64.b64encode(f.read())
params = {"id_card_side":"front","image":img}
#获取access_token
access_token = get_access_token()
#填入access_token信息
request_url = request_url + "?access_token=" + str(access_token)
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)

#如果识别结果不为空,打印识别关键信息
if response:
    #从response.json()中取出识别的信息
    # sxrq = re.findall(r"'签发日期': {'words': '(.*?)'",str(response.json()))
    # ssrq = re.findall(r"'失效日期': {'words': '(.*?)'",str(response.json()))
    # qfjg = re.findall(r"'签发机关': {'words': '(.*?)'", str(response.json()))
    # #打印信息
    # print("签发日期:" + str(sxrq))
    # print("失效日期:"+str(ssrq))
    # print("签发机关:" + str(qfjg))
    # print(response.json())
    sfz = response.json()
    if '签发日期' in sfz['words_result']:
        qfq = sfz['words_result']['签发日期']['words']
        sxq = sfz['words_result']['失效日期']['words']
        qfjg = sfz['words_result']['签发机关']['words']
        print("签发日期:" + qfq)
        print("失效日期:"+sxq)
        print("签发机关:" + qfjg)
    elif '姓名' in sfz['words_result']:
        xm = sfz['words_result']['姓名']['words']
        xb = sfz['words_result']['性别']['words']
        mz = sfz['words_result']['民族']['words']
        cs = sfz['words_result']['出生']['words']
        zz = sfz['words_result']['住址']['words']
        sfzh = sfz['words_result']['公民身份号码']['words']
        print('姓名:' + xm)
        print('性别:' + xb)
        print('民族:' + mz)
        print('出生:' + cs)
        print('住址:' + zz)
        print('公民身份号码:' + sfzh)
    else:
        print("身份证信息识别失败!")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laixin2401_83235623

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值