Я работаю над приложением, которое используется для захвата изображения и его преобразования в текстовую базу данных, что обеспечивает правильный ответ, но проблема не в том, чтобы получить какой-либо текст из живого захвата изображения, но когда я выбираю файл изображения из галереи, он работаетоштрафовать любое решение, чтобы решить проблему с огненной базой .....
// Getting Image
public void ImageFromMediaImage(ByteBuffer buffer, int rotation,Context context) {
int result;
switch (rotation) {
case 0:
result = FirebaseVisionImageMetadata.ROTATION_0;
break;
case 90:
result = FirebaseVisionImageMetadata.ROTATION_90;
break;
case 180:
result = FirebaseVisionImageMetadata.ROTATION_180;
break;
case 270:
result = FirebaseVisionImageMetadata.ROTATION_270;
break;
default:
result = FirebaseVisionImageMetadata.ROTATION_0;
}
Log.i(TAG, "ImageFromMediaImage nn: "+result);
FirebaseVisionImageMetadata metadata = new FirebaseVisionImageMetadata.Builder()
.setWidth(280) // 480x360 is typically sufficient for
.setHeight(160) // image recognition
.setFormat(ImageFormat.NV21)
.build();
// [END set_metadata]
// [START image_from_buffer]
// Checkimage checkImage =new Checkimage();
// checkImage.makeImage(buffer);
FirebaseVisionImage image = FirebaseVisionImage.fromByteBuffer(buffer, metadata);
TextRecognizeDetect(image);
}
Обработка изображения
public void TextRecognizeDetect(final FirebaseVisionImage firebaseVisionImage){
Log.i(TAG, "TextRecognizeDetect: ");
detector = FirebaseVision.getInstance().getCloudTextRecognizer();
// [END set_detector_options_cloud]
// [START get_detector_cloud]
// FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
// .getCloudTextRecognizer();
// Or, to change the default settings:
// FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
// .getCloudTextRecognizer(options);
// [END get_detector_cloud]
// [START run_detector_cloud]
detector.processImage(firebaseVisionImage).addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
// stringBuffer =new StringBuffer();
String resultText =firebaseVisionText.getText();
Log.i(TAG, "onSuccess: "+resultText);
// stringBuffer.append(resultText);
for (FirebaseVisionText.TextBlock block: firebaseVisionText.getTextBlocks()) {
String blockText = block.getText();
Float blockConfidence = block.getConfidence();
List<RecognizedLanguage> blockLanguages = block.getRecognizedLanguages();
Point[] blockCornerPoints = block.getCornerPoints();
Rect blockFrame = block.getBoundingBox();
for (FirebaseVisionText.Line line: block.getLines()) {
String lineText = line.getText();
Float lineConfidence = line.getConfidence();
Log.i(TAG, "onSuccess: "+lineText);
Log.i(TAG, "onSuccess: "+resultText );
// stringBuffer.append("\n " +lineText);
List<RecognizedLanguage> lineLanguages = line.getRecognizedLanguages();
Point[] lineCornerPoints = line.getCornerPoints();
Rect lineFrame = line.getBoundingBox();
for (FirebaseVisionText.Element element: line.getElements()) {
String elementText = element.getText();
Float elementConfidence = element.getConfidence();
Log.i(TAG, "onSuccess: "+elementText);
Log.i(TAG, "onSuccess: "+resultText );
List<RecognizedLanguage> elementLanguages = element.getRecognizedLanguages();
Point[] elementCornerPoints = element.getCornerPoints();
Rect elementFrame = element.getBoundingBox();
}
}
}
TranslateLetter translateLetter= TranslateLetter.getTranslateLetter();
translateLetter.TranslateWords(resultText,context);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}