web-dev-qa-db-fra.com

Exemple d'API de texte Google Mobile Vision

J'écris actuellement du code qui devrait être en mesure d'afficher une image de texte, puis d'extraire le texte de l'image pour les appareils basés sur Android. J'ai fait des recherches en ligne et j'ai constaté que Google fournit sa propre API appelé "Mobile Vision" (un package avec de nombreux éléments, c'est-à-dire la reconnaissance de texte, la reconnaissance faciale, etc.). Cependant, dans leurs démos, ils ne montrent que la reconnaissance de texte en direct. Je me demandais si quelqu'un pouvait me donner un exemple de reconnaissance de texte sur une image fixe en utilisant l'API Mobile Vision. Toute aide est la bienvenue. Merci.

16
Andrew

La documentation de l'API Mobile Vision des services Google Play décrit comment procéder. Vous pouvez utiliser la classe TextRecognizer pour détecter le texte dans Frames . Une fois que vous avez l'image Bitmap, vous pouvez ensuite la convertir en un cadre et effectuer le traitement dessus. Voir ci-dessous pour un exemple.

// imageBitmap is the Bitmap image you're trying to process for text
if(imageBitmap != null) {

    TextRecognizer textRecognizer = new TextRecognizer.Builder(this).build();

    if(!textRecognizer.isOperational()) {
        // Note: The first time that an app using a Vision API is installed on a
        // device, GMS will download a native libraries to the device in order to do detection.
        // Usually this completes before the app is run for the first time.  But if that
        // download has not yet completed, then the above call will not detect any text,
        // barcodes, or faces.
        // isOperational() can be used to check if the required native libraries are currently
        // available.  The detectors will automatically become operational once the library
        // downloads complete on device.
        Log.w(LOG_TAG, "Detector dependencies are not yet available.");

        // Check for low storage.  If there is low storage, the native library will not be
        // downloaded, so detection will not become operational.
        IntentFilter lowstorageFilter = new IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW);
        boolean hasLowStorage = registerReceiver(null, lowstorageFilter) != null;

        if (hasLowStorage) {
            Toast.makeText(this,"Low Storage", Toast.LENGTH_LONG).show();
            Log.w(LOG_TAG, "Low Storage");
        }
    }


    Frame imageFrame = new Frame.Builder()
            .setBitmap(imageBitmap)
            .build();

    SparseArray<TextBlock> textBlocks = textRecognizer.detect(imageFrame);

    for (int i = 0; i < textBlocks.size(); i++) {
        TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));

        Log.i(LOG_TAG, textBlock.getValue()); 
        // Do something with value
    }
}

Vous devez également vous assurer d'inclure la dépendance de vision mobile dans le build.gradle du module

dependencies {
    compile 'com.google.Android.gms:play-services-vision:9.4.0'
} 

Et incluez également les éléments suivants dans le manifeste de l'application Android Manifest

<meta-data
    Android:name="com.google.Android.gms.vision.DEPENDENCIES"
    Android:value="ocr" />
25
businesscasual