uniapp 调用阿里云OCR身份证识别
有个项目需求用到阿里云印刷身份证识别,网上搜了很多没有参考,话不多说爬坑总结;
第一步先注册阿里云账号点击注册阿里云账号已有账号忽略;
- 阿里云身份证识别购买第一次购买可以0元调用500次测试
- 购买后在下边会有调用api的接口
和调用接口后返回的参数话不多少上代码简单明了,
- 上代码
- 这里需要注意下 也是我遇见的坑 发送请求的时候一定要写上请求头 是你买完身份证识别后的appcode ,点击这里查看你的appcode
- 此时你的appcode格式也一定要对 下面展示格式注意注释内容
内联代码片
。
// APPCODE和你的数字之间一定要有个空格否则接口返回400header: {'Authorization': 'APPCODE 546846841465484145498'//APPCODE值},
6.请求方式为POST,返回的数据格式为JSON,请求时的参数主要有两个, 一个是识别图片的base64码,另一个是要识别身份证的正面还是反面(face: 正面; back: 反面);
这里在传参数时要注意传入参数的正确格式,另外在传入base64码时是不需要传入base64的文件头的;
图片base64编码字符串的截取
举例:
如下的base64字符串:
data:image/jpeg;base64,/9j/4QsJRXhpZgAATU0AKgAAAAgADAEQAAIAAAALAAAAngEA......
现在我们需要是base64,后面的字符串:
截取方法:1. 先使用js中的 indexOf 方法找到 ',' 字符的下标2. 使用 js 中的 substring 方法 直接截取 下标后面的值str.substring(str.indexOf(',')+1)
看代码中的例子
7.下面我把源码,放出来仅供参考
下面展示一些 内联代码片
。
// 选取图片chooseImage(e) {console.log(e)if(e == 'face'){var configure = "{'side':'face'}" //face正面、back反面}else{var configure = "{'side':'back'}"}var that = thisuni.chooseImage({count: 1,sizeType: ['original'],sourceType: ['album'],//从相册选取success: (res) => {console.log(res);const tempFilePaths = res.tempFilePaths;pathToBase64(tempFilePaths[0]).then(base64 => {console.log('11', base64)let str = base64.substring(base64.indexOf(',')+1)console.log(str);var json = {"image": str,"configure": configure};console.log(json)uni.request({url: 'http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json',//测试apidataType:'json',header: {'Authorization': 'APPCODE +你的APPCODE值'//APPCODE值},method: 'POST',data: JSON.stringify(json),success(res) {console.log(res);}})}).catch(error => {console.error(error)})}})}