如何快速识别身份证信息(如何使用人工智能平台识别身份证信息)
如何快速识别身份证信息(如何使用人工智能平台识别身份证信息)https://ai.baidu.com/百度云AI平台地址云功能截图在线体验地址
大家好,我是七安。
人工智能在快速发展,已经渗透到了我们生活的方方面面。对于我们普通人,不会机器学习,不会算法,是否也可以使用人工智能。今天,七安带领大家来做一个小小的案例,使用阿里云识别身份证。
在开始之前,我先给大家列一下,目前国内比较流行的一些人工智能平台。
1. 国内人工智能平台
云平台 |
平台地址 |
云功能截图 |
在线体验地址 |
百度云AI |
https://ai.baidu.com/ |
|
https://ai.baidu.com/tech/ocr_cards/idcard |
阿里云AI |
https://ai.aliyun.com/ |
|
https://duguang.aliyun.com/experience?spm=5176.12127946.J_2510283090.4.4a0576c9iKFsz5&type=standard&subtype=idcard#intro |
腾讯云AI |
https://cloud.tencent.com/ |
|
https://cloud.tencent.com/act/event/ocrdemo?dt=1 |
华为云AI |
https://www.huaweicloud.com/ |
|
https://lab.huaweicloud.com/solutiondetail_567?ticket=ST-5868815-WCtRyXy2QFDGOde6T4gqjdKJ-sso |
请提前下载好 Postman 进行测试。下载地址:https://www.postman.com/
2.1 腾讯云 AI 平台腾讯云身份证识别(测试版-固定图片识别)
腾讯云身份认证(任意图片)
阿里云身份证识别
华为云身份证识别(Auth-Token 需要动态获取)
本案例以识别身份证为例,利用爬虫的思维进行调用百度的接口。不需要登录任何账号。如果商用,请购买百度的 API。本文撰写的的目的是为了让小白更加快速地上手。有任何问题,请联系七安删除。
3.1 打开百度的身份证识别演示案例地址:https://ai.baidu.com/tech/ocr_cards/idcard
3.2 身份证解析接口找到功能演示,右击检查
在右侧有一个 Fetch/XHR 控件,点击一下,并刷新一下,出现如下图,可以看到一个名为 aidemo 的接口。
鼠标点击一下,可以看到我有我们识别的身份证信息,如下:
{"errno":0 "msg":"success" "data":{"card_quality":{"IsClear_propobility":0.9209558368 "IsNoCover":1 "IsClear":1 "IsNoCover_propobility":0.8376007676 "IsComplete_propobility":0.9831219316 "IsComplete":1} "words_result":{"姓名":{"location":{"top":434 "left":657 "width":297 "height":130} "words":"徐乐"} "民族":{"location":{"top":664 "left":1177 "width":88 "height":110} "words":"汉"} "住址":{"location":{"top":1068 "left":641 "width":1061 "height":257} "words":"安徽省宿州市埇桥区朱仙庄镇"} "公民身份号码":{"location":{"top":1593 "left":1040 "width":1431 "height":146} "words":"652901196611026716"} "出生":{"location":{"top":855 "left":638 "width":850 "height":120} "words":"19661102"} "性别":{"location":{"top":660 "left":650 "width":98 "height":114} "words":"男"}} "words_result_num":6 "idcard_number_type":1 "image_status":"normal" "risk_type":"normal" "log_id":"6239341674166648223"}}
打开网站 https://www.json.cn/# 格式化后,结果如下:
{
"errno":0
"msg":"success"
"data":{
"card_quality":{
"IsClear_propobility":0.9209558368
"IsNoCover":1
"IsClear":1
"IsNoCover_propobility":0.8376007676
"IsComplete_propobility":0.9831219316
"IsComplete":1
}
"words_result":{
"姓名":{
"location":{
"top":434
"left":657
"width":297
"height":130
}
"words":"徐乐"
}
"民族":{
"location":{
"top":664
"left":1177
"width":88
"height":110
}
"words":"汉"
}
"住址":{
"location":{
"top":1068
"left":641
"width":1061
"height":257
}
"words":"安徽省宿州市埇桥区朱仙庄镇"
}
"公民身份号码":{
"location":{
"top":1593
"left":1040
"width":1431
"height":146
}
"words":"652901196611026716"
}
"出生":{
"location":{
"top":855
"left":638
"width":850
"height":120
}
"words":"19661102"
}
"性别":{
"location":{
"top":660
"left":650
"width":98
"height":114
}
"words":"男"
}
}
"words_result_num":6
"idcard_number_type":1
"image_status":"normal"
"risk_type":"normal"
"log_id":"6239341674166648223"
}
}
至此,我们找到了识别身份证的接口。
3.3 分析接口这里,我建议建议大家自己找一个身份证图片,点击本地上传,分析右侧接口的数据。
很奇怪,我们并没有发现图片是通过什么上传的,别急。点击右侧的 Payload,你会发现,有一个图片的参数。不过是 base64。大家可以打开 http://www.jsons.cn/img2base64/ ,上传你刚刚在本地上传测试的身份证图片,解析后与这里的参数对比,可以发现是一致的。
经过分析,请求参数如下:
Header如下:
参数 |
值 |
Content-Type |
application/x-www-form-urlencoded |
Host |
ai.baidu.com |
Origin |
https://ai.baidu.com |
Referer |
https://ai.baidu.com/tech/ocr_cards/idcard |
User-Agent |
https://ai.baidu.com/tech/ocr_cards/idcard |
Body中放置请求参数,参数详情如下:
参数 |
值 |
image |
base64图片值 |
image_url | |
type |
https://aip.baidubce.com/rest/2.0/ocr/v1/idcard |
id_card_side |
front |
detect_photo |
false |
detect_risk |
true |
detect_quality |
true |
- 身份证示例
- 图片转 base64
- 完整代码实现
import requests
import base64
url = 'https://ai.baidu.com/aidemo'
headers = {
# 'Accept': '*/*'
# 'Accept-Encoding': 'gzip deflate br'
# 'Accept-Language': 'zh-CN zh;q=0.9'
# 'Connection': 'keep-alive'
# 'Content-Length': '298165'
'Content-Type': 'application/x-www-form-urlencoded'
# 'Cookie': 'BIDUPSID=B493293EF5551708B0B3A75A1746660E; PSTM=1626534314; BAIDUID=B493293EF555170867455BC015F4E610:FG=1; __yjs_duid=1_6f801b111f14006ae93df96bf431ddf21626587717232; MCITY=-354:; BDUSS=0lCTkRsaE1ZZGtINERmb0hwSTZSVlFMMm5wQVdNTHZINkZMTVFFWmZCbEJtbDlpRVFBQUFBJCQAAAAAAAAAAAEAAABpOk06sK7H6bqjTG92ZcDW1LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEENOGJBDThiR; BDUSS_BFESS=0lCTkRsaE1ZZGtINERmb0hwSTZSVlFMMm5wQVdNTHZINkZMTVFFWmZCbEJtbDlpRVFBQUFBJCQAAAAAAAAAAAEAAABpOk06sK7H6bqjTG92ZcDW1LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEENOGJBDThiR; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; Hm_lvt_8b973192450250dd85b9011320b455ba=1651995973; Hm_lpvt_8b973192450250dd85b9011320b455ba=1651998828; ab_sr=1.0.1_OGVjMjI5MzJkMTc1YWI5OGJlMTU2NzcyNGI2ZjE5ZDljN2Y4N2UwZmVlMzVkMTg5NzI0ZThlZmU2NzM3OTBjZDRhMTM4M2U2YWRiODYzMDNhNzQ1MjgwMmRkZTdjZTU0MjhkNTc5ZGUwZGIzMWQ2ODRkMTk5YTQyYjgyM2Y1YjkzZjRhYWUyMGQzZGY2MDE0NTQ4NjA5MWQ4ZGQ2MTEwOQ==; delPer=0; PSINO=2; BAIDUID_BFESS=BB0683E87BC25C70C608B00BA15DCAD3:FG=1; H_PS_PSSID=36185_36309_31660_34812_36167_34584_35979_36073_36235_26350_36349_36314_36061; BA_HECTOR=0g8h8k8ga185252htf1h7f29j0q'
'Host': 'ai.baidu.com'
'Origin': 'https://ai.baidu.com'
'Referer': 'https://ai.baidu.com/tech/ocr_cards/idcard'
# 'sec-ch-ua': '" Not A;Brand";v="99" "Chromium";v="101" "Google Chrome";v="101"'
# 'sec-ch-ua-mobile': '?0'
# 'sec-ch-ua-platform': '"Windows"'
# 'Sec-Fetch-Dest': 'empty'
# 'Sec-Fetch-Mode': 'cors'
# 'Sec-Fetch-Site': 'same-origin'
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/101.0.4951.54 Safari/537.36'
}
with open('sfz.jpg' 'rb') as f:
res = f.read()
# 获取身份证的base64图片
img = 'data:image/jpeg;base64 ' str(base64.b64encode(res) 'utf-8')
data = {
'image': img
'image_url': ''
'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard'
'id_card_side': 'front'
'detect_photo': 'false'
'detect_risk': 'true'
'detect_quality': 'true'
}
res = requests.post(url headers=headers data=data)
if res.status_code == 200:
print(res.text)
- 结果格式化后如下
{
"errno":0
"msg":"success"
"data":{
"card_quality":{
"IsClear_propobility":0.905374527
"IsNoCover":1
"IsClear":1
"IsNoCover_propobility":0.8388896585
"IsComplete_propobility":0.8842121959
"IsComplete":1
}
"words_result":{
"姓名":{
"location":{
"top":441
"left":648
"width":292
"height":114
}
"words":"王飞"
}
"民族":{
"location":{
"top":657
"left":1170
"width":78
"height":100
}
"words":"汉"
}
"住址":{
"location":{
"top":1057
"left":630
"width":936
"height":113
}
"words":"辽宁省大连市甘井子区"
}
"公民身份号码":{
"location":{
"top":1574
"left":1035
"width":1399
"height":123
}
"words":"522530199208180048"
}
"出生":{
"location":{
"top":845
"left":624
"width":846
"height":106
}
"words":"19920818"
}
"性别":{
"location":{
"top":659
"left":646
"width":93
"height":103
}
"words":"女"
}
}
"risk_type":"normal"
"words_result_num":6
"idcard_number_type":1
"image_status":"normal"
"log_id":"1523297051593742519"
}
}
注意,这里我是直接放了一张身份证的图片,与代码同一目录下。后台回复关键词 身份证,获取身份证示例图片。将上述代码放在同一目录下即可运行识别。
非常感谢你的阅读,我是七安,下期见。