华为 MLTextAnalyzer 无法从位图中检测到任何文本

Huawei MLTextAnalyzer cannot detect any text from the Bitmap

我正在编写一个应用程序,在将其提供给 MLTextAnalyser 之前裁剪相机预览帧的特定部分。

这就是我实例化文本分析器的方式:

private val hmsTextRecognizer : MLTextAnalyzer by lazy {
val setting = MLLocalTextSetting.Factory()
    .setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE)
    .setLanguage("en")
    .create()
MLAnalyzerFactory.getInstance().getLocalTextAnalyzer(setting)
}

位图是这样的:

我是这样称呼分析器的:

val result = com.huawei.hmf.tasks.Tasks.await(hmsTextRecognizer.asyncAnalyseFrame(MLFrame.fromBitmap(bitmap)))

不幸的是,我没有得到任何结果,无法识别文本。

在 Firebase 的 MlKit 上,文本可以很好地重新识别。

val inputImage = InputImage.fromBitmap(bitmap, 0)
val result = Tasks.await(gmsTextRecognizer.process(inputImage))
if(result.text.isNotBlank()) {
    Timber.d("GMS scanned raw text: ${result.text}")
}

我 运行 正在使用华为 Mate 30 Pro

com.huawei.hms:ml-computer-vision-ocr:2.0.1.300

知道我做错了什么吗?

可能的原因如下:

创建文本分析器MLTextAnalyzer 以识别图像中的文本。您可以设置 MLLocalTextSetting 来指定可以识别的语言。如果不设置语言,默认只能识别拉丁语种。

// 方式一:使用默认参数配置自带文本分析器。只能识别基于拉丁语的语言。

MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer();

//方法二:使用自定义参数MLLocalTextSetting在设备上配置文本分析器。

MLLocalTextSetting setting = new MLLocalTextSetting.Factory()

.setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE)

//指定可以识别的语言。

.setLanguage("EN")

.create();

MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer(setting);

你的情况是方法二,程序认为这是英文的,不是拉丁文的。但云仅支持英语,不支持 在设备中。所以失败了。