图/文:迷神
微信小程序提供基于小程序的通用印刷体 OCR 识别,简单来说就是小程序可以拍照或者是选择图片,然后小程序调用接口进行识别并返回识别内容。
分享这个,主要的小程序官方ocr.printedText的demo,比较随意,很多细节一笔带过,导致部分朋友可能不是很了解。这里主要是分享微信小程序云开发,通用OCR识别图片识别为文字的2种模式用法。这也是同事开发遇到问题,我就罗列下分享出来demo
小程序提供好几种OCR识别,比如身份证OCR识别,银行卡OCR识别,驾照OCR识别,以及 通用OCR识别图片识别,大家有这个通用识别举一反三啦,
Demo预览图:
就是上传图片,这个上传图片,手机端是支持拍照和从相册进行选择的。
预览图
小程序上传界面
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 }}
完整结构如下:
结构
我们识别的图片为:
识别图片
最终识别出来的文本内容为:
识别结果
当然其他的小程序识别,身份证OCR识别,银行卡OCR识别,驾照OCR识别,大家可以自行修改下,就可以了,比较简单。有问题欢迎给我留言,觉得不错,