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)
							})
					}
				})
			},

在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。 如果手机上出现 “打开调试模式可以发出请求,关闭调试模式无法发出请求” 的现象,请确认是否跳过了域名校验,并确认服务器域名和证书配置是否正确。

经验分享 程序员 微信小程序 职场和发展