SuperAPI AI 工具集

pdf

办公与效率

查看项目

更新于 10-15 11:10

技能介绍

用途

当格式要求明确为 PDF 时使用本技能,无论该要求是用户显式说明,还是由工作流强烈暗示。以下任务适合触发本技能:

  • 从已有的 .pdf 文件中读取或提取内容
  • 对扫描版 PDF 执行 OCR
  • 填写或分析 PDF 表单
  • 合并、拆分、旋转、加水印、加密或解密 PDF
  • 将 PDF 文件作为最终交付物生成

用户不必字面说出 .pdf。如果任务明显涉及扫描文档、PDF 表单或最终可下载的 PDF 交付,本技能也可能是合适的选择。

不要将其作为一般文档请求的默认选项:

  • 如果用户想要 Word 文档,优先使用 docx
  • 如果用户想要电子表格交付物,优先使用 xlsx
  • 如果用户想要 PowerPoint 交付物,优先使用 pptx(或从本 PDF 生成新 PPTX 时使用外部 ppt-master 工作流——ppt-master 为手动运行,不是技能)
  • 如果用户只要求写作帮助、摘要或结构化内容而没有 PDF 要求,应优先使用更合适的写作或文档工作流

主要能力

本技能覆盖使用 Python 库和命令行工具进行的基本 PDF 处理操作。高级功能、JavaScript 库和详细示例见 REFERENCE.md。如需填写 PDF 表单,请阅读 FORMS.md 并遵循其说明。

Python 库

pypdf - 基本操作

  • 读取 PDF 并统计页数
  • 提取文本
  • 合并 PDF:遍历多个文件的页面并写入一个 PdfWriter
  • 拆分 PDF:每页输出为一个文件
  • 提取元数据(标题、作者、主题、创建者)
  • 旋转页面(如顺时针 90 度)

pdfplumber - 文本与表格提取

  • 按布局提取文本
  • 提取表格
  • 高级表格提取:将表格转为 pandas DataFrame,合并所有表格并导出为 Excel

reportlab - 创建 PDF

  • 基本 PDF 创建(Canvas,添加文本、线条)
  • 创建多页 PDF(SimpleDocTemplate、Paragraph、Spacer、PageBreak)
  • 下标与上标:重要提示——不要在 ReportLab PDF 中使用 Unicode 下标/上标字符(₀₁₂₃₄₅₆₇₈₉、⁰¹²³⁴⁵⁶⁷⁸⁹),内置字体不包含这些字形,会渲染为实心黑框。应改用 ReportLab 的 XML 标记标签:下标用 <sub>,上标用 <super>。对于 canvas 绘制的文本(非 Paragraph 对象),应手动调整字体大小和位置,而不是使用 Unicode 下标/上标。

命令行工具

pdftotext(poppler-utils)

  • 提取文本
  • 保留布局提取文本
  • 提取指定页面(如第 1-5 页)

qpdf

  • 合并 PDF
  • 拆分页面
  • 旋转页面
  • 移除密码(解密)

pdftk(如可用)

  • 合并
  • 拆分(burst)
  • 旋转

使用方式

常见任务

从扫描 PDF 提取文本

需要安装 pytesseract 和 pdf2image。流程:用 pdf2image 将 PDF 转为图像,再对每页图像调用 pytesseract 进行 OCR,拼接文本输出。

添加水印

创建或加载水印页,遍历文档每一页调用 merge_page 合并水印,再写入输出文件。

提取图像

使用 pdfimages(poppler-utils),以 -j 参数将图像提取为 output_prefix-000.jpg、output_prefix-001.jpg 等。

密码保护

使用 pypdf 的 PdfWriter.encrypt 设置用户密码和所有者密码,写入加密后的 PDF。

快速参考

任务 最佳工具 命令/代码
合并 PDF pypdf writer.add_page(page)
拆分 PDF pypdf 每页一个文件
提取文本 pdfplumber page.extract_text()
提取表格 pdfplumber page.extract_tables()
创建 PDF reportlab Canvas 或 Platypus
命令行合并 qpdf qpdf --empty --pages ...
OCR 扫描 PDF pytesseract 先转为图像
填写 PDF 表单 pdf-lib 或 pypdf(见 FORMS.md) 见 FORMS.md

后续步骤

  • 高级 pypdfium2 用法见 REFERENCE.md
  • JavaScript 库(pdf-lib)见 REFERENCE.md
  • 如需填写 PDF 表单,遵循 FORMS.md 中的说明
  • 故障排除指南见 REFERENCE.md

适用场景

  • 需要从 PDF 中提取文本或表格
  • 扫描件需要 OCR
  • 需要填写或分析 PDF 表单
  • 需要对 PDF 进行合并、拆分、旋转、加水印、加密解密
  • 需要生成 PDF 作为最终交付物

限制

  • 不是通用文档请求的默认技能;Word、表格、演示文稿应分别使用 docx、xlsx、pptx
  • 仅要求写作帮助、摘要或结构化内容而无 PDF 要求时,应优先使用写作或文档工作流
  • 部分功能依赖额外安装(如 OCR 需要 pytesseract 和 pdf2image)
  • 关于收费、价格、平台支持范围等信息,资料中暂未提供