自己按照官方demo源码看了下,总结下解决方案: 1、 不能用真机调试,只能用预览。 2、然后按照官方的源码可以实现OCR,https://github.com/wechat-miniprogram/miniprogram-demo/blob/master/miniprogram/packageAPI/pages/ar/photo-ocr-detect/photo-ocr-detect.js
iphone13真机调用createVKSession OCR为什么返回200004?环境:型号iPhone13,微信版本8.0.48,基础库版本:3.4.1, [图片] 问题1:测试OCR接口,在调用wx.createVKSession().start(),error 返回2000004, 下面是截图和代码 [图片] async getLocalOCRText(frameBuffer,width,height){ const session = wx.createVKSession({ track: { OCR: { mode: 2 } // mode: 1 - 使用摄像头;2 - 手动传入图像 }, }) return new Promise((resove, reject)=>{ // 静态图片检测模式下,每调一次 runOCR 接口就会触发一次 updateAnchors 事件 session.on('updateAnchors', anchors => { const text = anchors.map(anchor=>anchor.text).join("\n"); console.log('anchors.text',text ) resove(text); }) // 需要调用一次 start 以启动 session.start(errno => { if (errno) { // 如果失败,将返回 errno reject(new Error(errno)); } else { // 否则,返回null,表示成功 session.runOCR({ frameBuffer, // 图片 ArrayBuffer 数据。待检测图像的像素点数据,每四项表示一个像素点的 RGBA width, // 图像宽度 height, // 图像高度 }) } }) }) } 问题2:调用isVkSupport报错 const isSupportV2 = wx.isVKSupport('v2') [图片]
04-18遇到一样的问题,我的是传入的freameBuffer格式不对,按照官方demo改了正常了
微信小程序VKSession.runOCR启动闪退const session = wx.createVKSession({ track: { OCR: { mode: 2 } // mode: 1 - 使用摄像头;2 - 手动传入图像 }, version: 'v1' }); // 静态图片检测模式下,每调一次 runOCR 接口就会触发一次 updateAnchors 事件 session.on('updateAnchors', (anchors) => { uni.showToast({ icon: 'none', title: ''.concat(anchors.map((anchor) => anchor.text)) }); console.log('anchors.text', ''.concat(anchors.map((anchor) => anchor.text))); }); // 需要调用一次 start 以启动 session.start((errno) => { if (errno) { // 如果失败,将返回 errno console.log(errno, '检测失败'); } else { // 否则,返回null,表示成功 uni.showToast({ icon: 'none', title: '检测启动中' }); session.runOCR({ frameBuffer: arrayBuffer, // 图片 ArrayBuffer 数据。待检测图像的像素点数据,每四项表示一个像素点的 RGBA width: that.ocrImg.width, // 图像宽度 height: that.ocrImg.height // 图像高度 }); } }); },
04-18