Как распознать текст из PDF-файла с помощью Firebase ML Kit?

#android #firebase #firebase-mlkit

#Android #firebase #firebase-mlkit

Вопрос:

Я разрабатываю приложение для Android для распознавания текста из файла PDF.

Сначала я попытался использовать Google Cloud Vision API. Но для этого требовался OAuth 2.0. Поэтому я перешел с него на Firebase ML Kit.

Но когда я запускаю метод ‘fromFilePath’, произошел сбой.

 val file = getPdfFile()
Log.d(TAG, "file.length: ${file.length()}") // File size is printed correctly!

// NPE occurred while below code running
val image = FirebaseVisionImage.fromFilePath(context, Uri.fromFile(file))

// Because already NPE occurred, I cannot reach out to below code.
val detector = FirebaseVision.getInstance()
    .cloudDocumentTextRecognizer
  
 Process: com.youknow.redact, PID: 13122
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
  

Похоже, что Firebase ML kit не поддерживает PDF-файл, верно?

Есть ли какое-нибудь хорошее решение?

Невозможно распознать текст из PDF-файла с помощью Firebase ML kit?


Я попытался протестировать другие форматы файлов: JPG, TIFF

Все то же самое, просто изменен входной файл. JPG работает нормально, но у TIFF та же проблема.

  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
    at com.google.android.gms.internal.firebase_ml.zzox.zza(Unknown Source)
    at com.google.firebase.ml.vision.common.FirebaseVisionImage.fromFilePath(Unknown Source)
  

Ответ №1:

TIFF не является официально поддерживаемым форматом изображений на Android. PDF — это формат документа, а не формат изображения. Обратитесь к следующей ссылке для получения списка всех поддерживаемых форматов изображений:https://developer.android.com/guide/topics/media/media-formats#image-formats

[ОБНОВЛЕНИЕ] Теперь понял, в чем проблема OP. Firebase ML Kit поддерживает два типа распознавания текста:

  1. текст на изображении города или пейзажа (например, знаки на фотографии улицы)
  2. текст в изображении документа

Что хочет OP, так это распознать текст в PDF «документе», а это не поддерживается.

Я думаю, OP неправильно понял, что означает документ в контексте ML Kit.

Чтобы распознать текст из файла PDF, вам нужно будет сначала использовать стороннюю библиотеку для преобразования PDF в растровое изображение.

Комментарии:

1. Спасибо за ваш ответ здесь, Алан. Вы действительно правы, что ML Kit может работать только с изображениями. Ссылка на «документ» больше относится к объему текста на изображении. Облачный ML может, например, извлекать текст из изображения страницы книги (например, здесь ), в то время как модель на устройстве может добавлять только более разреженный текст (как показано здесь ).