Как извлечь текст из изображения Android-приложения
Я работаю над функцией для моего приложения для Android. Я хотел бы прочитать текст с картинки, а затем сохранить этот текст в базе данных. Является ли использование OCR лучшим способом? Есть ли другой способ? Google предлагает в своей документации, что NDK следует использовать только в случае крайней необходимости, но каковы именно недостатки?
Любая помощь будет отличной.
![Image to be OCR'd]()
![enter image description here]()
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
вы можете использовать библиотеку видения google для преобразования изображения в текст, это даст лучший результат из изображения.
Добавьте ниже библиотеку в build gradle:
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
}
Ответ 2
Из этого Простой пример OCRReader в Android, вы можете прочитать текст с изображения, а также можете сканировать текст с помощью камеры, используя очень простой код.
Эта библиотека разработана с использованием Mobile Vision Text API
Для сканирования текста с камеры
OCRCapture.Builder(this)
.setUseFlash(true)
.setAutoFocus(true)
.buildWithRequestCode(CAMERA_SCAN_TEXT);
Для выделения текста из изображения
String text = OCRCapture.Builder(this).getTextFromUri(pickedImage);
//You can also use getTextFromBitmap(Bitmap bitmap) or getTextFromImage(String imagePath) buplic APIs from OCRLibrary library.
Ответ 3
Существует другой вариант. Вы можете загрузить свое изображение на сервер, OCR его с сервера, а затем получить результат.
Ответ 4
Текст из изображения может быть извлечен с помощью комплекта машинного обучения Firebase (ML). Существует две версии API распознавания текста: API на устройстве (бесплатно) и API на облаке.
Чтобы использовать API, сначала создайте BitMap изображения, который должен быть в вертикальном положении. Затем создайте объект FirebaseVisionImage, передав объект растрового изображения.
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
Затем создайте объект FirebaseVisionTextRecognizer.
FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance()
.getCloudTextRecognizer();
Затем передайте объект FirebaseVisionImage методу processImage(), добавьте прослушиватели в результирующую задачу и перехватите извлеченный текст в методе обратного вызова в случае успеха.
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
}
});
Для полного примера, который показывает, как использовать распознаватель текста Firebase ML, см. Https://www.zoftino.com/extracting-text-from-images-android