const that = this;
uni.chooseImage({
count: 1,
success: function (res) {
const path = res.tempFilePaths[0];
uni.getImageInfo({
src: path,
success: (imageInfo) => {
console.log(imageInfo, 135);
that.ocrImg = imageInfo;
uni.getFileSystemManager().readFile({
filePath: path,
encoding: 'binary',
success: (readFileRes) => {
const arrayBuffer = readFileRes.data;
console.log('开始检测');
const session = wx.createVKSession({
track: {
OCR: { mode: 2 }
}
});
session.on('updateAnchors', (anchors) => {
console.log('anchors.text', ''.concat(anchors.map((anchor) => anchor.text)));
});
session.start((errno) => {
if (errno) {
console.log(errno, '检测失败');
} else {
session.runOCR({
frameBuffer: arrayBuffer,
width: that.ocrImg.width,
height: that.ocrImg.height
});
}
});
},
fail: (readFileError) => {
console.error('读取本地文件失败', readFileError);
reject(readFileError);
}
});
}
});
}
});
你好,2000004是设备不支持,用的什么设备,换台看看呢?
从代码中可以看出,你在调用`session.start()`时传入了一个回调函数。这个回调函数会在`session.start()`执行完毕后被调用,如果执行成功,它会接收一个`errno`参数,如果执行失败,它会接收一个错误对象。
在你的代码中,你使用了`if (errno)`来判断`session.start()`是否执行成功。但是,这里的`errno`并不是一个错误码,而是一个表示状态的整数。在微信的视觉算法API中,`errno`为0表示成功,其他值表示失败。因此,你应该使用`if (errno !== 0)`来判断`session.start()`是否执行成功。
另外,你的代码中使用了`session.runOCR()`来执行OCR识别。这个方法也有一个回调函数,它同样会在执行完毕后被调用。你需要确保在调用`session.runOCR()`之前已经调用了`session.start()`,并且`session.start()`执行成功。否则,`session.runOCR()`可能无法正确执行。
最后,你的代码中使用了`session.on('updateAnchors', ...)`来监听更新锚点的事件。但是,这个事件是在静态图片检测模式下触发的,而不是在手动传入图像的情况下触发的。如果你希望在手动传入图像的情况下触发这个事件,你需要将`track`对象的`OCR`属性设置为`{ mode: 2, manualInput: true }`。