记录在小程序中前端调用百度 Ocr 识别身份证信息

微信小程序因为业务扩展需要用户身份证信息,这里记录一下在小程序中通过百度ocr识别的一个开发过程记录。

1. 注册百度云账号

 首先,我们要去百度云注册个账号,百度云注册 ,已经注册过可以忽略这部。注册完成后,登录到首页,点击 产品-人工智能-卡证文字识别,查看技术文档。

记录在小程序中前端调用百度 Ocr 识别身份证信息

2. 接口文档分析

请求说明

HTTP 方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token

Header如下:

参数
Content-Type application/x-www-form-urlencoded

Body中放置请求参数,参数详情如下:

请求参数

参数 是否必选 类型 可选值范围 说明
image 和url二选一 string - 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式
url 和image二选一 string - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式,当image字段存在时url字段失效
请注意关闭URL防盗链
id_card_side string front/back -front:身份证含照片的一面
-back:身份证带国徽的一面
自动检测身份证正反面,如果传参指定方向与图片相反,支持正常识别,返回参数image_status字段为"reversed_side"
detect_direction string - 此参数新版本无需传,支持自动检测图像旋转角度
detect_risk string true/false 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能,默认不开启,即:false。
-true:开启,请查看返回参数risk_type;
-false:不开启
detect_photo string true/false 是否检测头像内容,默认不检测。可选值:true-检测头像并返回头像的 base64 编码及位置信息
detect_rectify string - 此参数新版本无需传,支持自动校验图片完整性,可识别完整和切片身份证

 

看到这部已经很清晰明了,我们要传递一个 access_token 的参数,这里的access_token 是通过 API Key和Secret Key 进行的一个身份识别参数,接下来看如何获取这个 access_token。

3. 获取  access_tokenassess

请求URL数据格式

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

  • grant_type: 必须参数,固定为client_credentials
  • client_id: 必须参数,应用的API Key
  • client_secret: 必须参数,应用的Secret Key

例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_

接下来,获取  grant_type   client_id   client_secret ,向 https://aip.baidubce.com/oauth/2.0/token 发送请求获取身份证识别所需的 access_token。

记录在小程序中前端调用百度 Ocr 识别身份证信息 

到文字识别这块,我们需要创建一个应用,填好自己的信息。

记录在小程序中前端调用百度 Ocr 识别身份证信息

填写完毕后我们会在 管理应用中看到我们创建的应用信息。

记录在小程序中前端调用百度 Ocr 识别身份证信息

这里就有我们所需的 API Key 和 Secret Key。因为我们这里 assess_token 这一步是我们后端去获取的,assess_token 的过期时间是 30天,后端设置了定时器 每隔30天调用一次。我们前端只需要通过接口去调用去拿这个assess_token.

4. 调用接口识别身份证

    这里封装一个 js 方法,去调用身份证识别。ps:我们的小程序使用 Taro框架开发的

// ocr请求
export const onOcr = async () => {
    // 调用后端接口获取 assess_assess_token
    const { msg } = await getAccessToken();
    return new Promise((resolve, reject) => {
        //识别身份证
        Taro.chooseImage({
            count: 1,
            sizeType: ['compressed'],
            sourceType: ['album', 'camera'],
            success: function (res) {
                //核心代码
                Taro.getFileSystemManager().readFile({
                    filePath: res.tempFilePaths[0],
                    encoding: 'base64', //编码格式
                    success(ans) {
                        Taro.showLoading({ title: '识别中' })
                        Taro.request({
                            url: 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' + msg,
                            method: 'POST',
                            header: {
                                'Content-Type': 'application/x-www-form-urlencoded'
                            },
                            data: {
                                image: ans.data,
                                id_card_side: 'front'
                            },
                            success(_res) {
                                Taro.hideLoading();
                                return resolve(_res.data)
                            }, fail(_res) {
                                Taro.hideLoading();
                                Taro.showToast({
                                    title: '网络出错,请稍后再试~',
                                    icon: 'none'
                                })
                                reject(_res)
                            }
                        })
                    }
                })
            }
        })
    })
}

接下里也是最后一步,也是最重要一点,千万别忘记在小程序后台管理页面配置一下  request请求合法域名:

记录在小程序中前端调用百度 Ocr 识别身份证信息

到此,就完美结束,具体的使用场景以及需求还需根据官方技术文档自行传递参数,以及失败的code码都有详细描述。最后提醒一下,每条应用管理 每天免费调用次数只有500次。

上一篇:Ubuntu PDF OCR 工具—OCRmyPDF


下一篇:tesseract Centos7 安装