0

截图: 文本识别页面

从图像中检测到的文本保存在“var resultTxt”中,如何保存 ML 模型检测到的所有行的状态并在另一个页面上使用?

文字识别码:

 doTextRecog() async {
    resultTxt = '';
    final FirebaseVisionImage visionImage =
        FirebaseVisionImage.fromFile(_selectedFile);
    final VisionText visionText =
        await textRecognizer.processImage(visionImage);

    for (TextBlock block in visionText.blocks) {
      for (TextLine line in block.lines) {
        resultTxt += line.text + '\n';
      }
    }

    setState(() {
      resultTxt;
      print(resultTxt);
    });
    // textRecognizer.close();
  }

我已经将 getX 控制器用于我的图像路径,但我不确定如何保存具有多行文本的 var 并在另一个页面上使用它。控制器代码:

class PollImageController extends GetxController {
  RxString imageDisplay = ''.obs;

  @override
  void onInit() {
    super.onInit();
  }

  void setImage(String image) {
    imageDisplay.value = image;
  }

  @override
  void onClose() {
    super.onClose();
  }
}
4

2 回答 2

0

您可以使用GetxService在您的应用程序中共享数据。

class SharedData extends GetxService {
  static SharedData get to => Get.find();
  final sharedText = ''.obs;

  @override
  void onInit() {
    super.onInit();
  }

  @override
  void onClose() {
    super.onClose();
  }
}
 doTextRecog() async {
    resultTxt = '';
    final FirebaseVisionImage visionImage =
        FirebaseVisionImage.fromFile(_selectedFile);
    final VisionText visionText =
        await textRecognizer.processImage(visionImage);

    for (TextBlock block in visionText.blocks) {
      for (TextLine line in block.lines) {
        resultTxt += line.text + '\n';
      }
    }

   // assign value
   SharedData.to.sharedText.value = resultTxt;
  }
于 2021-02-25T18:42:14.500 回答
0

您也可以在专门的GetxController课程中处理所有文本识别功能。

然后你可以从任何地方调用doTextRecog()和访问更新的RxString resultTxt值。

class TextRecognitionController extends GetxController {
  RxString resultTxt = ''.obs; 

  doTextRecog() async {
    final FirebaseVisionImage visionImage =
        FirebaseVisionImage.fromFile(_selectedFile);
    final VisionText visionText =
        await textRecognizer.processImage(visionImage);

    for (TextBlock block in visionText.blocks) {
      for (TextLine line in block.lines) {
        resultTxt.value += line.text + '\n';
      }
    }
    
    print(resultTxt.value);
    // textRecognizer.close();
  }
}
于 2021-02-25T22:26:51.017 回答