微信小程序调用阿里OCR识别

准备工作

在使用内容检测API之前,需要先注册阿里云账号,添加AccessKey并开通内容安全。
操作步骤:

  1. 访问阿里云官网,注册阿里云账号。如果已有阿里云账号,请跳过此步骤。
  2. 访问内容安全产品开通页面,单击立即开通,正式开通服务。
  3. 访问AccessKey管理页面,管理您的AccessKey ID和AccessKey Secret。

说明: AccessKey是您使用内容安全API时用到的密钥,拥有您的账号的完整权限。请您妥善保管它们,避免泄露,并定期更换您的AccessKey。

详细内容访问内容检测API开发准备

开发

引入加密库
import crypto from './crypto-js/index.js';
生成uuid
  uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";
    var uuid = s.join("");
    return uuid;
  }
调用微信API获取图像
camera(){
	var that = this;
	wx.chooseImage({
	      count: 1, // 最多可以选择的图片张数,默认9
	      /* sizeType: ['original', 'compressed'],  */// 可以指定是原图还是压缩图,默认二者都有
	      sizeType: ['compressed'],
	      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
	      success: function (res) {// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
	        console.log("获取图片", res)
	        wx.compressImage({
	          src: res.tempFilePaths[0], // 图片路径
	          quality: 10, // 压缩质量
	          success: function (result) {
	            /* that.uploadImage(that, result.tempFilePath) */
	            console.log('图片路径',result)
	            //  调用阿里云API
				that.imageScan()
	          }
	        })
	      }
	    })
    }
阿里云API调用
  	 imageScan(){
  	 	var that = this;
          var clientInfo = {
            "ip":"127.0.0.1"
          };
          // 请求体,根据需要调用相应的算法
          let requestBody = JSON.stringify({
            bizType:'Green',
            scenes:['porn'],
            tasks:[{
              'dataId':that.uuid(),
              'url':'https://xxx.png'
            }]
          });

          // 请求头
          let requestHeaders = {
            'Accept':'application/json',
            'Content-Type':'application/json',
            'Content-MD5':crypto.enc.Base64.stringify(crypto.MD5(requestBody)),
            'Date':new Date().toUTCString(),
            'x-acs-version':'2017-01-12',
            'x-acs-signature-nonce':that.uuid(),
            'x-acs-signature-version':'1.0',
            'x-acs-signature-method':'HMAC-SHA1'
          }
          
          // 对请求的签名
          let signature = []
          signature.push('POST\n');
          signature.push('application/json\n');
          signature.push(requestHeaders['Content-MD5'] + '\n');
          signature.push('application/json\n');
          signature.push(requestHeaders['Date'] + '\n');
          signature.push('x-acs-signature-method:HMAC-SHA1\n');
          signature.push('x-acs-signature-nonce:' +requestHeaders['x-acs-signature-nonce'] + '\n');
          signature.push('x-acs-signature-version:1.0\n');
          signature.push('x-acs-version:2017-01-12\n');
          signature.push('/green/image/scan?clientInfo=' + JSON.stringify(clientInfo));
          console.log("加密签名",signature.join(''))
          // 对签名进行HmacSHA1加密  nodejs方式:crypto.createHmac('sha1', accessKeySecret).update(signature.join('')).digest().toString('base64');
          let hmacsha1 = crypto.HmacSHA1(signature.join(''),that.data.AccessKeySecret)
          let authorization = crypto.enc.Base64.stringify(hmacsha1);
  		console.log("签名加密后", authorization)
     	    requestHeaders.Authorization = "acs" + " " + that.data.AccessKeyId + ":" + authorization;
          
          //  发送HTTP请求
          wx.request({
            url: encodeURI('http://green.cn-shanghai.aliyuncs.com/green/image/scan?clientInfo=' + JSON.stringify(clientInfo)),
            method:'POST',
            data:requestBody,
            header:requestHeaders,
            success(res){
              console.log("请求成功",res)
            },
            fail(err){
              console.log("请求失败",err)
            }
          })
    }

参考

Nodejs版参考示例下载
阿里云检测服务API参考
阿里云API 错误中心
单击下载内容安全第三方SDK(c#、c++、nodejs、python(3.5)、go)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值