4

我想使用PyMuPDF阅读 PDF 文件。我只需要纯文本(无需提取颜色、字体、表格等信息)。

我试过以下

import fitz
from fitz import TextPage
ifile = "C:\\user\\docs\\aPDFfile.pdf"
doc = TextPage(ifile)
>>> TypeError: in method 'new_TextPage', argument 1 of type 'struct fz_rect_s *'

哪个不起作用,所以我尝试了

doc = fitz.Document(ifile)
t = TextPage.extractText(doc)
>>> AttributeError: 'Document' object has no attribute '_extractText'

这又不起作用。

然后我从 PyMuPDF 的一位作者那里找到了一篇很棒的博客,其中包含有关按照从文件中读取文本的顺序提取文本的详细代码。但是每次我使用不同的 PDF 运行此代码时,我都会得到KeyError: 'lines'(代码中的第 81 行)或KeyError: "bbox"(代码中的第 60 行)。

我不能在这里发布 PDF,因为它们是机密的,我很感激这里有有用的信息。但是有什么方法可以让我完成 PyMuPDF 要做的最简单的任务:从 PDF 中提取纯文本,无序或其他(我不太介意)?

4

3 回答 3

7

使用 PyMuPDF 按照您的示例提取文本的过程是:

import fitz

filepath = "C:\\user\\docs\\aPDFfile.pdf"

text = ''
with fitz.open(filepath ) as doc:
    for page in doc:
        text+= page.getText()
print(text)

你关注的博客很棒,但是有点过时了,有些方法已经贬值了。

于 2019-01-14T10:17:54.080 回答
5

来自 repo 维护者的消息:

提取纯文本但仍至少进行基本排序的最简单方法是

blocks = page.getText("blocks")
blocks.sort(key=lambda block: block[1])  # sort vertically ascending

for b in blocks:
    print(b[4])  # the text part of each block
于 2020-06-11T13:44:22.183 回答
-2
import fitz

filepath = "C:\\user\\docs\\aPDFfile.pdf"

text = ''
with fitz.open(filepath ) as doc:
    for page in doc:
        text+= page.get_text()

print(text)
于 2021-12-11T03:13:47.443 回答