在Python中从PDF文件提取文本

时间:2019-12-02 20:08:52

标签: python pypdf2

我正在尝试从通常需要在工作中处理的pdf文件中提取文本,以便可以将其自动化。

使用PyPDF2时,例如它适用于我的简历,但不适用于我的工作文档。问题是文本是这样的:“ Helloworldthisisthetext”。然后,我尝试使用.join(“”),但这不起作用。

我了解到这是PyPDF2的一个已知问题-它似乎取决于pdf的构建方式。

有人知道另一种方法如何从其中提取文本,然后我可以将其用于进一步的步骤?

提前谢谢

2 个答案:

答案 0 :(得分:0)

我建议您尝试其他工具-pdfreader。您可以提取纯字符串和“ PDF markdown”(解码的文本字符串+运算符)。 “ PDF markdown”可以解析为常规文本(例如,带有正则表达式)。

下面您将找到步行页面和提取PDF内容以进行进一步分析的代码示例。


from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(your_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

try:
    while True:
        viewer.render()
        pdf_markdown = viewer.canvas.text_content
        result = my_text_parser(pdf_markdown)
        # The one below will probably be the same as PyPDF2 returns        
        plain_text += "".join(viewer.canvas.strings)
        viewer.next()
except PageDoesNotExist:
    pass

...

def my_text_parser(text):
    """ Code your parser here """
    ...

pdf_markdown 变量包含所有文本,包括PDF命令(定位,显示):所有字符串都放在方括号中,后跟 Tj TJ 运算符。 有关PDF文本运算符的更多信息,请参见PDF 1.7 sec. 9.4 Text Objects

例如,您可以使用正则表达式对其进行解析。

答案 1 :(得分:0)

在工作中,我有一个类似的要求,我使用了PyMuPDF。他们还提供了一些食谱,涵盖了文本提取的典型方案。