PDF Toolkit 是一个用于操作和读取 PDF 文件的技能,底层依赖多个开源 Python 库:pypdf(BSD 许可)负责页面操作,pdfplumber(MIT 许可)负责文本与表格提取,OCRmyPDF(MPL-2.0 许可)负责 OCR。
适用场景
- 从 PDF 中提取文本或表格。
- 将多个 PDF 合并为一个,或拆分 / 提取页面范围。
- 旋转页面,或添加水印 / 图章。
- 对扫描版(仅图片)PDF 进行 OCR,使其可搜索。
如果需要将 PDF 转换为干净的 Markdown 以便分析,建议优先使用 markitdown-converter 技能;本技能用于结构性的 PDF 操作。
安装
pip install pypdf pdfplumber
OCR(可选)还需要系统工具:
pip install ocrmypdf # 另需安装 Tesseract + Ghostscript
使用方式
技能自带一个命令行工具(scripts/pdf_tools.py),覆盖常见操作:
合并
python scripts/pdf_tools.py merge a.pdf b.pdf c.pdf -o combined.pdf
拆分为每页一个文件,或提取指定范围
python scripts/pdf_tools.py split in.pdf -o pages_dir/ python scripts/pdf_tools.py split in.pdf --ranges 1-3 8 10-12 -o excerpt.pdf
旋转(90/180/270)
python scripts/pdf_tools.py rotate in.pdf --deg 90 -o rotated.pdf
提取文本(输出到 stdout 或 -o 指定文件)
python scripts/pdf_tools.py text in.pdf -o out.txt
用单页图章 PDF 为每一页添加水印
python scripts/pdf_tools.py watermark in.pdf --stamp mark.pdf -o stamped.pdf
表格提取
表格提取需直接使用 pdfplumber,它按页暴露表格数据:
import pdfplumber with pdfplumber.open("report.pdf") as pdf: for page in pdf.pages: for table in page.extract_tables(): print(table) # 行列表
OCR 扫描版 PDF
ocrmypdf input_scanned.pdf output_searchable.pdf
该命令会添加可搜索的文本层(需要系统已安装 Tesseract + Ghostscript)。
注意事项与限制
- pypdf 处理结构(页面、旋转、合并、叠加),但不会重新排版或重新渲染内容。
- pdfplumber 读取内嵌的文本层;对于仅图片的 PDF,需先运行 OCR。
- 加密 PDF 可能需要密码(PdfReader(path).decrypt(pw))。
致谢
本技能由 Rinu(l3ad3r1)与 Claude(Anthropic)协作创建。由 pypdf(BSD-3-Clause)、pdfplumber(MIT)和 OCRmyPDF(MPL-2.0)提供支持。底层能力的全部荣誉归这些项目的作者所有。