简介:通过App Inventor 2和万维易源API数据服务平台,制作一个拍照识别身份证信息,智能进行人脸比对的人证比对系统,实现智能身份验证。
在很多重要的场所,人员进出需要刷身份证和人脸,识别比对成功才可以出入。此类访客登记系统不仅提高了登记人员工作效率,同时也让访客信息得以准确完整的保留,方便查询和汇总分析。但访客系统通常造价不菲,投入较高,有没有低成本的替代方案呢?对于喜欢动脑动手的小伙伴来说,这确实是可行的。下面我们就以App Inventor 2(以下简称AI2)为例,借助万维易源API接口,自制一个安卓版的身份证识别及人证比对验证系统。
1. 实验目标
(1) 学习实践AI2平台的web请求功能
(2) 学习实践万维易源API数据接口
(3) 学习处理常用的API数据类型
2. 实验所需资源
硬件:
(1) 电脑
(2) 手机
本文实验所用的台式电脑为Windows7操作系统,手机为安卓系统。
软件:
(1) App Inventor 2可视化编程平台
本实验采用的是App Inventor 2的汉化增强版软件WxBit(网址为:https://www.wxbit.com/),推荐使用谷歌、QQ、Firefox、Safari等非IE浏览器登录WxBit平台,平台使用方法参考官网或前期文章介绍。下文所指的AI2平台兼指WxBit平台。
(2) 万维易源API数据服务平台
万维易源是一个一站式全网API调用平台,网址为https://www.showapi.com/,它通过统一的通讯协议,为用户提供了一个便捷的互联网接口调用入口。这个平台整合了海量的API资源,覆盖了从快递物流、天气预报到实名认证、条码查询等多个领域,实现了数据API化,极大地方便了开发者的数据调用需求。
此实验需要有一定的基础知识,如API接口的概念,Web请求的概念,常见的GET、POST请求的区别,请求和返回的数据类型,比如常见的JSON、字典、base64等数据类型的概念。
3. 注册万维易源API数据服务平台
在万维易源注册并完成实名认证后,在“API市场”搜索“人证”关键词,平台会显示本次实验所需的“实人认证”和“个人证照OCR识别”两个API接口。
4. 分别进入接口页面,详细查看“接口文档”,使用“在线调试”功能,测试了解接口使用方法
API接口需要购买才能开通使用,不过也可以免费进行少量的测试,大家可根据需求按需开通。下面以“个人证照OCR识别”接口文档进行举例,了解需要重点关注的内容。根据实验需要,我们只对身份证正面进行识别,刚好接口第三项就有“OCR身份证识别(正面)”这个选项,所以只需研究这个接口的内容就行:
接口说明:
这里要了解的是接口网址,该接口的网址为https://route.showapi.com/1429-3?appKey={your_appKey}。点击后面的“查看密钥”,就可以查询自己的appKey密钥,把它复制到网址后面替换{your_appKey}中的内容,就组成了该接口的完整网址。
请求参数:
该接口请求参数有三个,具体如下图,注意参数名称,数据类型,是否必须等要求。
返回参数:
在请求参数正确的条件下,API返回以下数据,根据接口说明,该返回内容为JSON格式。
在线调试:
接口页面提供了在线调试功能,可以直观的看到请求体和返回体,并且可以根据开发平台自动生成示例代码。
另一个接口用到的是“实人认证”的“身份证二要素人像比对”接口,同样按照上述步骤查看接口文档了解接口网址及请求、返回参数。
5. 在AI2平台进行编程
(1) 登录AI2平台(WxBit)并新建一个名为“人证比对系统”的项目
由于项目内容较多,本文仅做总体介绍,文末附有项目文件下载链接,感兴趣的朋友可下载参考。
(2) 在“组件设计”界面添加组件和素材
从“组件面板”添加组件到屏幕:
切换“素材列表”添加素材到项目:
(3) 切换到“逻辑设计”界面对组件功能和事件进行编程
变量设置和程序初始化:
此处将标签放入列表主要是为了在屏幕初始化的时候统一设置文字大小。也可以在组件设计界面逐一设置标签格式。
拍摄身份证程序:
单击“拍摄身份证”按钮,启动手机摄像头进行拍摄,拍摄完成后自动将图片压缩为1200*800像素,然后再转换为符合URL格式的base64数据格式。这段程序主要考虑到API接口对文件大小的要求,所以对拍摄图片进行了压缩,同时由于base64在URL传输中的格式有要求,所以使用“URL命令”进行编码。
上传身份证照片程序:
点击“从相册上传”按钮,打开手机相册程序,选择身份证照片,选择完成后自动压缩照片并编码为符合URL要求的base64格式。
智能识别程序:
当点击“智能识别”按钮后,程序将身份证图片发送至API进行识别,然后返回识别到的数据。相关参数设置必须与万维易源中的“个人证照OCR识别”接口参数一致。在发起请求前,需要将http客户端的网址设置与API接口一致。
接收识别数据程序:
在API请求访问成功后,程序会收到来自API服务平台的返回信息,也就是识别到的身份证文本信息。根据API接口手册,返回数据是JSON格式,为便于查找,程序首先将JSON转换为字典格式。由于返回体包括公共参数,而我们所需的主要是返回主体,也就是"showapi_res_body",所以在字典中查找该值,然后赋值给预设的“获取信息”字典变量。然后在通过字典数据类型的查找功能,逐一将返回信息对应显示在预设标签上,智能识别功能也就成功实现了。
程序中关于JSON、字典等数据的处理方法有很多,在满足设计功能的条件下,越简单越好,程序运行效率也就越高,应该尽量优化。至此,一个基本的API请求及接收流程已经完成,大家还可进一步从程序报错,身份证正反面,以及其他证件识别进行摸索和完善。
人脸拍摄和照片上传程序:
也是一样的设计思路,点击相应按钮启动摄像头或者打开手机相册,然后将照片压缩并转换为满足URL要求的base64格式。
人脸对比和结果接收程序:
参照“实人认证”API接口中的“身份证二要素人像比对”接口说明,设置好http客户端网址后,在POST请求中添加对应请求参数,然后等待接收返回数据,最后在对应标签显示所需数据。
(4) 手机调试或安装“人证比对系统”
编程完成后,可以通过WxBit平台的“预览”或“打包”功能调试或安装刚才的“人证比对系统”。使用方法可参考前期文章或者查看平台使用说明。
(5) 测试程序
该程序需要真实身份证和真人进行拍照上传测试,对拍照环境和图片质量有一定要求,需要摸索确定最佳识别效果。如果测试失败,请围绕API使用权限,是否有余量,请求参数及格式是否正确等进行排查完善。
此次试验实现了身份证自动识别,人脸智能比对的功能,但识别完成后如何存储,如何查询还有没有涉及,后期试验将进一步完善。