是否有任何python模块转换PDF文件为文本?我尝试了在Activestate中发现的一段代码,它使用pypdf,但生成的文本之间没有空格,没有任何用处。


当前回答

PDFMiner试试。它可以从PDF文件中提取HTML, SGML或“标记PDF”格式的文本。

带标记的PDF格式似乎是最干净的,去掉XML标记只留下纯文本。

Python 3版本如下:

https://github.com/pdfminer/pdfminer.six

其他回答

PDFMiner试试。它可以从PDF文件中提取HTML, SGML或“标记PDF”格式的文本。

带标记的PDF格式似乎是最干净的,去掉XML标记只留下纯文本。

Python 3版本如下:

https://github.com/pdfminer/pdfminer.six

PDFminer给了我也许一行[第1页7…在我尝试使用它的pdf文件的每一页上。

到目前为止,我有最好的答案是pdftopipe,或者是基于Xpdf的c++代码。

请参阅我的问题,了解pdftopipe的输出是什么样的。

今天找到了解决方案。对我来说很好。甚至将PDF页面转换为PNG图像。 http://www.swftools.org/gfx_tutorial.html

我需要在python模块中将特定的PDF转换为纯文本。我使用PDFMiner 20110515,在阅读了他们的pdf2txt.py工具后,我写了这个简单的片段:

from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams

def to_txt(pdf_path):
    input_ = file(pdf_path, 'rb')
    output = StringIO()

    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    process_pdf(manager, converter, input_)

    return output.getvalue() 

我已经使用pdftohtml与-xml参数,读取结果与subprocess.Popen(),这将给你x坐标,y坐标,宽度,高度和字体,在pdf中的每个文本片段。我认为这是'evince'可能也使用的,因为同样的错误消息喷吐出来。

如果您需要处理柱状数据,它会变得稍微复杂一些,因为您必须发明一种适合您的pdf文件的算法。问题在于,生成PDF文件的程序并不一定会以任何逻辑格式布局文本。你可以尝试简单的排序算法,它有时是有效的,但可能会有一些小的“散乱者”和“散乱者”,文本片段没有按照你认为的顺序排列。所以你必须要有创造力。

我花了大约5个小时才为我正在做的pdf文件找到一个。但它现在运行得很好。祝你好运。