通过微信OCR识别获取身份证信息

文档设计到的参考链接地址文档设计到的参考链接地址:

微信官方文档ocr.idcard
微信OCR识别购买地址


业务背景

提取小程序端用户上传的身份证图片上面的信息,存到数据库中,以便做实名认证或者其它业务操作;

操作过程
  1. 上传照片
    小程序端将身份证图片上传到文件服务得到文件id,小程序开发者将文件id传给后端开发者,后端开发者接收到文件id后开发处理业务;
  2. 获取access_token
    access_token是微信接口调用凭证,根据小程序的appid和appsecret来获取,注意,获取的access_token是有时间限制的,一般是2小时,开发者可以将access_token存到redis上面,不需要个请求都获取一遍;
  3. 根据access_token和图片地址(图片地址是根据小程序开发者传的文件id拼接出来的链接,这里采用的是文件下载的链接,文件查看链接估计也可以,这里没有尝试,注意下,链接必须是域名,否则会报莫名其妙的错误)发起ocr请求(测试前请购买ocr接口次数,有个每天免费100次的选择,测试可以选择那个,以后真正生产就要注意下使用的次数),得到身份证相关信息,正面返回信息如下(xxx 是我自己改掉的,因为这是我个人的信息):
{
   "errcode":0,"errmsg":"ok","type":"Front","name":"杨xx","id":"4453xx199xxxxxxxxxxxxx","addr":"广东省云浮市xx县xx镇xxxxxx","gender":"男","nationality":"汉","birth":"199x-xx-xx","card_property":4}
  1. 信息入库,返回给前端
    将信息整理好后,插入数据库,并将身份证号码和姓名返回给小程序开发者,因为信息还需要展示给用户确认;
上代码

代码中用到一些通用的插件和工具类就不一一列举,在pom文件中加入相关的依赖包就可以了,如lombok、hutool、validation等

  • controller
    /**
     * 微信ocr获取用户身份证信息
     *
     * @param ocrUserVerifyBO 参数对象
     * @param bindingResult 错误对象
     * @return com.hydosky.cloud.user.vo.miniprogram.MiniprogramUserVO
     * @author lingchao.yang
     * @date 2020/9/7
     */
    @PostMapping("wx-ocr-idcard")
    public MiniprogramUserVO getIdCardInfo(@Valid @RequestBody OcrUserVerifyBO ocrUserVerifyBO, BindingResult bindingResult) {
   
        ErrorFormatUtils.validateBindingResult(bindingResult);
        return iMiniprogramUserService.getIdCardInfo(ocrUserVerifyBO);
    }
  • MiniprogramUserVO
package com.hydosky.cloud.user.vo.miniprogram;
import lombok.Data;
/**
 * 登录后返回的对象
 *
 * @author lingchao.yang
 * @date 2020/8/24
 */
@Data
public class MiniprogramUserVO {
   
    /**
     * 用户id
     */
    private String id;
    /**
     * 电话号码
     */
    private String purePhoneNumber;
    /**
     * 真实姓名
     */
    private String realName;
    /**
     * 身份证号码
     */
    private String idCardNumber;
    /**
     * 认证状态 1未认证;2认证中;3认证成功;4认证失败
     */
    private Integer authenticationStatus;
    /**
     * 认证身份证正面照片id
     */
    private String idCardFrontId;
    /**
     * 认证身份证反面照片id
     */
    private String idCardBehindId;
    /**
     * 认证自拍照照片id
     */
    private String selfPortraitId;
}
  • OcrUserVerifyBO
package com.hydosky.cloud.user.bo.miniprogram;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
 * 小程序实名认证入参
 *
 * @author lingchao.yang
 * @date 2020/9/7
 */
@Data
public class
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值