ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-01-13 15:01:16  阅读:482  来源: 互联网

标签:调用 Taro URL access token 参数 身份证 Ocr 百度


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

1. 注册百度云账号

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

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-Typeapplication/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_sidestringfront/back-front:身份证含照片的一面
-back:身份证带国徽的一面
自动检测身份证正反面,如果传参指定方向与图片相反,支持正常识别,返回参数image_status字段为"reversed_side"
detect_directionstring-此参数新版本无需传,支持自动检测图像旋转角度
detect_riskstringtrue/false是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能,默认不开启,即:false。
-true:开启,请查看返回参数risk_type;
-false:不开启
detect_photostringtrue/false是否检测头像内容,默认不检测。可选值:true-检测头像并返回头像的 base64 编码及位置信息
detect_rectifystring-此参数新版本无需传,支持自动校验图片完整性,可识别完整和切片身份证

 

看到这部已经很清晰明了,我们要传递一个 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。

 

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

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

这里就有我们所需的 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请求合法域名:

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

标签:调用,Taro,URL,access,token,参数,身份证,Ocr,百度
来源: https://blog.csdn.net/gc_89757/article/details/112562949

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有