Firebase ML Vision已停用,如何在Flutter中使用Google ML Kit实现文本识别?
Flutter 使用 Google ML Kit 实现图片文本识别完整指南
1. 前置依赖配置
首先在pubspec.yaml中添加所需依赖:
dependencies: flutter: sdk: flutter google_mlkit_text_recognition: ^0.13.0 # 可替换为当前最新稳定版 image_picker: ^1.0.4 # 用于从相册/相机获取待识别图片
完成依赖添加后需要做平台适配:
- 安卓端:修改
android/app/build.gradle,将minSdkVersion调整为21及以上android { defaultConfig { minSdkVersion 21 } } - iOS端:在
ios/Runner/Info.plist中添加权限声明:<key>NSPhotoLibraryUsageDescription</key> <string>需要访问相册选取图片进行文本识别</string> <key>NSCameraUsageDescription</key> <string>需要使用相机拍摄图片进行文本识别</string>
2. 核心功能实现
首先导入需要的包:
import 'package:flutter/material.dart'; import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; import 'package:image_picker/image_picker.dart';
文本识别核心逻辑封装:
Future<String> recognizeTextFromImage(InputImage inputImage) async { // 初始化文本识别器,默认识别拉丁字符,如需识别中文可替换为TextRecognitionScript.chinese final textRecognizer = TextRecognizer(script: TextRecognitionScript.latin); // 执行文本识别 final RecognizedText recognizedText = await textRecognizer.processImage(inputImage); // 拼接识别结果,也可根据业务需求获取文本块、文本行的位置、置信度等信息 String result = ''; for (TextBlock block in recognizedText.blocks) { for (TextLine line in block.lines) { result += '${line.text}\n'; } result += '\n'; } // 必须释放识别器,避免内存泄漏 textRecognizer.close(); return result; }
调用示例(点击按钮选取相册图片并识别):
Future<void> pickImageAndRecognize() async { final ImagePicker picker = ImagePicker(); // 如需调用相机拍摄,将source替换为ImageSource.camera即可 final XFile? pickedImage = await picker.pickImage(source: ImageSource.gallery); if (pickedImage != null) { final InputImage inputImage = InputImage.fromFilePath(pickedImage.path); final String recognizedText = await recognizeTextFromImage(inputImage); // 可将识别结果展示到UI界面 debugPrint('识别结果:$recognizedText'); } }
3. 注意事项
- 如需识别中文、日文、韩文等非拉丁字符,初始化识别器时替换对应
script参数即可,库内置支持多种主流语言脚本 - 识别过程为纯本地运算,不需要联网,运行速度快且无数据上传风险
- 处理相机拍摄的图片时建议先校验图片方向,避免方向错误导致识别准确率下降
内容的提问来源于stack exchange,提问作者Divyansh Jangir
相关产品推荐
相关产品推荐

