Android 如何使用Firebase ML工具包识别PDF文件中的文本?

Android 如何使用Firebase ML工具包识别PDF文件中的文本?,android,firebase,firebase-mlkit,Android,Firebase,Firebase Mlkit,我正在开发一个Android应用程序来检测PDF文件中的文本 首先,我尝试使用谷歌云视觉API。 但是它需要OAuth2.0。 所以我把它改成了Firebase ML套件 但当我运行“fromFilePath”方法时,出现了NPE val file = getPdfFile() Log.d(TAG, "file.length: ${file.length()}") // File size is printed correctly! // NPE occurred while below co

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

首先,我尝试使用谷歌云视觉API。 但是它需要OAuth2.0。 所以我把它改成了Firebase ML套件

但当我运行“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
看起来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)

TIFF不是Android上官方支持的图像格式。 PDF是一种文档格式,而不是图像格式。 有关所有支持的图像格式的列表,请参阅以下链接:

[更新]了解OP的问题所在。Firebase ML套件支持两种类型的文本识别:

  • 城市或风景图片中的文字(如街道照片中的标志)
  • 文档图像中的文本
  • OP想要识别PDF“文档”中的文本,这是不受支持的

    我认为OP误解了ML工具包上下文中文档的含义


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

    TIFF不是Android上官方支持的图像格式。 PDF是一种文档格式,而不是图像格式。 有关所有支持的图像格式的列表,请参阅以下链接:

    [更新]了解OP的问题所在。Firebase ML套件支持两种类型的文本识别:

  • 城市或风景图片中的文字(如街道照片中的标志)
  • 文档图像中的文本
  • OP想要识别PDF“文档”中的文本,这是不受支持的

    我认为OP误解了ML工具包上下文中文档的含义


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

    谢谢您的回答。您确实正确,ML工具包只能处理图像。对“文档”的引用更多的是关于图像中文本的数量。例如,基于云的ML可以从一本书的一页图片中提取文本(例如),而设备上的模型只能提取更多的稀疏文本(如图所示)。感谢您的回答。您确实正确,ML工具包只能处理图像。对“文档”的引用更多的是关于图像中文本的数量。例如,基于云的ML可以从一本书的一页图片中提取文本(例如),而设备上的模型只能提取额外的稀疏文本(如图所示)。
     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)