华为 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);
你的情况是方法二,程序认为这是英文的,不是拉丁文的。但云仅支持英语,不支持
在设备中。所以失败了。
我正在编写一个应用程序,在将其提供给 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);
你的情况是方法二,程序认为这是英文的,不是拉丁文的。但云仅支持英语,不支持 在设备中。所以失败了。