Flutter OCR识别插件ad_hoc_ident_ocr_extract_tesseract的使用

Flutter OCR识别插件ad_hoc_ident_ocr_extract_tesseract的使用

特性

该包由三个域包组成。每个包都包含一些实现包。

  • 提供一个OcrTextExtractor实现来从OcrImages中提取文本。
  • 基于flutter_vision
  • 使用当前设置检测MRZ文档的测试结果和性能非常差。强烈建议使用ad_hoc_ident_ocr_extract_google代替。

开始使用

查看flutter_vision的设置文档,了解如何将训练模型添加到您的项目中。对于专门用于OCR-B和MRZ检测的训练模型,可以参考tesseractMRZtessdata_ocrb

在您的应用的pubspec.yaml文件中添加主域包,并添加您的应用所需的特性包。

使用方法

熟悉ad_hoc_ident包中的示例应用程序,因为它提供了如何组合不同包的良好概述。否则,选择并匹配适合您的功能。所有内置功能都在各自的域包中定义了接口,因此您可以轻松创建和集成自己的实现。

额外信息

如果您使用此包并实现自己的功能或扩展现有功能,请考虑创建一个拉取请求。该项目是为了大学而创建的,但如果它对其他开发人员有用,我可能会考虑支持进一步的开发。

请注意,阅读MRZ文档或他人的NFC标签可能受到当地隐私法律的限制。

完整示例Demo

首先,确保在您的pubspec.yaml文件中添加以下依赖项:

dependencies:
  ad_hoc_ident: ^x.x.x
  flutter_vision: ^x.x.x

接下来,在您的Dart代码中,初始化并使用ad_hoc_ident_ocr_extract_tesseract插件。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_vision/flutter_vision.dart';
import 'package:ad_hoc_ident/ad_hoc_ident.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter OCR识别插件示例'),
        ),
        body: Center(
          child: OCRExample(),
        ),
      ),
    );
  }
}

class OCRExample extends StatefulWidget {
  @override
  _OCRExampleState createState() => _OCRExampleState();
}

class _OCRExampleState extends State<OCRExample> {
  String _extractedText = "等待识别...";

  @override
  void initState() {
    super.initState();
    _performOCR();
  }

  Future<void> _performOCR() async {
    // 加载图像资源
    final image = await loadImage('assets/example_image.png');

    // 初始化OcrTextExtractor
    final extractor = OcrTextExtractor();

    // 执行OCR识别
    final result = await extractor.extractTextFromImage(image);

    setState(() {
      _extractedText = result.text;
    });
  }

  // 加载图像资源
  Future<Uint8List> loadImage(String path) async {
    final byteData = await rootBundle.load(path);
    return byteData.buffer.asUint8List();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text(_extractedText),
      ],
    );
  }
}

在这个示例中:

  1. 我们加载了一张图像资源。
  2. 初始化了OcrTextExtractor
  3. 使用extractTextFromImage方法执行OCR识别。
  4. 将识别出的文本显示在屏幕上。

确保在assets目录下放置一张图像文件(例如example_image.png),并在pubspec.yaml文件中正确配置资源路径:

flutter:
  assets:
    - assets/example_image.png

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

1 回复

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


ad_hoc_ident_ocr_extract_tesseract 是一个 Flutter 插件,用于在移动应用中集成 OCR(光学字符识别)功能。该插件基于 Tesseract OCR 引擎,能够从图像中提取文本信息。以下是使用该插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  ad_hoc_ident_ocr_extract_tesseract: ^版本号

替换 ^版本号 为最新的插件版本号。

2. 获取项目依赖

在终端运行以下命令以获取依赖:

flutter pub get

3. 导入插件

在需要使用 OCR 功能的 Dart 文件中导入插件:

import 'package:ad_hoc_ident_ocr_extract_tesseract/ad_hoc_ident_ocr_extract_tesseract.dart';

4. 初始化插件

在使用插件之前,通常需要初始化它。初始化过程可能会涉及到加载 Tesseract 模型或设置其他参数。

void initOCR() async {
  await AdHocIdentOcrExtractTesseract.init();
}

5. 从图像中提取文本

使用 extractTextFromImage 方法从图像中提取文本。你需要提供图像的路径或字节数据。

void extractText() async {
  String imagePath = 'path_to_your_image.png';
  String extractedText = await AdHocIdentOcrExtractTesseract.extractTextFromImage(imagePath);
  print('Extracted Text: $extractedText');
}

6. 处理提取的文本

提取的文本可以用于进一步的处理,例如显示在 UI 上或进行其他操作。

Text(extractedText)

7. 释放资源(可选)

在不再需要使用 OCR 功能时,可以释放相关资源。

void disposeOCR() async {
  await AdHocIdentOcrExtractTesseract.dispose();
}

完整示例

以下是一个完整的示例,展示如何从图像中提取文本并显示在 Flutter 应用中:

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

void main() {
  runApp(MyApp());
}

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

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

class _OCRDemoState extends State<OCRDemo> {
  String extractedText = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    initOCR();
  }

  void initOCR() async {
    await AdHocIdentOcrExtractTesseract.init();
  }

  void extractText() async {
    String imagePath = 'path_to_your_image.png';
    String text = await AdHocIdentOcrExtractTesseract.extractTextFromImage(imagePath);
    setState(() {
      extractedText = text;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('OCR Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: extractText,
              child: Text('Extract Text from Image'),
            ),
            SizedBox(height: 20),
            Text('Extracted Text:'),
            Text(extractedText),
          ],
        ),
      ),
    );
  }
}
回到顶部