python - 如何访问特定 pdf 页面而不是整个文档的文本

标签 python pdf pymupdf

我正在尝试从一些 pdf 文档中提取一些内容。尽管我在 pdfminer 和 pymupdf 上投入最多,但我一直在尝试各种工具。我从 pdfminer 开始,但在无法解决一个特定问题后开始测试 pymupdf - 也就是说,当我的 pdf 文档有很多页时,我想选择是否处理每个特定页面。但是,我在使用这两个库时遇到的问题是,当我尝试从一个特定页面(或另一个页面)检索文本时,返回的文本是文档中的所有文本。

这里是 document 的链接有 57 页。

这里我将重点介绍使用 pymupdf 的情况

这是一些代码

import fitz
doc = fitz.open('local_path_to_file_from_link_above')
for page in doc:
    text = page.getText().encode("utf8")
    break

我在此中断是为了确认我仅从一页中提取了文本 - 但当我检查文本时,我发现它几乎包含整个文档(所有 57 页)中的所有文本

所以我很好奇,尽管 pdf 文件中出现了页面边界 - 也许它们不存在,所以我使用 pageCount 属性/属性/方法来确定页面是否存在 - 它们似乎是

>>> doc.pageCount
57

当我循环遍历所有页面时,描述输出有点困难,每个页面并不完全具有所有页面的所有内容,但它具有几乎所有内容。我通过使用以下代码确定了这一点

mydict = dict()
for n, page in doc:
    print n, len(p.getText())
    mydict[n] = p.getText()

这是输出 - 为了完整性

0 45491
1 45491
2 45491
3 45491
4 45491
5 45491
6 45491
7 45491
8 45491
9 45492
10 45492
11 45492
12 45492
13 45492
14 45492
15 45492
16 45492
17 45492
18 45492
19 45492
20 45492
21 45492
22 45492
23 45492
24 45492
25 45492
26 45492
27 45492
28 45492
29 88408
30 42990
31 42990
32 42990
33 42990
34 42990
35 42990
36 42990
37 42990
38 42990
39 42990
40 42990
41 42990
42 42990
43 42990
44 42990
45 42990
46 42990
47 42990
48 42990
49 42990
50 42990
51 42990
52 42990
53 42990
54 42990
55 42990
56 42990

因此,第 29 页的内容存在偏差,从页面检索到的文本长度也存在差异,但仔细观察,似乎存在明显的重叠

>>> mydict[0][0:5000] == mydict[1][0:5000]
True

但是

>>> mydict[0][-5000:] == mydict[1][-5000:]
False

总而言之 - 库似乎理解现有的页面边界,但为单个页面检索的文本几乎是文档中的所有文本。由于生成了一个很好的目录 - 我想使用它以及该目录提供的页码来识别我想要进一步解析和提取数据的特定页面。

我发现我在尝试使用 pdfminer 时遇到了类似的问题。我可以检索所有文本,而不仅仅是特定指定页面中的文本。

最佳答案

尝试以下操作从该 pdf 的任何特定页面获取文本。

import fitz

path = r''

doc = fitz.open(path)
page = doc.loadPage(1) #put here the page number
page_to_text = page.getText("text")
print(page_to_text)

关于python - 如何访问特定 pdf 页面而不是整个文档的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676815/

相关文章:

python - 如何使用 Sympy NumPy 打印机?

javascript - 扩展 ng2-pdf-viewer 以支持在 pdf 上绘图的方法?

javascript - 如何读取本地pdf文件并将其作为expressJS应用程序的响应发送?

python - 从列表和数据透视创建数据框,Python 3.6

Python Ctypes : pointer to array of pointers to a structure

python - 为什么在 python 中使用已知数组初始化函数内的参数也会更改数组的值?

pdf - PDF 的 BitsPerComponent 如何转换为图像的每像素位数?

python - 如何使用 pymupdf 减小修改后的 PDF 的大小

python - 如何从azure blob存储编辑pdf而不将其下载到本地? (使用菲茨)