gpt4 book ai didi

java - 可以逐行阅读 PDF 吗?

转载 作者:行者123 更新时间:2023-12-01 23:37:16 25 4
gpt4 key购买 nike

Java 有没有办法逐行读取 PDF 并将其转换为文本?我以前使用过 iTextPDFParser,但它是逐页读取而不是逐行读取。这有一些缺点。请告诉我是否有任何方法可以逐行阅读 PDF。

最佳答案

在开始之前,您应该问自己一些更抽象的问题。第一个是“文档中的一行文本是什么?”您会看到,问题在于 PDF 代表了一组非常大的可打印文档(我不会说全部,但它非常接近)。

文本放置在带有多个运算符的页面上:Tj ' " TJ。例如(a string) Tj 在页面上使用当前文本转换(单词/字符间距/缩放、转换矩阵)以当前字体放置“一个字符串”。甚至这也过于简化,因为 8字符串中的 -bit 字符可能会以各种奇怪的方式解释,具体取决于该字体实例使用的编码。

所以让我们这样看 - 如果您将文本按行放置在页面上,生成应用程序很可能使用 ' 运算符移动到下一行并放置一行文本。这太棒了,逐行提取很容易。如果应用程序决定将所有纯文本放在页面上,然后是所有斜体文本,然后是所有粗体文本(我正在看you troff),那么您就无法获取内容您期望的顺序。事实上,应用程序可以按照您想要的任何可能的顺序将文本放置在页面上。

好吧,你说,只需将文本按阅读顺序排序即可。这很容易。您获得每段文本的边界框,并从上到下从左到右进行排序。那么专栏呢?那么内嵌盒呢?怎么样small caps或首字母 drop caps ?下标和上标呢? map 上沿着道路或河流轮廓的文本怎么样?阅读顺序到底是什么?如果文本是汉字怎么办?如果是汉字和英语的混合体怎么办?如果是带有数字的希伯来语怎么办?怎么样ligatures ?单词边界到底在哪里?如果一次将一个单词放置为一个字形怎么办?我如何知道字形何时是单词的一部分并且我应该在其中添加空格?如果页面上没有放置空格怎么办?怎么样discretionary hyphens

这可以让您了解问题的范围以及在解释典型文本提取的输出时需要考虑的事项。大多数 PDF 文本提取工具都会提取文本、撤消编码、对单词进行退火和排序。

我在 Acrobat 1.0 和 2.0 中开发了文本提取工具,我们几乎涵盖了该列表中的所有内容。我们有一位工程师/研究人员全职致力于 2.0 产品中的文本提取代码,他是在 1.0 产品的中期开始工作的 - 花了将近两年的时间才做到这一点。

所以你想要逐行吗?卷起袖子。

关于java - 可以逐行阅读 PDF 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com