我想从base64编码的图像中OCR文本。 我知道图像有效,因为我可以使用
Image.memory(base64Decode(captchaEncodedImgFetched))
现在,问题是我需要将此图像传递给Firebase ML Vision进行处理。
库firebase_ml_vision
有一个使用文件中的图像的示例
final File imageFile = getImageFile();
final FirebaseVisionImage visionImage = FirebaseVisionImage.fromFile(imageFile);`
但是我有一个base64编码的图像。
我尝试了以下方法
final FirebaseVisionImage visionImage = FirebaseVisionImage.fromBytes(
base64Decode(captchaEncodedImgFetched));
但它似乎需要FirebaseVisionImageMetadata()
作为论据,但我对字节图像一无所知。
这个类需要更多的我不明白的参数。 例如,它需要一个size : Size(width, height)
参数。图像不是应该已经有尺寸了吗?为什么需要再次指定?
现在我将其设置为Size(200, 50)
.然后是其他的,我不知道该向他们传递什么。例如,planeData
和rawFormat
。
以下是这些文档:
https://pub.dev/documentation/firebase_ml_vision/latest/firebase_ml_vision/FirebaseVisionImageMetadata-class.html
https://pub.dev/documentation/firebase_ml_vision/latest/firebase_ml_vision/FirebaseVisionImagePlaneMetadata-class.html
https://pub.dev/documentation/firebase_ml_vision/latest/
FirebaseVisionImage.fromBytes
需要FirebaseVisionImageMetadata
哪个实习生需要FirebaseVisionImagePlaneMetadata
。以下示例:
// Below example uses metadata values based on an RGBA-encoded 1080x1080 image
final planeMetadata = FirebaseVisionImagePlaneMetadata(
width: 1080,
height: 1080,
bytesPerRow: 1080 * 4,
);
final imageMetadata = FirebaseVisionImageMetadata(
size: Size(1080, 1080),
planeData: planeMetadata,
rawFormat: 'RGBA',
);
final visionImage = FirebaseVisionImage.fromBytes(decoded, metadata);
以牺牲性能为代价的更简单的解决方法是将字节写入磁盘并从那里读取映像,如下所示:
File imgFile = File('myimage.png');
imageFile.writeAsBytesSync(decoded.ToList());
final visionImage = FirebaseVisionImage.fromFile(imageFile);