web-dev-qa-db-fra.com

Comment extraire du texte de l'image Android app

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.

Image to be OCR'd

enter image description here

enter image description here

enter image description here

13
MrAnderson1992

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
}
13
user7176550

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

1
Arnav Rao

À 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.
1
Gunaseelan

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.