PyMuPDF提取纯文本的问题

时间:2018-06-04 14:05:32

标签: python pdf

我想使用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的一位作者那里找到了一个great blog,其中有详细的代码,用于从文件中按照读取顺序提取文本。但每次我使用不同的PDF运行此代码时,我得到KeyError: 'lines'(代码中的第81行)或KeyError: "bbox"(代码中的第60行)。

我无法在这里发布PDF文件,因为它们是保密的,我很欣赏这将是有用的信息。但有没有办法可以做PyMuPDF最简单的任务:从PDF中提取纯文本,无序或其他(我不介意)?< / p>

2 个答案:

答案 0 :(得分:2)

来自回购维护者的消息:

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

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

答案 1 :(得分:0)

根据您的示例使用PyMuPDF提取文本的过程是:

import fitz
ifile = "C:\\user\\docs\\aPDFfile.pdf"
doc = fitz.open(ifile)
page_count = doc.pageCount
page = 0
text = ''
while (page < page_count):
    p = doc.loadPage(page)
    page += 1
    text = text + p.getText()
print(text)

您关注的博客很棒,但是有些过时了,其中的一些方法已经过时了。