google_ml_kit如何在编译阶段强制下载文本识别模块?
问题根因
你遇到的报错是Google ML Kit默认启用动态按需加载机制,OCR识别模型不会在应用编译/安装时内置,首次调用识别能力时才会触发模块下载,当设备网络受限或者Google服务异常时就会触发该报错。
强制预装OCR模块的配置方案
- 打开安卓项目路径下的
android/app/src/main/AndroidManifest.xml文件,在<application>标签内部添加如下元数据配置,指定应用安装时自动预装OCR识别模块:
<meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="ocr" />
如果需要同时预装其他ML Kit能力(如条码识别、人脸检测),可在android:value字段中用英文逗号分隔多个能力标识,示例:android:value="ocr,barcode,face"。
- 可选优化:当前你使用的全量
google_ml_kit插件已停止维护,官方已拆分出单能力独立插件,稳定性更高,建议将依赖替换为单独的OCR插件google_mlkit_text_recognition,对应调用代码调整如下:
// 导入替换为 import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; // 识别逻辑调整 Future readText(_file)async{ try { final inputImage = InputImage.fromFile(_file); // 中文识别可替换为TextRecognitionScript.chinese final textRecognizer = TextRecognizer(script: TextRecognitionScript.latin); final RecognisedText recognisedText = await textRecognizer.processImage(inputImage); // 用完及时释放资源 textRecognizer.close(); print(recognisedText); return recognisedText; } on PlatformException catch(e){ print(e.message.toString()); return null; } }
测试注意事项
- 测试设备必须搭载完整的Google Play服务,国内网络环境下需要可正常访问Google服务,否则模块预装仍会失败。
- 原代码中
readText方法捕获异常后无返回值,会触发空安全运行时报错,建议补充异常分支的返回逻辑。
内容的提问来源于stack exchange,提问作者Troy
相关产品推荐
相关产品推荐

