在文档处理、数据分析、内容审核等场景中,经常需要批量检索 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()
代码核心逻辑拆解
- 文档加载 :通过 PdfDocument 初始化文档对象,调用 LoadFromFile 方法读取本地 PDF 文件,完成文档资源加载。
- 逐页遍历 :通过页面总数循环遍历文档所有页面,确保不会遗漏任意页面的目标文本。
- 文本检索 :每个页面单独初始化 PdfTextFinder 检索器,调用 Find 方法精准匹配指定关键词,返回所有匹配片段的对象集合。
- 高亮渲染 :遍历匹配结果,通过 HighLight 方法为文本添加高亮底色,示例中使用青色(Cyan),可自定义颜色参数。
- 资源收尾 :保存处理后的文档,并调用 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()
核心功能说明
- 正则模式开启 :通过修改检索器的 Options.Parameter 参数为 Regex,将默认的精准文本匹配切换为正则模糊匹配。
- 正则规则适配 :示例正则
\d+(?:\.\d+)?%?可覆盖纯数字、小数、百分比三类常见数值格式,可根据业务需求替换为手机号、日期、邮箱等正则规则。 - 指定页面处理 :示例针对单页(第一页)进行检索,如需全局正则匹配,可参考场景一的循环逻辑遍历所有页面。
- 自定义高亮样式 :支持替换不同高亮颜色,工具内置多种颜色常量,可按需切换视觉样式。
四、常见问题与优化建议
1. 文档保存失败
需提前创建代码中指定的 output 文件夹,否则会出现路径不存在报错,可通过 os.makedirs("output", exist_ok=True) 自动创建目录。
2. 超出页面限制报错
当前工具仅支持10页及以内PDF处理,超长文档可提前拆分PDF后再执行检索高亮操作。
3. 高亮精准度优化
默认匹配包含文本片段的所有内容,如需整词匹配、区分大小写,可通过配置检索器的 Options 参数,开启整词匹配、大小写敏感模式。
五、总结
本文通过两个核心场景,实现了 Python 下 PDF 文本的精准检索高亮与正则模糊检索高亮功能。代码轻量化、无冗余逻辑,适合快速集成到自动化文档处理脚本中。对于日常少量、短篇幅 PDF 的重点内容标注、数据提取预处理等场景,该方案简单高效,能够大幅提升人工文档审阅的效率。