如何在Flutter中识别图片内文本并转换为字符串?
在Flutter中识别图片文本并转成字符串
当然可以,在Flutter里实现图片文本识别(也就是OCR),常用的有两个方案,操作起来都不复杂:
方案一:用谷歌官方的google_ml_kit包
这个包集成简单,支持多语言识别,适合快速开发。
步骤:
- 先在
pubspec.yaml里加依赖:
dependencies: google_ml_kit: ^0.13.0 image_picker: ^1.0.4 # 要是你还没实现图片选择功能,就加这个
- 写识别逻辑代码:
import 'package:google_ml_kit/google_ml_kit.dart'; import 'package:image_picker/image_picker.dart'; Future<String?> getTextFromImage() async { // 从相册选图(如果你的图片已经有路径了,这步可以跳过,直接用你的路径) final pickedImage = await ImagePicker().pickImage(source: ImageSource.gallery); if (pickedImage == null) return null; // 把图片转成ML工具能处理的格式 final inputImage = InputImage.fromFilePath(pickedImage.path); // 创建文本识别器 final textRecognizer = GoogleMlKit.vision.textRecognizer(); // 开始识别 final recognizedText = await textRecognizer.processImage(inputImage); // 把识别出的文本拼接成字符串 String textResult = ''; for (var block in recognizedText.blocks) { for (var line in block.lines) { textResult += '${line.text}\n'; } } // 用完记得释放资源 await textRecognizer.close(); return textResult; }
- 配置权限:
- 安卓:在
AndroidManifest.xml里加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- iOS:在
Info.plist里加权限描述
<key>NSPhotoLibraryUsageDescription</key> <string>需要访问相册选择图片进行文本识别</string>
方案二:用tesseract_ocr包
这个基于Tesseract引擎,适合需要自定义训练数据(比如识别特殊字体、生僻字)的场景,不过要额外下载语言训练包(比如中文的chi_sim.traineddata),放到assets目录里,再在pubspec.yaml里配置加载资源,之后调用识别方法就行,灵活性更高。
内容的提问来源于stack exchange,提问作者PewDizinho
相关产品推荐
相关产品推荐

