微信小程序因为业务扩展需要用户身份证信息,这里记录一下在小程序中通过百度ocr识别的一个开发过程记录。
1. 注册百度云账号
首先,我们要去百度云注册个账号,百度云注册,已经注册过可以忽略这部。注册完成后,登录到首页,点击 产品-人工智能-卡证文字识别,查看技术文档。
2. 接口文档分析
请求说明
HTTP 方法:POST
请求URL:/rest/2.0/ocr/v1/idcard
URL参数:
Header如下:
Body中放置请求参数,参数详情如下:
请求参数
看到这部已经很清晰明了,我们要传递一个 access_token 的参数,这里的access_token 是通过 API Key和Secret Key 进行的一个身份识别参数,接下来看如何获取这个access_token。
3. 获取 access_tokenassess
请求URL数据格式
向授权服务地址/oauth/2.0/token
发送请求(推荐使用POST),并在URL中带上以下参数:
grant_type:必须参数,固定为client_credentials
;client_id:必须参数,应用的API Key
;client_secret:必须参数,应用的Secret Key
;
例如:
/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_
接下来,获取grant_type client_id client_secret ,向/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_tokenconst { 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: '/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次。