简体   繁体   English

如何在 flutter 中使用文本识别?

[英]How to use text recognition in flutter?

I want to create a text ocr app and I've used flutter and firebase ml vision.我想创建一个文本 ocr 应用程序,我使用了 flutter 和 firebase ml 视觉。

I've faced an exception when I want to read the text.当我想阅读文本时,我遇到了一个例外。

I've migrated my app to androidx and checked firebase and Gradle version.我已将我的应用程序迁移到 androidx 并检查了 firebase 和 Gradle 版本。

I can build the app without any Gradle issue and the app starts as well.我可以在没有任何 Gradle 问题的情况下构建应用程序,并且应用程序也启动了。

but as I've mentioned above the problem starts when reading text.但正如我上面提到的,问题从阅读文本开始。

You can see below my code and the error.您可以在下面看到我的代码和错误。

please help me because I tried to fix it for more than 6 hours.请帮助我,因为我尝试修复它超过 6 个小时。

My Code:我的代码:

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);
        }
      }
    }
  }

The Error:错误:

[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): 

Add this to your android/app/AndroidManifest.xml file:将此添加到您的 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>

It will download the resources you are currently missing, while the app installs.它会在安装应用程序时下载您当前缺少的资源。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM