You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python解析PDF文档中的内部GoTo链接?

解析PDF内部GoTo超链接的方法

你之前用的PyPDF2、PdfPlumber之所以没成功,不是因为它们是OCR(其实它们不是),而是这类库对PDF内部链接的解析支持有限,尤其是复杂结构的文档。试试用PyMuPDF(别名fitz),它直接操作PDF的底层结构,能可靠提取GoTo类型的内部链接。

步骤1:用PyMuPDF提取内部链接

下面是直接能用的代码:

import fitz  # 先通过pip安装:pip install pymupdf

def get_internal_goto_links(pdf_path):
    doc = fitz.open(pdf_path)
    goto_links = []
    # 遍历PDF每一页
    for page_idx in range(len(doc)):
        page = doc[page_idx]
        # 获取当前页所有链接
        links = page.get_links()
        for link in links:
            # 筛选GoTo类型的内部跳转链接
            if link["kind"] == fitz.LINK_GOTO:
                # 整理关键信息:源页码、链接文本、目标页码(转成从1开始的计数)
                source_page = page_idx + 1
                link_text = page.get_text(clip=link["from"]).strip()
                target_page = link["page"] + 1
                goto_links.append({
                    "source_page": source_page,
                    "link_text": link_text,
                    "target_page": target_page
                })
    doc.close()
    return goto_links

# 调用示例
pdf_links = get_internal_goto_links("你的文档.pdf")
for link in pdf_links:
    print(f"第{link['source_page']}页的「{link['link_text']}」 → 第{link['target_page']}页")

步骤2:基于链接构建知识图谱

提取到跳转关系后,用networkx可以快速构建有向图(知识图谱的基础),节点代表文档的小节/页码,边代表跳转关系:

import networkx as nx  # 通过pip安装:pip install networkx

def build_knowledge_graph(links):
    graph = nx.DiGraph()
    for link in links:
        # 用页码作为节点标识,也可以换成小节标题(如果能提取到的话)
        source_node = f"页面{link['source_page']}"
        target_node = f"页面{link['target_page']}"
        # 添加带标签的边(标签为链接文本)
        graph.add_edge(source_node, target_node, link_text=link["link_text"])
    return graph

# 调用示例
kg = build_knowledge_graph(pdf_links)
print("知识图谱节点:", list(kg.nodes()))
print("知识图谱跳转关系:", list(kg.edges(data=True)))

如果需要更细粒度的节点(比如按小节标题),可以在提取链接的同时,用PyMuPDF提取页面的标题文本,替换节点标识即可。

内容的提问来源于stack exchange,提问作者Shivam Goswami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:23:17