4

我正在做一个需要从一些 PDF 文档中获取数据的项目。

目前我正在使用Foxit toolkit(从脚本中调用它)将文档转换为 txt,然后遍历它。我对此很满意,但100$对于这么小的项目来说,这只是我买不起的东西。

  • 我已经测试了所有我能找到的免费转换器(比如xpdf, pdftotext),但他们只是没有削减它,他们以一种我无法使用这些词来定位数据的方式弄乱了格式。

  • 我已经尝试了一些Python模块,pdfminer但它们似乎在Python 3.

  • 在转换为 PDF 之前我无法获取数据,因为我是从电话运营商那里获取的。

我正在寻找一种从 PDF或至少正确遵循换行符的转换器获取数据的方法。

更新: PyPDF2没有从 pdf 文档中获取任何文本。

4

4 回答 4

3

PyPDF2似乎是可用于Python3的最佳版本。它有很好的文档记录,API 易于使用。

它还可以处理加密文件、检索元数据、合并文档等

提取文本的简单用例:

from PyPDF2 import PdfFileReader
with open("test.pdf",'rb') as f:
    if f:
        ipdf = PdfFileReader(f)
        text = [p.extractText() for p in ipdf.pages]
于 2016-08-17T11:40:14.517 回答
1

以下是 pyPDF2 代码的示例:

from PyPDF2 import PdfFileReader

pdfFileObj = open("FileName", "rb")
pdfReader  = PdfFileReader(pdfFileObj,strict = False)
data=[page.extractText() for page in pdfReader.pages]

有关 pyPDF2 的更多信息,请点击此处

于 2016-08-17T11:26:38.447 回答
1

遗憾的是,我不相信有一个很好的免费 python pdf 转换器,但是 pdf2html 虽然它不是一个 python 模块,但它工作得非常好,并且与简单的文本文件相比,它为您提供了更多的结构化数据(html)。从那里你可以使用python工具比如beautiful soup来抓取html文件。

链接 - http://coolwanglu.github.io/pdf2htmlEX/

希望这可以帮助。

于 2016-08-17T11:26:15.997 回答
0

当我想对 PDF 进行深入检查以进行安全分析时,我遇到了同样的问题——我必须编写自己的实用程序来解析低级对象和文字、解包流等,这样我才能获得“原始数据” :

https://github.com/opticaliqlusion/pypdf

它不是一个功能完整的解决方案,但它旨在用于纯 Python 上下文中,您可以在其中定义自己的访问者来迭代 PDF 树中的所有流、文本、id 节点等:

class StreamIterator(PdfTreeVisitor):
    '''For deflating (not crossing) the streams'''
    def visit_stream(self, node):
        print(node.value)
        pass
...
StreamIterator().visit(tree)

无论如何,我不知道这是否是您正在寻找的那种东西,但我在查看可疑电子邮件附件时使用它进行了一些安全分析。

干杯!

于 2016-08-20T17:03:13.093 回答