#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 поддерживает два типа распознавания текста:
- текст на изображении города или пейзажа (например, знаки на фотографии улицы)
- текст в изображении документа
Что хочет OP, так это распознать текст в PDF «документе», а это не поддерживается.
Я думаю, OP неправильно понял, что означает документ в контексте ML Kit.
Чтобы распознать текст из файла PDF, вам нужно будет сначала использовать стороннюю библиотеку для преобразования PDF в растровое изображение.
Комментарии:
1. Спасибо за ваш ответ здесь, Алан. Вы действительно правы, что ML Kit может работать только с изображениями. Ссылка на «документ» больше относится к объему текста на изображении. Облачный ML может, например, извлекать текст из изображения страницы книги (например, здесь ), в то время как модель на устройстве может добавлять только более разреженный текст (как показано здесь ).