13.3 图像处理和OCR

云调用有些接口属于AI服务的范畴,比如借助于人工智能来进行智能裁剪、扫描条码/二维码、图片的高清化等图像处理和识别银行卡、营业执照、驾驶证、身份证、印刷体、驾驶证等OCR,有了这些接口我们也能在小程序里使用人工智能了。接下来我们以小程序的条码/二维码识别和识别印刷体为例来介绍一下云调用。

13.3.1 图像处理

使用开发者工具新建一个云函数,如scancode,然后在config.json里添加img.scanQRCode云调用的权限,使用npm install安装依赖之后,上传并部署所有文件(此时也会更新权限)。

{ "permissions": { "openapi": [ "img.scanQRCode" ] } }

然后再在index.js里输入以下代码,注意cloud.openapi.img.scanQRCode方法和img.scanQRCode权限的对应写法,不然会报604100的错误。

const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { try { const result = await cloud.openapi.img.scanQRCode({ imgUrl:"https://tcb-1251009918.cos.ap-guangzhou.myqcloud.com/demo/qrcodetest.png" //注意二维码必须是条码/二维码,不能是小程序码 }) return result } catch (err) { console.log(err) return err } }

调用该云函数之后,返回的result对象里包含result对象,在codeResults的data里可以得到二维码里包含的内容。

codeResults: [{ data: "使用云开发来开发微信小程序可以免费。。。", pos: {leftTop: {…}, rightTop: {…}, rightBottom: {…}, leftBottom: {…}},typeName: "QR_CODE"}] errCode: 0 errMsg: "openapi.img.scanQRCode:ok" imgSize: {w: 260, h: 260}

13.3.2 OCR人工智能识别

使用开发者工具新建一个云函数,如ocrprint,然后在config.json里添加ocr.printedText云调用的权限,使用npm install安装依赖之后,上传并部署所有文件(此时也会更新权限)。

{ "permissions": { "openapi": [ "ocr.printedText" ] } }

调用该云函数之后,返回的result对象里包含result对象,在codeResults的data里可以得到二维码里包含的内容。

const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { try { const result = await cloud.openapi.ocr.printedText({ imgUrl: 'https://tcb-1251009918.cos.ap-guangzhou.myqcloud.com/demo/ocrprint.png' }) console.log(result) return result } catch (err) { console.log(err) return err } }

调用该云函数之后,返回的result对象里包含result对象,在的items里可以返回图片包含的文字内容。

items: Array(4) 0: {text: "JavaScript入门", pos: {…}} 1: {text: "JavaScript是目前世界上最流行的编程语言之一,它也是小程序开发最重要的基础语言。要做出一个功能复杂的小程序,除了需要掌握JavaScript的基本语", pos: {…}} 2: {text: "法,还要了解如何使用JavaScript来操作小程序(通过API接口)", pos: {…}} 3: {text: "过API接口)。", pos: {…}}