uniapp-小程序 调用阿里云OCR身份证识别
首先要有阿里云账号,(很方便可以只有用支付宝扫码登录),购买套餐之前需要实名认证。 1、阿里云账号实名认证: 鼠标悬浮在右上角账号头像,选择实名认证,选择左边栏的实名认证,根据提示一步步进行操作 2、在阿里云云市场搜索
3、点击查看详情,进入购买
咨询阅读产品介绍文档, 查询API调用认证信息 购买成功后,您的认证信息是由API网关统一创建的,可以使用两种方式查询到您的API调用认证信息。
在云市场控制台中查询 登录云市场控制台,在已购买的服务中可以查看到所有购买成功的API商品情况,下图红框中的就是AppKey/AppSecret,AppCode的信息。
在API网关控制台中查询,在顶部搜索栏直接搜索API网关,登录API网关控制台。
在左侧导航栏选择调用API > 应用管理,找到购买成功后为您创建的应用。
单击目标应用,进入应用详情,可以看到AppKey/AppSecret,AppCode等信息,此调用认证信息和在云市场控制台上一致。 您购买的API商品会发布在不同的Region下,因此可以在各个Region下找到对应的应用。
AppCode是需要放在header,注意APPCODE和AppCode之间一定要有个英文半角空格否则接口返回400
header: {
Authorization: APPCODE 你的AppCode //APPCODE值
请求方式为POST,返回的数据格式为JSON,请求时的参数主要有两个, 一个是image识别图片的base64码, 另一个是参数side要识别身份证的正面还是反面(face: 正面; back: 反面),我这里只需要识别正面。
将图片Path转为Base64的插件:pathToBase64 npm安装
npm i image-tools --save
文件内引入
import {
pathToBase64, base64ToPath } from image-tools
goCuttingScan() {
let _this = this
let configure = "{side:face}" //face正面、back反面
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: https://cardnumber.market.alicloudapi.com/rest/160601/ocr/ocr_idcard.json, //测试api
dataType: json,
// 注意APPCODE和AppCode之间一定要有个英文半角空格否则接口返回400
header: {
Authorization: APPCODE 你的AppCode //APPCODE值
},
method: POST,
data: JSON.stringify(json),
success(res) {
console.log(res);
_this.formData.id_num = res.data.num
console.log(_this.formData )
console.log(_this.formData.id_num )
}
})
})
.catch(error => {
console.error(error)
})
}
})
},
在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。 如果手机上出现 “打开调试模式可以发出请求,关闭调试模式无法发出请求” 的现象,请确认是否跳过了域名校验,并确认服务器域名和证书配置是否正确。
