regex 如何使用python提取PDF文件的正确页码

uinbv5nw  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(136)

代码提取了下面提到的每页的页码,但我需要实际的页码,这是文件的页码,而不是文档的页码。我还附上了屏幕截图,并用红色标记了需要提取的页码。请仔细查看。

这是我试过的代码。

import PyPDF2
import re

obj = PyPDF2.PdfFileReader(r"avnet_202209 (1).pdf")

pgno = obj.getNumPages()

S = "Basis of presentation and new accounting pronouncements"

for i in range(0, pgno):
    PgOb = obj.getPage(i)
    Text = PgOb.extractText()
    if re.search(S,Text):
         print("String Found on Page: " + str(i))

结果是:在页面上找到字符串:7在页面上找到字符串:22
所需输出:在页面上找到字符串:8在页面上找到字符串:23

zte4gxcn

zte4gxcn1#

你可能指三件事。
我假设你安装了pypdf。我成为了pypdf和PyPDF2的维护者。我们只继续开发pypdfpypdf已经拥有了PyPDF2的所有特性。

1.页面索引

这就是我们的出发点。如果你迭代页面,你只需要保存索引:

from pypdf import PdfReader

reader = PdfReader("example.pdf")
for index, page in enumerate(reader.pages)
    ...

例如,当我想打印一些东西时,我需要输入(index+1)。

2.总页数

from pypdf import PdfReader

reader = PdfReader("example.pdf")
print(f"The PDF document has {len(reader.pages)} pages in total")

3.页面标签

例如,this file的前几页标记为iii ...
这些称为“页面标签”。
我最近向add support in pypdf添加了一个PR
我会在星期天(01.01.2023)发布最新版本。然后您可以执行以下操作:

from pypdf import PdfReader

reader = PdfReader("example.pdf")
for index, page in enumerate(reader.pages)
    print(f"index={index}: label={reader.page_labels[index]}")

相关问题