PDF - 将单个单词拆分成单独的行 - Python 3

PDF - Split Single Words into Individual Lines - Python 3

我正在尝试将 PDF 中的单词提取到单独的行中,但只能对文本文件执行此操作,如下所示。

而且,规则是我不能将PDF文件转换成TXT再执行这个操作。必须在 PDF 文件上完成。

with open('filename.txt','r') as f:
    for line in f:
        for word in line.split():
           print(word) 

如果filename.txt刚好有"Hello World!",那么这个函数returns:

Hello
World!

我也需要对可搜索的 PDF 文件执行相同的操作。任何帮助将不胜感激。

当我看到filename.txt时,我感到困惑。

由于您正在处理以下 link 的 PDF 可能会有所帮助。看看有帮助

对于 PDF,您应该使用 pdf.miner 或 PyPDF2。

这里有一篇很好的文章可以用来提取文本,然后可以使用Anilkumar的方法逐行提取。

https://medium.com/@rqaiserr/how-to-convert-pdfs-into-searchable-key-words-with-python-85aab86c544f

查看 PyMuPDF。您可以做很多事情,包括使用 page.getText()

从 PDF 逐行获取文本

您可以使用 pdfreader 从 PDF 文档中提取文本(纯文本和包含 PDF 运算符)

这是从所有文档页面中提取上述所有内容的示例代码。

from pdfreader import SimplePDFViewer, PageDoesNotExist

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

plain_text = ""
pdf_markdown = ""
try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        plain_text += "".join(viewer.canvas.strings)
        viewer.next()
except PageDoesNotExist:
    pass

只是想概述一下,PDF 中的文本通常不会以 "words" 的形式出现,它们看起来像是对符合标准的 PDF 查看器在何处以及如何放置字形的命令。这意味着多个命令可能会显示一个单词。在 PDF 1.7 docs sec.9 - Text

中阅读更多相关信息