当前位置:   article > 正文

小程序使用百度图片提取文字api_图片识别文字api

图片识别文字api

微信小程序上实现拍照或者使用相册内图片,提取识别文字,可以使用百度提供的识别图文的api接口
首先去百度注册
https://ai.baidu.com/tech/ocr?track=cp:ainsem|pf:pc|pp:878-chanpin-wenzishibie|pu:wenzishibie|ci:|kw:10522915
我选用的是普通场景的产品,在最近访问的产品下面可以新增产品,也可以在已建产品里进入,点击创建应用
在这里插入图片描述
在这里插入图片描述
填写基本必要信息,就有了自己的项目和key,下面是js文件,函数不多,注释我写在代码内

// pages/wenzi/wenzi.js
const app = getApp()
Page({

/**
* 页面的初始数据
*/
data: {
  imageData: '../../images/wenzi.png',
items: null,
},

/**
* 生命周期函数--监听页面加载,调用doupload函数,真机调试可以使用摄像头,选择拍照或者相册内图片
*/
onLoad: function (options) {
  this.doUpload()
},
//获取百度api接口,key好像是一个月一换注意更新
getBaiduToken: function(){
  console.log("getBaidu");
  var apiKey = 'xxxxxx';    
  var secKey = 'xxxxxx';    
  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'       
         'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
 
      },        
      success: function(res){            
          console.log("[BaiduToken获取成功]",res);            
          that.setData({                
              baiduToken: res.data.access_token                            })        
      },        
      fail: function(res){            
          console.log("[BaiduToken获取失败]",res);
      }    
  })  
}, 
//扫描图片,图片识别需要从转换格式
scanImageInfo: function(imageData){    // 这里的imageData是图片转换成base64格式的数据
  console.log("that.data.baiduToken");
  var that = this;
  const detectUrl = `https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=${that.data.baiduToken}`;   // baiduToken是已经获取的access_Token

    return new Promise(function(resolve,reject){        
      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('get word success:',res.data);              
              var word = res.data.words_result              
              console.log(word);     
              that.setData({
                items:word
              })       
          },            
          fail : function(res,reject){              
              console.log('get word fail:',res.data);                       },            

      })
  }) 
} ,
// 上传图片  
doUpload: function () {
  var that = this    
  that.getBaiduToken()    // 提前获取access_Token
  // 选择图片,拍照或从相册中获取
  wx.chooseImage({      
      count: 1,      
      sizeType: ['compressed'],      
      sourceType: ['album', 'camera'],      
      success: function (res) {
          wx.showLoading({          
              title: '上传中',        
          })
              const filePath = res.tempFilePaths[0]                
              // 上传图片        
              wx.getFileSystemManager().readFile({          
                  filePath: filePath,          
                  encoding: 'base64',          
                  success: function(res) {            
                      console.log("[读取图片数据success]",res.data);            
                      that.scanImageInfo(res.data);    // 调用百度API解析图片获取文字  
                  },
                 
                  fail: function(res){            
                      console.log("[读取图片数据fail]",res)          
                  },            
                  complete: function(res){            
                      wx.hideLoading()          
                  }    
                })
              }
            })
          },
          //提交我将文字与做好的数据库进行比对输出
submit(){
  
  for (var i = 0; i < this.data.items.length; i++)
    { console.log("submit"+this.data.items[i].words)
   var name=this.data.items[i].words
    wx.cloud.database().collection("test").where({
     name: wx.cloud.database().RegExp({
        regexp:name,
        //i不区分大小写
        option:"i"
       
      })
    }).get().then(res => {
    console.log("搜索结果", res.data[0].password)
  
    })
}
}

})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130

页面文件比较简单

<view class="view_main">
<image class="image_type" src="{{imgPath}}" mode="aspectFit"></image>
<button class="button_type" bindtap="chooseimg">拍照/相册</button>

<view class="view_items">
<text wx:for="{{items}}" wx:key="{{item}}" selectable='true' class="text_son">
{{item.words}}
</text>
</view>
<button class="button_type" bindtap="submit">提交</button>
</view>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/376079
推荐阅读
相关标签
  

闽ICP备14008679号