如何从 Android 中的印地语 PDF 文件中提取文本

Posted

技术标签:

【中文标题】如何从 Android 中的印地语 PDF 文件中提取文本【英文标题】:How can a extract text from Hindi PDF file in Android 【发布时间】:2021-01-17 05:55:48 【问题描述】:

我正在尝试阅读印地语 PDF 的内容。我已经使用itext7 库来阅读 PDF 文件。

它适用于英语 PDF 并且也可以获取确切的字符但是当我尝试使用任何印地语(本地)语言 PDF 时,值是不可读的格式。

我获取文本的不可读格式

d d d daaaah h eeh h ee aaaa  

这里是阅读 PDF 页面的示例代码。

val pdfReader = PdfReader("pdfPath")
            PdfDocument(pdfReader).use  doc ->
                pdfContent = PdfTextExtractor.getTextFromPage(doc.getPage(1))
            
            pdfReader.close()

是否需要将语言参数传递给 itext7 库才能获得确切的内容?

【问题讨论】:

不可读的格式到底是什么意思?如果提取的字符完全错误,甚至可能不是来自印地语,则 pdf 本身可能包含不完整或不正确的文本提取信息。如果只是稍微偏离,可能是 itext 的问题。 请分享带有印地语内容的 PDF。 @AmedeeVanGasse PDF 链接:hindutemplealbany.org/wp-content/uploads/2016/08/… @mkl,用我得到的响应格式更新了问题 【参考方案1】:

示例 PDF 中印地语字形的字体对象明确声明这些字形对应于用于文本提取的拉丁 Unicode 字符:

因此,文本提取器为这些印地语字形提取拉丁 Unicode 字符是完全正确的。

即使查看嵌入式字体程序(超出常规文本提取)并不能改善这种情况,嵌入式字体程序也映射到拉丁 Unicode 字符,只是不同的字符:

因此,对于这样的 PDF,您应该尝试 OCR 而不是 文本提取

【讨论】:

感谢@mkl 提供的详细信息,我什至在 Doc 文件中也有文本。您能推荐任何工具,通过它我可以将此文档转换为可以使用 iText7 库提取的 PDF 吗? 我没有 ocr 软件的实际操作经验。但由于您已经在使用 itext 7,您可能对 pdfOCR 感兴趣,这是一个 itext 7 插件。除此之外Tesseract是一个经常被提及的ocr软件。

以上是关于如何从 Android 中的印地语 PDF 文件中提取文本的主要内容,如果未能解决你的问题,请参考以下文章

导出为 pdf 时如何正确呈现印地语?

如何从我的 Android 应用程序中的所有目录中获取所有 pdf 文件

无法在 mysql 数据库表中显示从 android 应用程序插入的印地语值

Android:如何在 android 中从服务器打开 pdf 文件 [关闭]

从url下载pdf,在flutter中保存到android中的手机本地存储

Android:将英文数字字符串显示为印地语或任何语言数字字符串