2016-07-07 7 views
13

В настоящее время я пишу код, который должен иметь возможность просматривать изображение текста, а затем извлекать текст из картинки для устройств на базе Android. Я провел некоторое исследование в Интернете и обнаружил, что Google предоставляет свой собственный API под названием «Mobile Vision» (пакет со многими элементами, то есть распознавание текста, распознавание лиц и т. Д.). Тем не менее, в своих демонстрациях они демонстрируют только живое распознавание текста. Мне было интересно, может ли кто-нибудь дать мне пример распознавания текста на неподвижном изображении с помощью Mobile Vision API. Любая помощь приветствуется. Благодарю.Google API Mobile Vision Text API Пример

ответ

21

В документации по API Mobile Vision в Google Play описано, как это сделать, вы можете использовать класс TextRecognizer для обнаружения текста в Frames. После того, как у вас есть образ Bitmap, вы можете преобразовать его в фрейм и обработать на нем. Ниже приведен пример.

// 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 
    } 
} 

Вы также должны убедиться, что вы включить мобильную зависимость зрения в build.gradle модуля

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

А также включают в себя следующее в приложения Android Manifest

<meta-data 
    android:name="com.google.android.gms.vision.DEPENDENCIES" 
    android:value="ocr" /> 
+0

Привет, К используя вышеприведенный код, он не обнаруживает всех строк. Мне нужно получить все строки из объекта «textBlocks», а также получить все значения из «textBlock». Пожалуйста, помогите мне как можно скорее. Спасибо в Advance ... – Naveen

+0

Чтобы получить строки из текстового блока, просто выполните: 'List textComponents = mText.getComponents(); for (Text currentText: textComponents) {// Делайте свое дело здесь} ' – TinyDancer

+0

@ можем ли мы ограничивать чтение английского текста только с помощью api? –

 Смежные вопросы

  • Нет связанных вопросов^_^