搜索插件、代码仓与 APP 分类

flutter_tesseract_ocr 封面
插件详情v0.4.31

flutter_tesseract_ocr

Tesseract 4 添加了一个基于神经网络(LSTM)的新OCR引擎,专注于行识别。它支持Unicode(UTF-8),可识别超过100种语言。

AndroidiOSWeb
近 30 天下载
7910
喜欢数
216
Pub 分数
130

安装插件

flutter pub add flutter_tesseract_ocr

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Flutter Tesseract OCR 是一个 Flutter 插件,集成了 Tesseract 4 的先进神经网络(LSTM)OCR 引擎,能够准确地从图像中识别超过 100 种语言的文本。它支持 Unicode(UTF-8),非常适合多语言应用程序。该插件可在 Android、iOS 和 Web 平台上运行,为开发者提供可靠的文档扫描和文本提取解决方案。

适合场景

  • 移动应用中的文档扫描
  • 从图像中提取文本
  • 多语言文本识别
  • 自动表单数据捕获
  • 基于图像的搜索功能

主要特点

  • 基于LSTM的OCR引擎
  • 支持100多种语言
  • Unicode (UTF-8) 文本输出
  • 跨平台兼容性
  • 高精度的行级识别

适合对象

  • 需要OCR的移动应用
  • 文档管理工具
  • 语言无关的文本提取
  • Web 和移动混合项目
  • 具有图像到文本工作流的应用程序

使用建议

  • 需要图像预处理以获得最佳效果
  • 性能在低端设备上可能有所不同
  • 非默认语言所需的额外设置
  • 有限的离线支持,不包含内置模型
  • 模型大小影响应用包大小

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Tesseract OCR for Flutter

Fork note (onestudi0/tesseract_ocr): This fork exists solely to fix android/build.gradle, which still declares the defunct jcenter() repository — current Gradle rejects the jcenter() DSL method outright, so upstream fails to build at all as of this writing. This fork replaces it with mavenCentral(). No other changes. If upstream (khjde1207/tesseract_ocr) ever merges an equivalent fix, switch back to the pub.dev release and drop the dependency_overrides pointing here.

Tesseract OCR 4.0 for flutter This plugin is based on Tesseract OCR 4 This plugin uses Tesseract4Android and SwiftyTesseract.

pub.dev link


https://pub.dev/packages/google_ml_kit

Tesseract is slower than ml_kit.

Consider whether you should use Tesseract


example

install


dev_dependencies:
  ...
  flutter_tesseract_ocr:

web

./web/index.html

use https://www.npmjs.com/package/tesseract.js/v/v4.0.2

<body>
  <script src='https://unpkg.com/tesseract.js@v4.0.2/dist/tesseract.min.js'></script>
  <script>
    async function _extractText(imagePath , mapData){
      var worker = await Tesseract.createWorker();
      await worker.load();
      await worker.loadLanguage(mapData.language)
      await worker.initialize(mapData.language)
      await worker.setParameters(mapData.args)
      var rtn = await worker.recognize(imagePath, {}, worker.id);
      await worker.terminate();
      if(mapData.args["tessjs_create_hocr"]){
        return rtn.data.hocr;
      }
      return rtn.data.text;
    }
  </script>
  ...
  ..
  .
</body>

Getting Started (Android / Ios)

You must add trained data and trained data config file to your assets directory. You can find additional language trained data files here Trained language files

add tessdata folder under assets folder, add tessdata_config.json file under assets folder:

{
  "files": [
    "eng.traineddata",
    "<other_language>.traineddata"
  ]
}

Plugin assumes you have tessdata folder in your assets directory and defined in your pubspec.yaml

Check the contents of example/assets folder and example/pubspec.yaml


IOS issues

Initialization of SwiftyTesseract has failed

Just drag tessdata folder from asset to place under Runner folder in xcode add as a reference then it will work.

Reference


Usage

Using is very simple:

//args support android / Web , i don't have a mac
String text = await FlutterTesseractOcr.extractText('/path/to/image', language: 'kor+eng',
        args: {
          "psm": "4",
          "preserve_interword_spaces": "1",
        });

You can leave language empty, it will default to `'eng'.

//---- dynamic add Tessdata (Android)---- ▼
// https://github.com/tesseract-ocr/tessdata/raw/main/dan_frak.traineddata

HttpClient httpClient = new HttpClient();

HttpClientRequest request = await httpClient.getUrl(Uri.parse(
        'https://github.com/tesseract-ocr/tessdata/raw/main/${langName}.traineddata'));

HttpClientResponse response = await request.close();
Uint8List bytes =await consolidateHttpClientResponseBytes(response);
String dir = await FlutterTesseractOcr.getTessdataPath();

print('$dir/${langName}.traineddata');
File file = new File('$dir/${langName}.traineddata');
await file.writeAsBytes(bytes);
//---- dynamic add Tessdata ---- ▲

所属分类

依赖

依赖清单 2 项

源码仓库

使用此插件的项目