ocr.printedText 在不同机型、不同网络下差别很大,什么原因?
发布于 6 年前 作者 huangwei 12540 次浏览 来自 官方Issues

具体表现为:

一、在移动网络下,iPhone 5(不确定)提交一次需耗时 10 - 15 秒,iPhone 11 耗时 3 - 5 秒左右,尚在可接受范围内;

二、在移动网络下,安卓机型(不论高端、低端)极大概率返回 callcloudfunction timeout,同时云函数日志上不会出现此次调用记录(但同一手机、同网络下,其他云函数的操作不会有超时的问题);

三、之前在电信网络下,安卓机型可以做到较快地提交,今日再次测试,同样返回超时;

四、安卓的识别率低于苹果,体验排名 iPhone 11 > 旧款 iPhone >> Android

代码如下:

// item 为 chooseImage 返回的图片 path
let buffer = wx.getFileSystemManager().readFileSync(item)
  
wx.cloud.callFunction({
    name:'printedTextOCR',
    data: { buffer }
}).then(
    r => {
        console.log(r)
    }
)
  
// 云函数
const cloud = require('wx-server-sdk')
  
cloud.init()
  
exports.main = async (event, context) => {
  
  return await cloud.openapi.ocr.printedText({
    type:'photo',
    img: {
      contentType:'image/jpg',
      value: Buffer.from(event.buffer)
    }
  }).then(r => r).catch(e => e)
}

请官方人员和遇到过类似情形的开发人员帮助,谢谢!

1 回复

在客户端采集的根据手机情况的图片大小有差异,从客户端到云端需要一定耗时,建议先在客户端上传图片,上传完成拿到 url 后再到云端用,用完再删除

回到顶部