uniapp 调用阿里云OCR身份证识别
有个项目需求用到阿里云印刷身份证识别,网上搜了很多没有参考,话不多说爬坑总结;
第一步先注册阿里云账号点击注册阿里云账号已有账号忽略;
- 阿里云身份证识别购买第一次购买可以0元调用500次测试
- 购买后在下边会有调用api的接口和调用接口后返回的参数话不多少上代码简单明了,
- 上代码
- 这里需要注意下 也是我遇见的坑 发送请求的时候一定要写上请求头 是你买完身份证识别后的appcode ,点击这里查看你的appcode
- 此时你的appcode格式也一定要对 下面展示格式注意注释内容
内联代码片
。
// APPCODE和你的数字之间一定要有个空格否则接口返回400
header: {
'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 = this
uni.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',//测试api
dataType:'json',
header: {
'Authorization': 'APPCODE +你的APPCODE值'//APPCODE值
},
method: 'POST',
data: JSON.stringify(json),
success(res) {
console.log(res);
}
})
})
.catch(error => {
console.error(error)
})
}
})
}
本文地址:https://blog.csdn.net/weixin_45410804/article/details/110178374