Python 实现 PDF 文本查找与高亮标注

在文档处理、数据分析、内容审核等场景中,经常需要批量检索 PDF 中的指定文本,并对目标内容进行高亮标注,方便快速识别重点信息。Python 拥有丰富的 PDF 处理库,能够高效实现这类自动化操作。本文将介绍两种实用的 PDF 文本查找高亮方案,分别适配固定文本精准匹配、正则模糊匹配场景,代码简洁、开箱即用。

一、技术选型说明

本次实现依托 Free Spire.PDF for Python 处理库完成文本检索与高亮功能,无需复杂的 PDF 底层解析逻辑,通过封装好的工具类即可快速实现需求。该工具支持页面遍历、精准文本检索、正则匹配、自定义高亮颜色等核心能力,适配绝大多数轻量化 PDF 文本处理场景。

需要注意的是,该工具存在使用限制,仅支持处理10页以内的 PDF 文档,完全满足日常轻量化调试、少量文档处理的使用需求。

使用前需完成环境安装,执行以下 pip 命令安装依赖:

复制代码
pip install spire.pdf.free

二、场景一:精准匹配固定文本并全局高亮

该场景适用于已知明确关键词,需要遍历 PDF 所有页面,批量查找并高亮所有匹配内容的需求,例如检索文档

完整实现代码

复制代码
from spire.pdf import *
from spire.pdf.common import*

# 创建PdfDocument类对象并加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")

# 循环遍历PDF文档中的所有页面
for i in range(pdf.Pages.Count):
    page = pdf.Pages.get_Item(i)

    # 为当前页面创建文本检索对象
    pdfTextFinder = PdfTextFinder(page)

    # 查找页面上所有匹配目标文本的内容
    result = pdfTextFinder.Find("云服务器")

    # 为所有匹配文本添加青色高亮
    for find in result:
        find.HighLight(Color.get_Cyan())

# 保存处理后的PDF文档
pdf.SaveToFile("output/查找并突出显示.pdf")

# 释放文档资源
pdf.Close()

代码核心逻辑拆解

  1. 文档加载 :通过 PdfDocument 初始化文档对象,调用 LoadFromFile 方法读取本地 PDF 文件,完成文档资源加载。
  2. 逐页遍历 :通过页面总数循环遍历文档所有页面,确保不会遗漏任意页面的目标文本。
  3. 文本检索 :每个页面单独初始化 PdfTextFinder 检索器,调用 Find 方法精准匹配指定关键词,返回所有匹配片段的对象集合。
  4. 高亮渲染 :遍历匹配结果,通过 HighLight 方法为文本添加高亮底色,示例中使用青色(Cyan),可自定义颜色参数。
  5. 资源收尾 :保存处理后的文档,并调用 Close 方法释放文件资源,避免内存占用。

三、场景二:正则表达式模糊匹配文本高亮

在很多场景中,目标文本无固定内容,但存在统一格式规则,例如文档中的百分比数据、数字、手机号、日期等。此时可通过开启正则匹配模式,结合正则表达式批量匹配符合规则的文本并高亮,适配更灵活的检索需求。

本次示例以匹配所有数字、百分比数据为例,实现格式文本的批量高亮。

完整实现代码

复制代码
from spire.pdf import *
from spire.pdf.common import*

# 创建PdfDocument类对象并加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")

# 获取PDF第一页,可修改索引指定任意页面
page = pdf.Pages.get_Item(0)

# 初始化页面文本检索对象
pdfTextFinder = PdfTextFinder(page)

# 开启正则表达式匹配模式
pdfTextFinder.Options.Parameter = TextFindParameter.Regex

# 正则规则:匹配整数、小数、百分数(如10、99.9、50%)
pattern = r'\d+(?:\.\d+)?%?'

# 执行正则匹配,获取所有符合规则的文本片段
result = pdfTextFinder.Find(pattern)

# 为匹配内容添加深粉色高亮
for find in result:
    find.HighLight(Color.get_DeepPink())

# 保存处理后的文档
pdf.SaveToFile("output/查找并突出显示.pdf")

# 释放资源
pdf.Close()

核心功能说明

  1. 正则模式开启 :通过修改检索器的 Options.Parameter 参数为 Regex,将默认的精准文本匹配切换为正则模糊匹配。
  2. 正则规则适配 :示例正则\d+(?:\.\d+)?%? 可覆盖纯数字、小数、百分比三类常见数值格式,可根据业务需求替换为手机号、日期、邮箱等正则规则。
  3. 指定页面处理 :示例针对单页(第一页)进行检索,如需全局正则匹配,可参考场景一的循环逻辑遍历所有页面。
  4. 自定义高亮样式 :支持替换不同高亮颜色,工具内置多种颜色常量,可按需切换视觉样式。

四、常见问题与优化建议

1. 文档保存失败

需提前创建代码中指定的 output 文件夹,否则会出现路径不存在报错,可通过 os.makedirs("output", exist_ok=True) 自动创建目录。

2. 超出页面限制报错

当前工具仅支持10页及以内PDF处理,超长文档可提前拆分PDF后再执行检索高亮操作。

3. 高亮精准度优化

默认匹配包含文本片段的所有内容,如需整词匹配、区分大小写,可通过配置检索器的 Options 参数,开启整词匹配、大小写敏感模式。

五、总结

本文通过两个核心场景,实现了 Python 下 PDF 文本的精准检索高亮与正则模糊检索高亮功能。代码轻量化、无冗余逻辑,适合快速集成到自动化文档处理脚本中。对于日常少量、短篇幅 PDF 的重点内容标注、数据提取预处理等场景,该方案简单高效,能够大幅提升人工文档审阅的效率。

相关推荐
Wx-bishekaifayuan9 小时前
springboot社区扶贫救助管理系统13300-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
周杰伦fans9 小时前
构建真正智能的CAD AI绘图代理
开发语言·人工智能·c#
小小张说故事9 小时前
LightGBM 入门指南:更快的梯度提升树,Python 实战
后端·python·机器学习
Ticnix9 小时前
RAG 检索不准,九成的锅不在向量——不同文件,就该有不同的入库方案
后端·python·agent
jerryinwuhan9 小时前
python快速入门第二周
python
IT毕设梦工厂9 小时前
计算机毕业设计选题推荐:基于大数据的供应链数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hive·hadoop·python·数据分析·spark·课程设计
用户2986985301410 小时前
Python 文档格式转换:Word 转 EPUB 实践
后端·python·api
IT毕设梦工厂10 小时前
计算机毕业设计选题推荐:基于大数据的二手车数据可视化分析|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·数据分析数据可视化
Python图像识别10 小时前
17-【2027毕设】YOLO11水稻病害检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·深度学习·yolo·毕业设计·毕设
天天被压力11 小时前
【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #02】涨停跌停与特色股池:5类股池接口一次拉全
java·人工智能·python