用途:该技能用于创建、编辑、提取、OCR、填写和转换 PDF 文档,并给出不同任务应选用哪种工具的指引。
主要能力与工具选择:从零创建 PDF 用 ReportLab;读取、合并、拆分、旋转、加密用 pypdf;提取文本和表格用 pdfplumber;将页面渲染为图片用 pypdfium2;在 JavaScript 中创建或操作 PDF 用 pdf-lib;命令行合并、拆分、加密、优化、修复用 qpdf;命令行文本提取用 pdftotext;命令行图片提取用 pdfimages;命令行页面渲染用 pdftoppm;扫描件 OCR 用 pytesseract 配合 pdf2image,先转图片再 OCR;填写 PDF 表单用 pypdf 或 pdf-lib。
使用方式:快速检查可用 pypdf 读取页数并提取文本;需要布局感知提取、OCR、表单、渲染或创建时,转到对应工具章节。填写任何 PDF 表单前必须先阅读 form-filling.md。创建 PDF 时应设置元数据,作者默认 "Kortix",标题为描述性名称。含网络来源信息的 PDF 必须使用编号上标脚注标记和每页底部带可点击超链接 URL 的编号来源列表。所有 URL 必须可点击。ReportLab 中不要使用 Unicode 上下标字符,应使用 <sub> 和 <super> 标签。
适用场景与限制:适合文档处理流水线中的各类 PDF 操作。大文件应分页或分块处理,可用 qpdf --split-pages 拆分。加密 PDF 可用 pypdf 检测和解密,或用 qpdf --password=X --decrypt,qpdf --show-encryption 查看保护。损坏 PDF 可用 qpdf --check 诊断,qpdf --replace-input 尝试修复。若 pdfplumber 或 pdftotext 返回空或乱码,说明可能是扫描图片,应回退到 OCR。CJK 文本需注册 Noto Sans CJK 字体,否则会显示为豆腐块。具体实现细节见各库对应文档。