如何解决PyPDF2:提取目录/大纲及其页码
我正在尝试使用 Python (PyPDF2) 从 PDF 及其页码中提取目录/大纲,我知道 reader.outlines
但它没有返回正确的页码。
PDF 示例:https://www.annualreports.com/HostedData/AnnualReportArchive/l/NASDAQ_LOGM_2018.pdf
reader.outlines
的输出是:
[{'/Title': '2018 Highlights','/Page': IndirectObject(5,0),'/Type': '/Fit'},{'/Title': 'Letter to Stockholders','/Page': IndirectObject(6,...
{'/Title': 'Part I','/Page': IndirectObject(10,[{'/Title': 'Item 1. Business',{'/Title': 'Item 1A. Risk Factors','/Page': IndirectObject(19,'/Type': '/Fit'}
...
例如,PART I 不应该从第 10 页开始,我是否遗漏了什么? 有人有替代品吗?
我尝试过 PyMupdf、Tabula 和 getDestinationPageNumber 方法,但都没有成功。
提前致谢。
解决方法
Martin Thoma's answer 正是我所需要的(PyMuPDF)。 Diblo Dk's answer 也是一个有趣的解决方法 (PyPDF2)。
我引用的正是 Martin Thoma 的代码:
from typing import Dict
import fitz # pip install pymupdf
def get_bookmarks(filepath: str) -> Dict[int,str]:
# WARNING! One page can have multiple bookmarks!
bookmarks = {}
with fitz.open(filepath) as doc:
toc = doc.getToC() # [[lvl,title,page,…],…]
for level,page in toc:
bookmarks[page] = title
return bookmarks
print(get_bookmarks("my.pdf"))
,
查看名为 Tabula 的软件包。使用这个包提取表格真的很容易。该软件包还提供了一些选项,使您能够从扩展到多个页面的表格中提取内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。