# huaweicloud-solution-ID-verification **Repository Path**: HuaweiCloudDeveloper/huaweicloud-solution-id-verification ## Basic Information - **Project Name**: huaweicloud-solution-ID-verification - **Description**: 基于华为云EI服务,通过动作活体检测判断操作用户是否为真人,并将检测结果与用户身份证信息关联起来,使用人证核身技术,对接权威数据库,实现对用户身份真实性的核验。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-04-27 - **Last Updated**: 2024-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] **解决方案介绍** =============== 该解决方案通过用户提供的视频进行活体查验,并将用户身份证信息与权威数据库比对,实现身份核验。 解决方案实践详情页面:https://www.huaweicloud.com/solution/implementations/id-verification.html **架构图** --------------- ![方案架构](./document/ID-verification.png) **架构描述** --------------- 该解决方案会部署如下资源: 1. API(应用程序编程接口),应用将自身的服务能力封装成API,并通过API网关开放给用户调用。 2. 函数工作流FunctionGraph,只需编写业务函数代码并设置运行的条件,即可以弹性、免运维、高可靠的方式运行。 3. 人证核身服务,通过用户的身份证信息、人脸图片,与权威数据库进行比对,进而实现身份验证。 4. 动作活体检测,通过判断视频中的人物动作与传入动作列表是否一致来识别视频中人物是否为活体。 **组织结构** --------------- ``` lua huaweicloud-solution-website-security ├── id-verification.tf.json -- 资源编排模板 ├── functiongraph ├── ivs_frs_app.py -- 函数文件 ``` **开始使用** --------------- 表1 参数填写说明 | 参数名称 | 类型 | 是否必填 | 参数解释 | 备注 | | ------------ | ------------ | ------------ | ------------ | ------------ | | actions | String | 是 |动作代码顺序列表,英文逗号(,)分隔。建议单动作,目前支持的动作有: 1:左摇头 2:右摇头 3:点头 4:嘴部动作(视频录制详见下文 1、视频采集注意事项) 仅当actions的传参顺序和视频中的动作顺序一致时返回true。例如,视频中人物动作顺序为点头、嘴部动作,传参顺序需为3,4。 | 若上传视频动作顺序与填写动作顺序不一致时,活体检测服务校验失败,服务终止。 | | video_url | String | 是 |视频的URL路径,目前仅支持华为云上OBS的URL,且人脸识别服务有权限读取该OBS桶的数据。 开通读取权限的操作请参见服务授权。视频要求: 视频Base64编码后大小不超过8MB。 限制视频时长1~15秒。建议帧率10fps-30fps。封装格式:mp4、avi、flv、webm、asf、mov。 视频编码格式: h261、h263、h264、hevc、vc1、vp8、vp9、wmv3。| 格式:https://访问域名/文件名(带后缀) | | verification_name | String | 是 |被验证人的姓名。 | | | verification_id | String | 是 |被验证人的身份证号码。| | 1、视频采集注意事项: 1.保证光线正常,不要出现背光、过亮或过暗等。 2.人脸需尽可能位于手机画面中央,不能太小或太大。 3.人脸尽可能与手机保持水平,避免过于仰视、俯视和侧视。 4.低头、左转或右转时,动作速度保持正常,不要过快或过慢,幅度不宜过大,整个动作过程中,人脸需要保证在手机画面中,不宜移出手机画面。 5.张嘴动作时,开始状态应处于合嘴状态,不宜处于张嘴或半张嘴状态。 6.整个动作期间,动作不宜太快和太慢,一个动作需在2~5秒内完成。不要出现突然动作,如突然转头、突然张大嘴等。 2、打开浏览器输入 “[https://www.huaweicloud.com](https://www.huaweicloud.com)” 网址进入华为云官网,单击进入控制台 图1 进入华为云官网打开控制台 ![华为云官网控制台](./document/readme-image-001.png) 3、进入控制台页面后,在服务搜索中输入“API网关”进入 图2 进入API网关管理页面 ![API网关管理](./document/readme-image-002.png) 4、单击共享版,进入共享版API网关管理页面 图3 单击进入共享版API网关管理页面 ![共享版API网关管理](./document/readme-image-003.png) 5、进入共享版API网关管理页面后单击左侧导航栏“开放API”“API管理”单击已创建的API名称,进入对应API网关管理页面。 图4 进入对应API网关管理页面 ![API网关管理](./document/readme-image-004.png) 6、单击调试,进入调试页面。 图5 准备调试 ![准备调试](./document/readme-image-005.png) 7、请求方法选择“GET”在查询参数中输入对应参数键和值(详见 表1 参数填写说明),单击发起请求,即可看到对应的响应结果。 图6 开始调试 ![开始调试](./document/readme-image-006.png) ![开始调试](./document/readme-image-007.png) 表2 请求响应说明 | 响应示例 | 响应说明 | | ------------ | ------------ | | [{'meta': {'uuid': '2022-05-16T09:57:00.539597'}, 'result': {'service_name': 'ivs-standard', 'count': 1, 'resp_data': [{'verification_result': 'valid', 'verification_message': 'Successful certification', 'verification_code': 1000, 'similarity': '94'}]}}, {'video-result': {'alive': True, 'actions': [{'action': 2, 'confidence': 0.9420696496963501}, {'action': 1, 'confidence': 0.918700635433197}, {'action': 3, 'confidence': 0.9200282096862793}], 'picture': '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB...'}'warning-list': []}] | 成功响应。 | | Failed to invoke the FRS service | 活体检测服务调用失败,需检查“video_url”视频路径和“actions”动作参数是否输入正确。 | | living body verification failed | 活体检测服务校验未通过,服务终止。 | | Failed to invoke the IVS service | 人证核身服务调用失败,需检查“verification_name”姓名和“verification_id”身份证号参数是否输入正确。 | | Failed to verify the certificate of the applicant | 活体检测服务校验未通过,服务终止。 | | video_url or actions not obtained| “video_url ”视频的URL路径,或者 “actions ”动作代码顺序列表,未传参。 | | verification_name or verification_id not obtained | “verification_name ”被验证人的姓名,或者“verification_id ”被验证人的身份证号码,未传参。 |