fl_mlkit_text_recognize

pub package license

基于 Google ML Kit 的 Flutter 文字识别(OCR)插件,支持 Android 与 iOS。

Camera preview is provided by fl_camera.

特性 Features

  • 相机实时识别,支持拉丁语系、中文、日语、韩语、天城文
  • 图片字节识别,支持旋转角度(Android)
  • 返回文字块(TextBlock)、行(TextLine)、元素(TextElement)及坐标
  • 识别频率、暂停 / 继续、闪光灯、缩放、分辨率、前后摄像头切换
  • 支持自定义浮层,可绘制文字块 / 行 / 元素区域

平台要求 Requirements

平台 要求
Flutter >= 3.35.0
Dart >= 3.9.0
Android minSdk 23,compileSdk 36,AGP 9.1.0,Kotlin 2.4.0
iOS 15.5+(Google ML Kit 9.0.0 要求)

Google ML Kit iOS 官方仅提供 CocoaPods,本插件使用 CocoaPods 集成。 若使用 Flutter 3.47 且开启了 Swift Package Manager,请先执行 flutter config --no-enable-swift-package-manager。

安装 Installation

dependencies:
  fl_mlkit_text_recognize: ^4.0.0

iOS

在 ios/Runner/Info.plist 中添加:

<key>NSCameraUsageDescription</key>
<string>是否允许 FlMlKitTextRecognize 使用你的相机?</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>是否允许 FlMlKitTextRecognize 访问你的相册?</string>

Google ML Kit 的 iOS 静态库不支持 arm64 模拟器,请使用真机或 Rosetta 模拟器调试。

使用 Usage

相机实时识别

FlMlKitTextRecognize(
  recognizedLanguage: RecognizedLanguage.chinese,
  resolution: CameraResolution.high,
  frequency: 800,
  autoRecognize: true,
  overlay: const ScannerLine(),
  onDataChanged: (AnalysisTextModel data) {
    debugPrint(data.text);
  },
)

图片识别

final FlMlKitTextRecognizeController controller = FlMlKitTextRecognizeController();
await controller.setRecognizedLanguage(RecognizedLanguage.chinese);
final AnalysisTextModel? result = await controller.recognizeImageByte(bytes, rotationDegrees: 0);

控制器

方法 说明
initialize() 初始化相机与事件通道
startPreview(camera, resolution:) 开始预览
stopPreview() 停止预览
setRecognizedLanguage(language) 设置识别语言
setParams(frequency:, canRecognize:) 设置识别间隔与暂停状态
startRecognize() / pauseRecognize() 继续 / 暂停识别
recognizeImageByte(bytes, rotationDegrees:) 识别图片字节
setFlashMode(state) / setZoomRatio(ratio) 闪光灯 / 缩放
switchCamera(camera) / resetCamera() 切换 / 重置相机
dispose() 释放资源

数据模型 Data Model

AnalysisTextModel 包含:

字段 说明
text 全部识别文字
textBlocks / blockList 文字块列表
width / height 原图尺寸(像素)

TextBlock、TextLine、TextElement 均包含 text、boundingBox、corners, Android 额外提供 recognizedLanguage,iOS 额外提供 recognizedLanguages。

示例 Example

完整示例见 example。

Libraries

fl_mlkit_text_recognize
Google ML Kit 文字识别(OCR)插件,支持 Android 与 iOS。