首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从特定的pdf页面而不是整个文档访问文本?

如何从特定的pdf页面而不是整个文档访问文本?
EN

Stack Overflow用户
提问于 2019-06-20 06:43:28
回答 2查看 1.3K关注 0票数 0

我正在试着从一些pdf文档中提取一些东西。虽然我在pdfminer和pymupdf上的投资最多,但我一直在摆弄各种工具。我从pdfminer开始,但在不能解决一个特定的问题后开始测试pymupdf -当我的pdf文档有许多页面时,我想选择是否处理每个特定的页面。但是,我在使用这两个库时遇到的问题是,当我试图从一个特定页面(或另一个页面)检索文本时,返回的文本是文档中的所有文本。

这是一个有57页的document的链接。

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

下面是一些代码

代码语言:javascript
复制
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属性/属性/方法来确定页面是否存在--它们似乎是存在的。

代码语言:javascript
复制
>>> doc.pageCount
57

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

代码语言:javascript
复制
mydict = dict()
for n, page in doc:
    print n, len(p.getText())
    mydict[n] = p.getText()

以下是输出-以确保完整性

代码语言:javascript
复制
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页的内容存在偏差,并且从页面检索的文本的长度存在变化,但查看它,似乎存在明显的重叠

代码语言:javascript
复制
>>> mydict[0][0:5000] == mydict[1][0:5000]
True

代码语言:javascript
复制
>>> mydict[0][-5000:] == mydict[1][-5000:]
False

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

我将观察到,我在尝试使用pdfminer时遇到了类似的问题。我可以检索所有文本,但不只是特定页面中的文本。

EN

回答 2

Stack Overflow用户

发布于 2019-08-16 18:31:29

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

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2019-06-20 07:14:19

您可能需要考虑PyPDF2,它的PdfFileReader类有一个getPage方法

文档:PyPDF2 docs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56676815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档