Je travaille sur une fonctionnalité pour mon Android. Je voudrais lire le texte d'une image puis l'enregistrer dans une base de données. Est-ce que l'utilisation de l'OCR est la meilleure façon? Y a-t-il une autre façon? Google suggère dans sa documentation que NDK ne devrait être utilisé que si cela est strictement nécessaire, mais quels sont exactement les inconvénients?
Toute aide est la bienvenue.
vous pouvez utiliser la bibliothèque google vision pour convertir l'image en texte, cela donnera une meilleure sortie de l'image. Ajoutez la bibliothèque ci-dessous dans la version de construction:
compile 'com.google.Android.gms:play-services-vision:10.0.0+'
TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build();
Frame imageFrame = new Frame.Builder()
.setBitmap(bitmap) // your image bitmap
.build();
String imageText = "";
SparseArray<TextBlock> textBlocks = textRecognizer.detect(imageFrame);
for (int i = 0; i < textBlocks.size(); i++) {
TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));
imageText = textBlock.getValue(); // return string
}
Le texte d'une image peut être extrait à l'aide du kit d'apprentissage automatique Firebase (ML). Il existe deux versions de l'API de reconnaissance de texte, l'API sur l'appareil (gratuite) et l'API sur le cloud.
Pour utiliser l'API, créez d'abord BitMap de l'image, qui doit être verticale. Créez ensuite un objet FirebaseVisionImage en passant l'objet bitmap.
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
Créez ensuite l'objet FirebaseVisionTextRecognizer.
FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance()
.getCloudTextRecognizer();
Passez ensuite l'objet FirebaseVisionImage à la méthode processImage (), ajoutez des écouteurs à la tâche résultante et capturez le texte extrait dans la méthode de rappel réussie.
textRecognizer.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
//process success
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//process failure
}
});
Pour un exemple complet qui montre comment utiliser la reconnaissance de texte Firebase ML, voir https://www.zoftino.com/extracting-text-from-images-Android
À partir de cela Exemple simple d'OCRReader dans Android tutoriel, vous pouvez lire le texte de l'image et vous pouvez également rechercher du texte à l'aide de l'appareil photo, en utilisant un code très simple.
Cette bibliothèque est développée en utilisant Mobile Vision Text API
Pour numériser le texte de la caméra
OCRCapture.Builder(this)
.setUseFlash(true)
.setAutoFocus(true)
.buildWithRequestCode(CAMERA_SCAN_TEXT);
Pour extraire le texte de l'image
String text = OCRCapture.Builder(this).getTextFromUri(pickedImage);
//You can also use getTextFromBitmap(Bitmap bitmap) or getTextFromImage(String imagePath) buplic APIs from OCRLibrary library.
Il existe une option différente. Vous pouvez télécharger votre image sur le serveur, l'OCR à partir du serveur, puis obtenir le résultat.