我遇到了 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) {..});