5

目前,如果我使用 pyPdf 和 extractText() 创建 pdf 页面的页面对象,会发生什么是行连接在一起。例如,如果页面的第 1 行显示“hello”并且第 2 行显示“world”,则 extractText() 返回的结果文本是“helloworld”而不是“hello world”。有谁知道如何解决这个问题,或者有解决方法的建议?我真的需要文本在行之间有空格,因为我正在对这个 pdf 文本进行文本挖掘,而行之间没有空格会杀死它....

4

1 回答 1

2

这是pdf解析的常见问题。您还可以期待在某些情况下必须修复的尾随破折号。我为我的一个项目想出了一个解决方法,我将在这里很快描述:

我使用pdfminer从 PDF 中提取 XML,并在 XML 中找到了连接的单词。我提取了与 HTML 相同的 PDF,HTML 可以通过以下正则表达式的行来描述:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span>

跨度是绝对定位的,并且具有顶部样式,您可以使用它来确定是否发生换行符。如果发生换行并且最后一行的最后一个单词没有尾随破折号,您可以将最后一行的最后一个单词和当前行的第一个单词分开。细节上可能很棘手,但您可能能够修复几乎所有文本解析错误。

此外,您可能希望在文本上运行一个字典库,如附魔,查找错误,如果字典建议的修复类似于错误词但在某处有空格,则错误词可能是解析错误并且可以修复与字典的建议。

解析 PDF 很糟糕,如果您找到更好的来源,请使用它。

于 2009-11-04T11:04:33.867 回答