我正在使用Android设备上的Firebase ML Kit来使用相机进行文本识别,而无需单击图像。 我通过接收帧并从帧中获取位图来使用它。 然后将位图传递到文本识别方法。 但是识别的文字不正确。而且,它在不断变化,但从未给出准确的结果。 请让我知道我在做什么错。
获取框架和位图:
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
frame = Bitmap.createBitmap(textureView.getWidth(), textureView.getHeight(), Bitmap.Config.ARGB_8888);
textureView.getBitmap(frame);
Bitmap emptyBitmap = Bitmap.createBitmap(textureView.getBitmap(frame).getWidth(), textureView.getBitmap(frame).getHeight(), textureView.getBitmap(frame).getConfig());
if (textureView.getBitmap(frame).sameAs(emptyBitmap)) {
// myBitmap is empty/blank
System.out.println(" empty !!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
} else {
System.out.println(" bitmap");
bitmap = textureView.getBitmap(frame);
runTextRecognition();
}
文本识别:
private void runTextRecognition() {
System.out.println(" text recognition!!!");
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
FirebaseVisionTextRecognizer recognizer = FirebaseVision.getInstance().getOnDeviceTextRecognizer();
recognizer.processImage(image).addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText texts) {
System.out.println("Text recognized ::: " + texts);
textRecognized = true;
processTextRecognitionResult(texts);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
e.printStackTrace();
}
});
}
答案 0 :(得分:1)
我试图识别的文字是MRZ。我联系了Firebase支持人员,他们自己进行了测试,并得出结论,ML Kit API无法读取MRZ类型的文本,并且将来可能会合并它。
答案 1 :(得分:0)
您可以在Android中尝试用于OCR(光学字符识别)的Mobile Text Vision API。
有关实现的详细信息,请参考此Google代码实验室https://codelabs.developers.google.com/codelabs/mobile-vision-ocr/index.html?index=..%2F..index#0
特别是创建OcrDetectorProcessor步骤。