微信小程序调用百度云的拍照识文

 <!-- 识别按钮 -->
      <view class="btnBox">
        <button @tap="doUpload">点击图文识字</button>
      </view>
      <!-- 识别的图片 -->
      <view class="imgBox">
        <image :src="imageUrl" id="imgtest" mode="aspectFit" />
      </view>
      <!-- 识别出来的内容 -->
      <view class="contantBox">
        {{ imageUrl }}
        识别出来的内容:<text>{{ contant }}</text>
      </view>



  contant = ""; //识别内容
  imageUrl = ""; //识别的图片
  baiduToken = "";



  getBaiduToken() {
    var apiKey = ""; //百度云上的apiKey
    var secKey = ""; //百度云上的secKey
    var tokenUrl = `https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${apiKey}&client_secret=${secKey}`; //调用百度云api接口
    var that = this; //防止this指向问题
    // 发送请求
    wx.request({
      url: tokenUrl,
      method: "POST",
      dataType: "json",
      header: {
        "content-type": "application/json; charset-UTF-8",
      },
      // 返回数据
      success: function (res: any) {
        // that.setData({
        //   baiduToken: res.data.access_token
        // })
        console.log(res.data.access_token, "获取touken");
        that.baiduToken = res.data.access_token;
      },
      // 错误信息
      fail: function (res: any) {
        console.log("[BaiduToken获取失败]", res);
      },
    });
  }

  // 上传图片
  doUpload() {
    var that = this;

    this.getBaiduToken(); // 提前获取access_Token
    // 选择图片,拍照或从相册中获取
    wx.chooseImage({
      count: 1,
      sizeType: ["compressed"],
      sourceType: ["album", "camera"],
      success: function (res: any) {
        wx.showLoading({
          title: "上传中",
        });
        const filePath = res.tempFilePaths[0];
        console.info("filePath:" + filePath);
        // 上传图片
        wx.getFileSystemManager().readFile({
          filePath: filePath,
          encoding: "base64",
          // 返回数据
          success: function (res: any) {
            console.info("baidutoken" + that.baiduToken);
            console.log("图片数据", res);
            // 识别的图片复赋值
            // that.setData({
            //   imageUrl: res.data
            // })

            that.scanImageInfo(res.data); // 调用百度API解析图片获取文字
          },
          // 错误信息
          fail: function (res: any) {
            console.log("[读取图片数据fail]", res);
          },
          complete: function (res: any) {
            wx.hideLoading();
          },
        });
      },
    });
  }
  // 百度ORC接口调用
  scanImageInfo(imageData: any) {
    console.info("调佣baiduToken");
    // 将图片转换成base64格式
    this.imageUrl = "data:image/png;base64," + imageData;
    var that = this; //防止this指向问题

    const detectUrl = `https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=${that.baiduToken}`; // 调用百度云api接口并传递baiduToken
    console.info("tokeken" + detectUrl);
    return new Promise(function (resolve, reject) {
      // 发送请求
      wx.request({
        url: detectUrl,
        data: {
          image: "data:image/png;base64," + imageData,
        },
        method: "POST",
        dataType: "json",
        header: {
          // "content-type": "application/x-www-form-urlencoded",
          "Content-Type": "application/x-www-form-urlencoded",
          Accept: "application/json",
        },
        // 返回数据
        success: function (res: any, resolve: any) {
          console.info("成功res" + JSON.stringify(res));
          var dataList = res.data.words_result[0].words;
          console.log(res.data.words_result[0].words, "识别内容");
          // 赋值给data中定义的变量
          // that.setData({
          //   contant: dataList
          // })

          that.contant = dataList;
        },
        // 错误信息
        fail(res: any, reject: any) {
          // console.log("get dataList fail:", res.data);
          console.info("丰富的失败res" + res);
        },
      });
    });
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值