【问题标题】:How to recognize text from the PDF file using Firebase ML Kit?如何使用 Firebase ML Kit 从 PDF 文件中识别文本?
【发布时间】:2019-03-07 15:24:18
【问题描述】:

我正在开发一个 Android 应用程序来检测 PDF 文件中的文本。

首先,我尝试使用 Google Cloud Vision API。 但它需要 OAuth 2.0。 所以我把它改成了 Firebase ML Kit。

但是当我运行 'fromFilePath' 方法时,发生了 NPE。

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 套件似乎不支持 PDF 文件,对吧?

有什么好的解决办法吗?

是否无法使用 Firebase ML 套件识别 PDF 文件中的文本?


我尝试测试更多文件格式: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)

【问题讨论】:

    标签: android firebase firebase-mlkit


    【解决方案1】:

    TIFF 不是 Android 上官方支持的图像格式。 PDF 是一种文档格式,而不是图像格式。 有关所有支持的图像格式的列表,请参阅以下链接: https://developer.android.com/guide/topics/media/media-formats#image-formats

    [UPDATE] 明白现在OP的问题是什么。 Firebase ML Kit 支持两种类型的文本识别:

    1. 城市或风景图片中的文字(如街道照片中的标志)
    2. 文档图像中的文本

    OP 想要的是识别 PDF“文档”中的文本,这是不支持的。

    我认为 OP 误解了文档在 ML Kit 上下文中的含义。

    要识别 PDF 文件中的文本,您需要先使用 3rd 方库将 PDF 转换为位图。

    【讨论】:

    • 感谢艾伦的回答。您确实是正确的,ML Kit 只能处理图像。对“文档”的引用更多地是关于图像中的文本量。例如,基于云的 ML 可以从书页的图片中提取文本(例如 here),而设备端模型只能增加更稀疏的文本(如图所示 here)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 2019-09-07
    相关资源
    最近更新 更多