【发布时间】:2019-07-08 05:47:13
【问题描述】:
我在 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();
}
});
}
【问题讨论】:
-
您正在创建的位图可能存在问题。你能加载一个已知大小和格式的静态位图,看看是否可行?
-
我试过了,还是不行,因为文本类型是机读区字符串。
标签: android firebase-mlkit text-recognition