如何通过命令行提取PDF中带对应页码的高亮文本?
Linux命令行提取带对应页码PDF高亮段落方案
开箱即用工具:pdfannots
- 原生支持命令行调用,无GUI依赖,Debian/Ubuntu系可直接通过源安装:
sudo apt install pdfannots,其他发行版可通过pip安装:pip install pdfannots - 默认输出即包含高亮文本、对应页码、高亮在页面中的位置信息,无需额外配置。基础使用命令:
pdfannots 目标文件.pdf - 支持markdown、json等结构化输出格式,结果可直接重定向保存为文件,例如导出markdown格式结果:
pdfannots -f markdown 目标文件.pdf > 高亮提取结果.md
高兼容性自定义脚本方案
针对特殊编码、带权限限制、格式不规范的PDF,若现成工具提取准确率不足,可基于PyMuPDF实现极简提取脚本,页码匹配准确率接近100%:
- 安装依赖:
pip install pymupdf - 新建脚本文件
extract_pdf_highlights.py,写入以下代码:
import fitz import sys doc = fitz.open(sys.argv[1]) for page_num, page in enumerate(doc, start=1): for annot in page.annots(): # 注释类型编码8对应高亮标注 if annot.type[0] == 8: hl_content = page.get_textbox(annot.rect).strip() print(f"页码:{page_num}\n高亮内容:{hl_content}\n---")
- 命令行调用方式:
python extract_pdf_highlights.py 目标文件.pdf
- 可根据自身需求修改代码调整输出格式、过滤无效高亮、支持批量处理文件,灵活度极高。
你之前测试的两款工具确实存在对应缺陷:pdf-highlights-extractor本身基于PyMuPDF封装,仅做了GUI交互层未开放命令行入口;DyAnnotationExtractor的注释解析逻辑未关联页面对象,因此无法返回页码信息。
内容的提问来源于stack exchange,提问作者Wolfhart
相关产品推荐
相关产品推荐

