【问题标题】:How to use text recognition in flutter?如何在flutter中使用文本识别?
【发布时间】:2019-11-05 10:31:35
【问题描述】:

我想创建一个文本 ocr 应用,我使用了 Flutter 和 firebase ml vision。

当我想阅读文本时遇到了异常。

我已将我的应用迁移到 androidx 并检查了 firebase 和 Gradle 版本。

我可以在没有任何 Gradle 问题的情况下构建应用程序,并且应用程序也可以启动。

但正如我上面提到的,问题从阅读文本开始。

您可以在下面看到我的代码和错误。

请帮助我,因为我尝试修复它超过 6 小时。

我的代码:

Future pickImage() async {
    File pickedImage = await ImagePicker.pickImage(
      source: ImageSource.gallery,
    );
    setState(() {
      fileImage = pickedImage;
      isImageLoaded = true;
    });
  }

  Future readText() async {
    FirebaseVisionImage ourImage = FirebaseVisionImage.fromFile(fileImage);
    TextRecognizer recognizeText = FirebaseVision.instance.textRecognizer();
    VisionText readText = await recognizeText.processImage(ourImage);

     for (TextBlock block in readText.blocks) {
      for (TextLine line in block.lines) {
        for (TextElement word in line.elements) {
          print(word.text);
        }
      }
    }
  }

错误:

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(textRecognizerError, Waiting for the text recognition model to be downloaded. Please wait., null)
E/flutter (14595): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (14595): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:316:33)
E/flutter (14595): <asynchronous suspension>
E/flutter (14595): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:344:48)
E/flutter (14595): <asynchronous suspension>
E/flutter (14595): #3      TextRecognizer.processImage (package:firebase_ml_vision/src/text_recognizer.dart:40:38)
E/flutter (14595): <asynchronous suspension>
E/flutter (14595): #4      _MyHomePageState.readText (package:text_ocr/main.dart:57:47)
E/flutter (14595): <asynchronous suspension>
E/flutter (14595): #5      _MyHomePageState.build.<anonymous closure> (package:text_ocr/main.dart:100:25)
E/flutter (14595): <asynchronous suspension>
E/flutter (14595): #6      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:654:14)
E/flutter (14595): #7      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:729:32)
E/flutter (14595): #8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (14595): #9      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
E/flutter (14595): #10     TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:275:7)
E/flutter (14595): #11     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:455:9)
E/flutter (14595): #12     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:75:13)
E/flutter (14595): #13     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:102:11)
E/flutter (14595): #14     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (14595): #15     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (14595): #16     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (14595): #17     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (14595): #18     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (14595): #19     _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter (14595): #20     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (14595): #21     _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter (14595): #22     _invoke1 (dart:ui/hooks.dart:263:10)
E/flutter (14595): #23     _dispatchPointerDataPacket (dart:ui/hooks.dart:172:5)
E/flutter (14595): 

【问题讨论】:

    标签: android firebase flutter dart firebase-mlkit


    【解决方案1】:

    将此添加到您的 android/app/AndroidManifest.xml 文件中:

    <application ...>
      ...
      <meta-data
        android:name="com.google.firebase.ml.vision.DEPENDENCIES"
        android:value="ocr" />
      <!-- To use multiple models: android:value="ocr,label,barcode,face" -->
    </application>
    

    它会在应用安装时下载您当前缺少的资源。

    【讨论】:

    • 这将解决 Android 依赖项。 Web 和 iOS 依赖项如何?
    猜你喜欢
    • 2021-05-11
    • 2011-07-25
    • 1970-01-01
    • 2017-11-23
    • 2020-06-22
    • 2017-11-29
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多