在调用 textRecognition.recognizeText 实现图片文字识别的时候模拟器异常,真机上正常使用,在断点调试的时候发现模拟器进不去 textRecognition.recognizeText这个方法里面,日志也无报错信息输出,初次接触app开发求大佬解答
案例代码如下:
import { textRecognition } from '@kit.CoreVisionKit'
import { image } from '@kit.ImageKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { fileIo } from '@kit.CoreFileKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
let imageSource: image.ImageSource | undefined = undefined;
let chooseImage: PixelMap | undefined = undefined;
// 将图片转换为PixelMap,可以通过图库获取
let photoPicker: photoAccessHelper.PhotoViewPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select({
MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1
}).then((res: photoAccessHelper.PhotoSelectResult) => {
let uri = res.photoUris[0];
if (uri === undefined) {
hilog.error(0x0000, 'OCRDemo', "Failed to get uri.");
return;
}
setTimeout(async () => {
let fileSource = await fileIo.open(uri, fileIo.OpenMode.READ_ONLY);
imageSource = image.createImageSource(fileSource.fd);
chooseImage = await imageSource.createPixelMap();
hilog.info(0x0000, 'OCRDemo', `chooseImage:${chooseImage.toString()}`);
if (!chooseImage) {
return;
}
// 调用文本识别接口
let visionInfo: textRecognition.VisionInfo = {
pixelMap: chooseImage
};
textRecognition.recognizeText(visionInfo, (error: BusinessError, data: textRecognition.TextRecognitionResult) => {
if (error) {
hilog.error(0x0000, 'OCRDemo', `Failed to recognize text. Code: ${error.code}, message: ${error.message}`);
return;
}
// 识别成功,获取对应的结果
let recognitionString = data.toString();
hilog.info(0x0000, 'OCRDemo', `Succeeded in recognizing text:${recognitionString}`);
if(chooseImage && imageSource) {
chooseImage.release();
imageSource.release();
}
});
}, 100)
}).catch((err: BusinessError) => {
hilog.error(0x0000, 'OCRDemo', `Failed to get photo image uri. Code:${err.code},message:${err.message}`);
})
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
建议看下开发工具IDE的具体报错提示,然后对比一下模拟器与真机的差异,与真机相比,模拟器暂时只支持部分Kit,推荐参阅模拟器对各种Kit的支持情况。