Как извлечь текст из изображения 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