微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用pymupdf从较大pdf中的选定页面中提取文本?

如何解决如何使用pymupdf从较大pdf中的选定页面中提取文本?

我知道有很多库可以从 PDF 中提取文本。具体来说,我在使用 pymupdf 时遇到了一些困难。 来自此处的文档:https://pymupdf.readthedocs.io/en/latest/app4.html#sequencetypes 我希望使用 select() 选择页面间隔,然后使用 getText() 这是我正在使用的文档 linear_regression.pdf

import fitz
s = [1,2]
doc = fitz.open('linear_regression.pdf')
selection = doc.select(s)
text = selection.getText(s)

但我收到此错误

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-c05917f260e7> in <module>()
      6 # print(selection)
      7 # text = doc.get_page_text(3,"text")
----> 8 text = selection.getText(s)
      9 text

AttributeError: 'nonetype' object has no attribute 'getText'

所以我假设 select() 没有被正确使用 非常感谢

解决方法

select 在这里,根据 the documentation,在内部修改 doc 并且不返回任何内容。在 Python 中,如果函数没有显式返回任何内容,它将返回 None,这就是您看到该错误的原因。

但是,Document 提供了一个名为 get_page_textmethod,它允许您从特定页面(0 索引)获取文本。因此,对于您的示例,您可以编写:

import fitz
s = [1,2] # pages 2 and 3
doc = fitz.open('linear_regression.pdf')
text_by_page = [doc.get_page_text(i) for i in s]

现在,您有一个列表,其中列表中的每一项都是来自不同所需页面的文本。将其转换为字符串的简单方法是:

text = ' '.join(text_by_page)

用第一页的最后一个单词和最后一个单词的第一个单词之间的空格将两页连接起来(就好像根本没有分页符一样)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。