四时宝库

程序员的知识宝库

微信小程序云开发:通用OCR识别图片识别为文字的2种模式用法

图/文:迷神

微信小程序提供基于小程序的通用印刷体 OCR 识别,简单来说就是小程序可以拍照或者是选择图片,然后小程序调用接口进行识别并返回识别内容。

分享这个,主要的小程序官方ocr.printedText的demo,比较随意,很多细节一笔带过,导致部分朋友可能不是很了解。这里主要是分享微信小程序云开发,通用OCR识别图片识别为文字的2种模式用法。这也是同事开发遇到问题,我就罗列下分享出来demo

小程序提供好几种OCR识别,比如身份证OCR识别,银行卡OCR识别,驾照OCR识别,以及 通用OCR识别图片识别,大家有这个通用识别举一反三啦,

Demo预览图:

就是上传图片,这个上传图片,手机端是支持拍照和从相册进行选择的。

小程序上传界面

WXML按钮,选择图片。

<!--pages/upload/upload.wxml-->
 <button type="primary" plain="true" bindtap= "printText">上传图片</button>
 <view class="result" wx:if="{{printText}}">
 <view wx:for="{{printText}}" wx:key="index"> {{item.text}}</view>
 </view>

JS部分

// pages/upload/upload.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
  },
  printText(){
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success (res) {
        // tempFilePath可以作为img标签的src属性显示图片
        const tempFilePaths = res.tempFilePaths
        var filepath=encodeURI(tempFilePaths[0])
        //把文件转换成文件流的形式
        let buffer = wx.getFileSystemManager().readFileSync(filepath)

        console.log(filepath)
        
        wx.cloud.callFunction({
          //调用云函数 upload
         name:'upload',
        data:{
          //第一种上传到服务器方式
          //imgUrl: encodeURI("https://www.toutiao.com/123.jpg")

          //第二种:文件流的方式
          file:buffer 
        },
        complete:console.log
        })
      }
    })
  },
  
  //更多内容不列举了

})

小程序的图片识别ocr.printedText,有两种模式,1种是就是url模式,这个比较简单。还有一种就是上传文件的本地模式。需要传输文件流,然后文件流转换为base64

小程序云函数部分

对应upload云函数部分。

// 云函数入口函数
exports.main = async (event, context) => {
  try {
    //第一种模式,获取服务器地址
    if (event.imgUrl) {
      var result = await cloud.openapi.ocr.printedText({
          type: 'photo',
          imgUrl: event.imgUrl
      })
  //第二种模式,选择文件模式    
  } else {
      var result = await cloud.openapi.ocr.printedText({
          type: 'photo',
          img: {
              contentType: 'image/png',
              value: new Buffer(event.file, 'base64')
          }
      })
  }
    return result
  } catch (err) {
    return err
  }
}

完整结构如下:

我们识别的图片为:

最终识别出来的文本内容为:

当然其他的小程序识别,身份证OCR识别,银行卡OCR识别,驾照OCR识别,大家可以自行修改下,就可以了,比较简单。有问题欢迎给我留言,觉得不错,记得关注迷神哦,后续将会分享更多精彩内容。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接