图/文:迷神

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

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

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

Demo预览图:

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




微信小程序识别 RFID_图片识别

预览图



小程序上传界面

WXML按钮,选择图片。

上传图片  {{item.text}}

JS部分

// pages/upload/upload.jsPage({  /**   * 页面的初始数据   */  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  }}

完整结构如下:




微信小程序识别 RFID_word打开base64图片流_02

结构



我们识别的图片为:




微信小程序识别 RFID_图片识别_03

识别图片



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




微信小程序识别 RFID_word打开base64图片流_04

识别结果



当然其他的小程序识别,身份证OCR识别,银行卡OCR识别,驾照OCR识别,大家可以自行修改下,就可以了,比较简单。有问题欢迎给我留言,觉得不错,