Flutter内置OCR引擎插件ocr_engine_builtin的使用

Flutter内置OCR引擎插件ocr_engine_builtin的使用

ocr_engine_builtin 是一个用于在 Flutter 应用中集成 OCR(光学字符识别)功能的内置插件。该插件可以方便地将图片中的文本提取出来,并进行进一步处理。

插件信息

  • 插件名称: ocr_engine_builtin
  • 版本: pub version
  • 所属项目: uni_ocr

使用示例

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 ocr_engine_builtin 插件。

import 'package:flutter/material.dart';
import 'package:bot_toast/bot_toast.dart'; // 用于弹出提示框

import './pages/home.dart'; // 导入主页

void main() {
  WidgetsFlutterBinding.ensureInitialized(); // 确保 Flutter 框架已经初始化

  runApp(const MyApp()); // 运行应用
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  _MyAppState createState() => _MyAppState(); // 创建状态实例
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: const Color(0xff416ff4), // 主题颜色
        canvasColor: Colors.white, // 画布颜色
        scaffoldBackgroundColor: const Color(0xffF7F9FB), // 背景颜色
        dividerColor: Colors.grey.withOpacity(0.3), // 分割线颜色
      ),
      builder: BotToastInit(), // 初始化 BotToast
      navigatorObservers: [BotToastNavigatorObserver()], // 添加导航观察者
      home: const HomePage(), // 主页
    );
  }
}

详细说明

  1. 导入依赖:

    import 'package:flutter/material.dart';
    import 'package:bot_toast/bot_toast.dart';
    

    导入必要的包。bot_toast 包用于在应用中显示弹出提示框。

  2. 初始化 Flutter 框架:

    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      runApp(const MyApp());
    }
    

    确保 Flutter 框架已经初始化,并运行应用。

  3. 创建应用主体:

    class MyApp extends StatefulWidget {
      const MyApp({Key? key}) : super(key: key);
      
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          theme: ThemeData(
            primaryColor: const Color(0xff416ff4),
            canvasColor: Colors.white,
            scaffoldBackgroundColor: const Color(0xffF7F9FB),
            dividerColor: Colors.grey.withOpacity(0.3),
          ),
          builder: BotToastInit(),
          navigatorObservers: [BotToastNavigatorObserver()],
          home: const HomePage(),
        );
      }
    }
    

更多关于Flutter内置OCR引擎插件ocr_engine_builtin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter内置OCR引擎插件ocr_engine_builtin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,ocr_engine_builtin 是一个内置的OCR(光学字符识别)引擎插件,用于从图像中提取文本。使用这个插件,你可以轻松地将OCR功能集成到你的Flutter应用中。以下是如何使用 ocr_engine_builtin 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 ocr_engine_builtin 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  ocr_engine_builtin: ^latest_version

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的Dart文件中导入 ocr_engine_builtin 插件:

import 'package:ocr_engine_builtin/ocr_engine_builtin.dart';

3. 初始化OCR引擎

在使用OCR引擎之前,你需要初始化它:

OcrEngineBuiltin ocrEngine = OcrEngineBuiltin();

4. 识别图像中的文本

使用 recognizeText 方法从图像中提取文本。你需要提供一个包含图像数据的 Uint8List

import 'dart:io';
import 'dart:typed_data';
import 'package:image_picker/image_picker.dart';

Future<void> recognizeText() async {
  // 使用 image_picker 插件选择图像
  final imagePicker = ImagePicker();
  final pickedFile = await imagePicker.getImage(source: ImageSource.gallery);

  if (pickedFile != null) {
    // 将图像文件转换为 Uint8List
    Uint8List imageBytes = await File(pickedFile.path).readAsBytes();

    // 识别图像中的文本
    String recognizedText = await ocrEngine.recognizeText(imageBytes);

    // 输出识别结果
    print("Recognized Text: $recognizedText");
  }
}

5. 处理识别结果

recognizeText 方法返回一个包含识别文本的字符串。你可以根据需要进一步处理或显示这个文本。

6. 错误处理

在实际应用中,你可能需要处理可能出现的错误,例如图像格式不受支持或OCR引擎初始化失败。你可以使用 try-catch 来捕获和处理这些错误。

try {
  String recognizedText = await ocrEngine.recognizeText(imageBytes);
  print("Recognized Text: $recognizedText");
} catch (e) {
  print("Error recognizing text: $e");
}

7. 释放资源(如果需要)

如果你不再需要OCR引擎,可以释放相关资源:

ocrEngine.dispose();

完整示例

以下是一个完整的示例,展示了如何从图库中选择图像并识别其中的文本:

import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:ocr_engine_builtin/ocr_engine_builtin.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: OCRScreen(),
    );
  }
}

class OCRScreen extends StatefulWidget {
  [@override](/user/override)
  _OCRScreenState createState() => _OCRScreenState();
}

class _OCRScreenState extends State<OCRScreen> {
  String recognizedText = "";

  Future<void> recognizeText() async {
    final imagePicker = ImagePicker();
    final pickedFile = await imagePicker.getImage(source: ImageSource.gallery);

    if (pickedFile != null) {
      Uint8List imageBytes = await File(pickedFile.path).readAsBytes();
      OcrEngineBuiltin ocrEngine = OcrEngineBuiltin();

      try {
        String text = await ocrEngine.recognizeText(imageBytes);
        setState(() {
          recognizedText = text;
        });
      } catch (e) {
        setState(() {
          recognizedText = "Error recognizing text: $e";
        });
      } finally {
        ocrEngine.dispose();
      }
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('OCR Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: recognizeText,
              child: Text('Pick Image and Recognize Text'),
            ),
            SizedBox(height: 20),
            Text('Recognized Text:'),
            Text(recognizedText),
          ],
        ),
      ),
    );
  }
}
回到顶部