微信小程序整合百度文字识别OCR

本文介绍

​ 之前有过一点小程序的学习,并最近写的项目有用到识别图片中的文字的场景,但是又不想花钱,就千方百计的找白嫖资源,经过一天的折磨,终于找到了白嫖的方法(百度智能云),虽说是白嫖,但也是有次数限制的,千万不要以为是真的白嫖,相对于其他的公司的同类产品这个已经很良心了,这个次数对于自己的开发和使用来说绰绰有余。请配合图文一起看,本文是分享自己的经验和记录自己的成长,有误欢迎指出,但是勿喷!

效果图

https://ae01.alicdn.com/kf/Hf3249ff1a1dc4c9baca8df78c3ef4050H.jpg

准备工作(先创建百度OCR应用)

悄悄的说一句,为了防止图片失效,所以在介绍的时候使用文字加图片的形式描述,不要闲啰嗦哦~

需要先注册或登录百度智能云

https://ae01.alicdn.com/kf/H380c05c9ed944fb1be2d6f7312cbbdcbG.jpg

在登录成功后找到产品服务栏目

https://ae01.alicdn.com/kf/H331592d557a5439fbe9485673659974eG.jpg

选择人工智能栏目的文字识别板块

https://ae01.alicdn.com/kf/H5d8dea4bf4024a9a844d7799757a861aW.jpg

第一次进入时,应用应该是0个,接下来就是准备点击创建应用按钮进行OCR文字识别应用的创建

https://ae01.alicdn.com/kf/Hdbdef6af922a42429cd1abc8c7a44948X.jpg

根据要求和提示填写对应的信息即可,填写完毕后点击 立即创建

https://ae01.alicdn.com/kf/H31adbf80c5ff4609b6d38ffc088927c0F.jpg

创建了OCR应用后就可以在应用列表中看到刚刚创建的OCRDemo应用了,APIKey和SecretKey不能公开的出来的,类似于你的支付宝账号和密码,你懂的!

https://ae01.alicdn.com/kf/Hca3bc976b22c418ca5fea8afd416c3b2D.jpg

点击应用名称就可以查看应用的详细信息,还可以查看应用的使用文档和教学视频,感兴趣的小盆友可以研究一下

https://ae01.alicdn.com/kf/H1b318fba9ce14c0b84759356008e6b74s.jpg

点击查看文档介绍和使用的要求以及注意的事项

该接口有两种调用的方式,一种是URL夹带参数格式,另一种是HTTP请求体格式

在这里我选择第一种URL夹带参数请求方式

图片的编码需要是base64编码,并且有4M的大小限制

https://ae01.alicdn.com/kf/H10c127da250f4e7c87827830252e323cO.jpg

OCR的准备工作就完成了

开发工具配置

为了方便我们的开发和调用第三方OCR,我们需要勾选微信开发工具里的 不校验合法域名… 来使我们愉快的使用该API接口

https://ae01.alicdn.com/kf/H5689b9000afa4c1c96b4944465e7a7a3t.jpg

如果你的小程序需要上线的话,还需要去微信公众平台去配置request合法域名,在 开发----->服务器域名 中,点击修改,配置request合法域名,填写(https://aip.baidubce.com)此接口即可,如果不用上线请忽略此操作!

https://ae01.alicdn.com/kf/Hf637918cf83640f6843dac876edce864O.jpg

具体实现代码

不多bb,直接开搞

wxml

<view>
  <button type="warn" bindtap="picToTxt">请选择图片</button>
</view>
<block wx:for="{{words}}" wx:key="unique" >
  <view style="text-align: center">{{item.words}}</view>
</block>

js

Page({
  data: {
    words: []
  },
  picToTxt() {
    const that = this
    wx.chooseImage({
      success: (res) => {
        //获取图片的临时路径
        const tempFilePath = res.tempFilePaths[0]
        //根据官方的要求  用base64字符编码获取图片的内容
        wx.getFileSystemManager().readFile({
          filePath: tempFilePath,
          encoding: 'base64',
          success: function (res) {
            //调用方法
            that.getImgInfo(res.data)
          },
        })
      },
    })
  },
  //根据图片的内容调用API获取图片文字
  getImgInfo: function (imageData) {
    wx.showLoading({
      title: '识别中...',
    })
    var that = this
    that.getBaiduToken().then(res => {
      console.log(res)
      //获取token
      const token = res.data.access_token
      console.log(token)
      const detectUrl = `https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=${token}` // baiduToken是已经获取的access_Token      
      wx.request({
        url: detectUrl,
        data: {
          image: imageData
        },
        method: 'POST',
        dataType: 'json',
        header: {
          'content-type': 'application/x-www-form-urlencoded' // 必须的        
        },
        success: function (res, resolve) {
          console.log(res)
          //将 res.data.words_result数组中的内容加入到words中           
          that.setData({
            words: res.data.words_result
          })
          console.log('识别后: ' + res.data.words_result)
          wx.hideLoading()
        },
        fail: function (res, reject) {
          console.log('get word fail:', res.data);
          wx.hideLoading()
        },
        complete: function () {
          wx.hideLoading()
        }
      })
    })
  },
  // 获取百度access_token  
  getBaiduToken: function () {
    return new Promise(resolve => {
      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}`
      var that = this;
      wx.request({
        url: tokenUrl,
        method: 'POST',
        dataType: 'json',
        header: {
          'content-type': 'application/json; charset-UTF-8'
        },
        success: function (res) {
          console.log("[BaiduToken获取成功]", res);
          return resolve(res)
        },
        fail: function (res) {
          console.log("[BaiduToken获取失败]", res);
          return resolve(res)
        }
      })
    })
  }
})

结束语

保姆级教程,麻烦点个赞!有误请指!不喜勿喷!

生命不息,编程不止!奥利给!!!

  • 27
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值