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

使用循环能否实现PyMuPDF遍历列表批量高亮PDF多个目标文本?

解答

for循环完全是该需求的可行解决方案,且是实现成本最低的方案,不需要掌握复杂Python语法就能落地。

核心修改逻辑非常简单:

  • 把原本存储单个待高亮文本的变量,替换为存储所有目标文本的列表
  • 遍历列表中的每一个文本项,逐个执行位置搜索、添加高亮标注的操作
  • 注意文件保存操作必须放在所有循环执行完成之后,不要放到循环内部,否则会出现只有最后一个搜索词被高亮的问题
  • 若某个搜索词在页面中不存在,search_for会返回空列表,直接传入高亮方法不会触发报错,不需要额外写异常判断逻辑

适配多搜索词的修改后代码如下:

import fitz

# 打开待标注的PDF文档
doc = fitz.open("test3.pdf")

# 存储所有需要高亮的文本,可自由增删列表元素
search_texts = [
    "lidiar con estas problemáticas",
    "这里替换为你需要高亮的第二个文本",
    "这里替换为你需要高亮的第三个文本"
]

# 指定操作页面,原示例取文档第一页
page = doc[0]

# 遍历所有待搜索文本,逐个添加高亮
for text in search_texts:
    quads = page.search_for(text, quads=True)
    page.add_highlight_annot(quads)

# 所有标注完成后统一保存新文件
doc.save("test3_anotado.pdf")

如果你的使用场景是整本书全页面批量高亮,只需要额外加一层页面遍历逻辑即可,参考代码:

import fitz

doc = fitz.open("test3.pdf")
search_texts = ["待高亮文本1", "待高亮文本2", "待高亮文本3"]

# 遍历文档中每一页
for page in doc:
    # 每页都遍历所有待搜索文本添加高亮
    for text in search_texts:
        quads = page.search_for(text, quads=True)
        page.add_highlight_annot(quads)

doc.save("test3_anotado.pdf")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:18:22