1

我遇到了 Flutter firebase_ml_vision 的问题。在 iPad Mini 2 上进行测试时(过去在 android 上看到过),以人像模式拍照时未检测到文字。它似乎在景观中工作。当我在 Native Android 中编写原始应用程序时,我遇到了完全相同的问题(我后来决定在 Flutter/Dart 中制作它)

我现在花了几个小时试图弄清楚这一点。这似乎是一个已知问题,但对解决方案没有普遍共识。

我最接近它的工作是使用这个 SO fixExifRotation() 函数,但是读取的文本是加扰的。

有没有人遇到过这个问题并找到了可行的解决方案?

Future<String> takePicture() async {
  File imageFile = await ImagePicker.pickImage(
    source: ImageSource.camera,
    imageQuality: 100,
  );

  if (imageFile == null) {
    return null;
  }

  final appDir = await syspaths.getApplicationDocumentsDirectory();
  final fileName = path.basename(rotatedFile.path);

  final savedImage = await rotatedFile.copy('${appDir.path}/$fileName');
  return '${appDir.path}/$fileName';
}

...
Future<MLResult> processText({@required BuildContext context,String imageFilePath}) async {
  final FirebaseVisionImage visionImage =
      FirebaseVisionImage.fromFilePath(imageFilePath);
  final TextRecognizer _recognizer = FirebaseVision.instance.textRecognizer();
  final VisionText readText = await _recognizer.processImage(visionImage);

  var blocks = readText.blocks;
  if (blocks.length == 0) {
    //*** THIS IF BLOCK IS EXECUTED - no text is detected by ML Vision.
  }
}

imagePath = await Vision.takePicture();
Vision.processText(
    context: context,
    imageFilePath: imagePath,
  ).then((value) {..});
4

0 回答 0