python | 使用 pdfplumber 库提取 pdf 中的所有超链接

前言

超链接在 pdf 中被归类为"链接注释"(Link Annotations)。

根据 pdf 规范,超链接是一种特殊的注释类型,其核心结构包含定义可点击区域的矩形、指定跳转目标的 URI 或页面信息,以及可选的视觉样式。这种设计允许 pdf 阅读器识别并响应用户的点击行为。

本文基于 python 开源库 pdfplumber 来提取 pdf 中的超链接。

pdfplumber 库,专门用于解析 pdf 文档,可提取 pdf 的基本信息(作者、创建时间、修改时间...)及表格、文本、图片、超链接等信息,基本可以满足所有较为简单的内容提取。

pdfplumber 可直接使用 pip 命令进行安装,具体命令如下:

python 复制代码
pip install pdfplumber

提取 pdf 中超链接详解

pdfplumber 自带的 .hyperlinks 属性,专门用于获得 pdf 中的所有超链接信息,返回结果为一个字典列表。

如以下代码,使用 pdfplumber 打开 test.pdf 后,采用 .hyperlinks 属性获取每一页的超链接信息。

python 复制代码
import pdfplumber


with pdfplumber.open(r'./data/test.pdf') as pdf_info:
    for page in pdf_info.pages:
        links = page.hyperlinks
    print(links)

上述代码运行后,返回结果为一个字典列表,内容包含页码、URI(目标地址)等超链接信息。如下图:

然后根据需要,提取字典列表中的超链接即可。

完整代码如下,直接复制该代码,修改文件路径为自己的 pdf 完整路径,即可获取到 pdf 所有页中所有的超链接。

python 复制代码
import pdfplumber


def get_links(file_path):
    res_links = []
    with pdfplumber.open(file_path) as pdf_info:
        page_number = 0
        for page in pdf_info.pages:
            page_number += 1
            links = page.hyperlinks
            if links:
                for link in links:
                    res_link = link.get('uri')
                    res_links.append(res_link)
                print(f'第{page_number}页,共有{len(links)}个超链接!')
            else:
                print(f'第{page_number}页,不存在超链接!')
    return res_links


if __name__=="__main__":
    # 文件路径为 pdf 完整路径
    res_links = get_links('data/FCC_all.pdf')
    print(res_links)

以上仅为 pdf 中超链接提取的一种方法,可供参考。

-end-

相关推荐
AI导出鸭5 小时前
Claude的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?专业用户首选“AI导出鸭”
人工智能·pdf·ai导出鸭
qyyyyy5701 天前
外文 PDF 怎么整理成 Markdown?从翻译、内容提取到 RAG 知识库导入
自然语言处理·pdf·erlang·机器翻译·零知识证明
AI导出鸭2 天前
Perplexity的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?AI导出鸭苹果版的技术拆解与批量之道
人工智能·pdf·ai导出鸭
SpaceAIGlobal2 天前
AI PPT生成工具哪些支持PDF文档导入?
人工智能·ai·pdf·powerpoint·办公
Xxtaoaooo2 天前
极空间部署Stirling PDF:搭建自托管PDF工具箱并实现远程访问
pdf·cpolar·stirling pdf
SamChan902 天前
对比 4 种主流 PDF 文档解析方案:PyMuPDF vs pdfplumber vs Apache PDFBox vs 大模型 OCR
python·ai·pdf·ocr·apache·机器翻译
AI刀刀3 天前
Kimi 文档导出格式错乱、排版丢失、导出报错?AI 导出鸭一键智能适配,稳定输出规范 Word、PDF,高效解决各类导出难题
人工智能·pdf·word·ai导出鸭
Ai-_Man3 天前
豆包智能体把对话批量导出为Word或PDF的正确顺序
人工智能·ai·小程序·pdf·word
SamChan903 天前
FastAPI+Celery+Redis搭建企业级PDF翻译异步任务系统
redis·后端·python·pdf·wpf·fastapi
SamChan904 天前
用Playwright端到端测试PDF翻译功能:Web自动化测试实战
前端·python·ai·pdf·wpf