快速扫描识别身份证(如何使用人工智能平台识别身份证信息)
快速扫描识别身份证(如何使用人工智能平台识别身份证信息)
大家好,我是七安。
人工智能在快速发展,已经渗透到了我们生活的方方面面。对于我们普通人,不会机器学习,不会算法,是否也可以使用人工智能。今天,七安带领大家来做一个小小的案例,使用阿里云识别身份证。
在开始之前,我先给大家列一下,目前国内比较流行的一些人工智能平台。
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
2. 各大平台请求示例
请提前下载好 Postman 进行测试。下载地址:https://www.postman.com/
2.1 腾讯云 AI 平台
腾讯云身份证识别(测试版-固定图片识别)
腾讯云身份认证(任意图片)
2.2 阿里云 AI 平台
阿里云身份证识别
2.3 华为云 AI 平台
华为云身份证识别(Auth-Token 需要动态获取)
2.4 百度云 AI 平台
3. 利用爬虫思维调用百度接口
本案例以识别身份证为例,利用爬虫的思维进行调用百度的接口。不需要登录任何账号。如果商用,请购买百度的 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
3.4 代码实现身份证示例
图片转 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" } }
注意,这里我是直接放了一张身份证的图片,与代码同一目录下。后台回复关键词 身份证,获取身份证示例图片。将上述代码放在同一目录下即可运行识别。
非常感谢你的阅读,我是七安,下期见。
,
-
- 最近几年十大票房排行榜(这7位百亿票房先生)
-
2023-08-19 09:19:11
-
- 99年海滩血案(一香港男子靠救助金度日)
-
2023-08-19 09:16:56
-
- 荣耀智慧屏x2测评43英寸(荣耀智慧屏X2评测)
-
2023-08-19 09:14:41
-
- 彝族节日一览表(倒计时三天这才是屏山彝族年的正确打开方式)
-
2023-08-19 09:12:26
-
- 广佛游玩攻略大全(广佛游玩攻略到了佛山影视城)
-
2023-08-19 09:10:11
-
- 100种品牌logo及含义 这些品牌logo你能分辨几个
-
2023-08-19 09:07:56
-
- 如何实施品牌战略管理(从品牌战略谈谈如何建立品牌管理体系)
-
2023-08-19 09:05:41
-
- 联想s5到底怎么样(联想S550锐龙版全面评测)
-
2023-08-19 09:03:26
-
- 折叠屏手机推荐排行榜2023 折叠屏手机盘点与推荐
-
2023-08-19 09:01:11
-
- 裴勇俊主演的电视剧,裴斗娜主演的电视剧
-
2023-08-19 04:57:15
-
- 进击的巨人一共分几季(第三季part2完结详解)
-
2023-08-19 04:55:00
-
- 步步惊心演员表,步步惊情电视剧全(步步惊情 电视剧演员表)
-
2023-08-19 04:52:46
-
- 晨曦公主结局(晨曦公主结局哈克)
-
2023-08-19 04:50:30
-
- 41岁陈乔恩素颜出镜看清她的样子(41岁陈乔恩再演偶像剧)
-
2023-08-19 04:48:15
-
- 西游记三打白骨精之后遇到的妖精(西游天庭七仙女为何把神泉拱手让给蜘蛛精)
-
2023-08-19 04:46:00
-
- 亲爱的翻译官乔菲和程家阳大结局(亲爱的翻译官大结局43)
-
2023-08-19 04:43:45
-
- 薛佳凝演过的电视剧,薛佳凝最近演(薛佳凝扮演的电视剧)
-
2023-08-19 04:41:31
-
- 牛丽燕,牛丽燕演的电视剧
-
2023-08-19 04:39:16
-
- 漫威绿巨人实力排名(漫威影史中出现过4位绿巨人)
-
2023-08-19 04:37:01
-
- 海波是晶体吗(海波是晶体还是非晶体)
-
2023-08-19 01:05:53