В настоящее время я пишу код, который должен иметь возможность просматривать изображение текста, а затем извлекать текст из изображения для устройств на базе Android. Я провел некоторое исследование в Интернете и обнаружил, что Google предоставляет свой собственный API под названием "Mobile Vision" (пакет со многими элементами, то есть распознавание текста, распознавание лиц и т.д.). Тем не менее, в своих демонстрациях они демонстрируют только живое распознавание текста. Мне было интересно, может ли кто-нибудь дать мне пример распознавания текста на неподвижном изображении с помощью Mobile Vision API. Любая помощь приветствуется. Спасибо.
Пример API Google Mobile Vision
Ответ 1
В документации по API Mobile Vision для Google Play описано, как это сделать, вы можете использовать класс TextRecognizer для обнаружения текста в Кадры. После того, как у вас есть образ 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" />