wechat-robot-skills/skills/pdf/SKILL.md
2026-09-09 12:30:35 +08:00

56 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: pdf
description: "读取、OCR、创建、设计排版、转换和处理 PDF。支持本地文件与 HTTPS PDF、扫描件和任务图像,以原生文本提取及本地 OCR 为主,模型辅助疑难复核;提供 HTML/CSS 出版排版、文本生成、Office/LaTeX 导出、表单、页面与元数据操作。用户要求阅读或总结 PDF、识别扫描件、制作报告/简历/提案 PDF 或编辑现有 PDF 时使用;Office 主文档编辑由对应 skill 处理。"
---
# PDF 读取、设计与处理
## 运行约定
- 当前机器人不能直接运行 Bash、Python、Node.js 或系统命令。只通过 `execute_skill_script` 调用下列真实存在的固定脚本;参数是文件、文本、页码或受控 JSON,不能传 shell 命令、`-c`、`eval`、代码片段或解释器命令。固定脚本可在内部调用预置引擎,调用者不直接执行底层程序。
- `scripts/_pdf_common.py`、`scripts/_render_html.cjs` 是内部实现,不直接执行;不调用原 pdf-skill 的 shell 安装器、通用 Python/Node CLI,不创建临时可执行脚本。
- 依赖只在基础镜像构建时安装。任务中不运行 pip/npm/apt、不下载浏览器、TeX 包或 OCR 模型;缺失时报告具体依赖和镜像需更新,不能假装处理成功。
- 最终 PDF 写入 `/usr/local/src/pdf/`;缓存、源 HTML/JSON、预览放在 `/usr/local/src/pdf/tmp/<任务名>/`。传绝对路径,保留用户源文件。`--overwrite` 仅用于本任务已生成的旧产物。
- 每次检查返回 JSON;`ok: false` 先处理原因。`requires_visual_review`、`needs_review` 或 warnings 需要实际核验,程序运行成功不代表内容和版式通过。
- HTTPS PDF 用 `download_pdf.py`,其他素材用 `download_attachment.py`。不在回复中复述敏感 URL 查询参数;加密 PDF 请用户提供已解密副本,密码不进入工具参数。
## 按任务读取
| 任务 | 指南 |
| --- | --- |
| 阅读、总结、扫描页、图片文字、图表辅助识别 | [读取与 OCR](references/reading-and-ocr.md) |
| 创建报告、提案、简历、学术或品牌 PDF | [设计规范](references/design.md) + [HTML 创建接口](references/creation.md) |
| Office/LaTeX 导出,PDF 内容重建为 Office | [转换](references/conversion.md) |
| 表单填写、裁剪、嵌入图片、元数据 | [编辑](references/editing.md) |
| 下载、分段提取、表格、简单文本 PDF、合并/拆分/旋转、渲染与清理 | [原有操作接口](references/operations.md) |
| 镜像缺包或能力边界 | [依赖说明](references/dependencies.md) |
## 固定脚本
| 脚本 | 用途 |
| --- | --- |
| `scripts/download_pdf.py` | 安全下载并校验不超过 25 MiB 的 HTTPS PDF |
| `scripts/download_attachment.py` | 下载不超过 25 MiB 的任务附件 |
| `scripts/inspect_pdf.py` | 页数、尺寸、加密、元数据与表单数量 |
| `scripts/extract_text.py` | 多引擎正文提取、逐页质量检测和字符游标 |
| `scripts/ocr_text.py` | 对指定 PDF 页执行离线 OCR,标记局部疑难区域 |
| `scripts/ocr_image.py` | 对单张任务图片执行离线 OCR |
| `scripts/extract_tables.py` | 原生 PDF 表格分页提取 |
| `scripts/render_pdf.py` | 按页输出 PNG,供版式检查或疑难辅助复核 |
| `scripts/create_pdf.py` | 简单文本/Markdown 生成 PDF |
| `scripts/create_design_pdf.py` | 静态 HTML/CSS、图表和公式设计排版 |
| `scripts/convert_to_pdf.py` | Office 文件导出 PDF |
| `scripts/compile_latex.py` | 仅用镜像缓存资源编译 LaTeX |
| `scripts/edit_pdf.py` | 表单、裁剪、元数据和嵌入图片 |
| `scripts/manage_pdf.py` | 合并、拆分、旋转 |
| `scripts/cleanup_pdf_temp.py` | 清理本任务临时目录 |
## 工作原则
1. 阅读先检查 PDF,再提取可靠原生文本;扫描页或图片文字以本地 OCR 为主。只有低置信度、手写、复杂表格/公式、阅读顺序冲突或非文本图形理解需要时,才用大模型复核相关页/区域。不要把整个扫描件直接交给大模型代替 OCR。
2. 创建设计先确认读者、用途、内容与输出限制,按需选择封面、配色和字体层级。用户模板、品牌、大纲、语言与篇幅优先;不强加独立封面,不为凑页数填充或删除内容。
3. 简单文字选 `create_pdf.py`;需要封面、图文、页眉页脚、交叉引用、数学公式时选 `create_design_pdf.py`。通过 `write_file` 写静态内容文件,不写可执行代码。HTML 禁止脚本、事件处理程序和外部资源;公式、流程图由固定引擎本地处理。
4. 编辑现有 PDF 保留内容与结构。裁剪不等于脱敏;表单字段值写入不等于外观正确;PDF 转 Office 应按提取/OCR 后重建来规划,不能承诺无损逆转换。
5. 创建、转换或修改后重新检查页数、文本与关键数字,再渲染全部相关页逐页核验封面、字体、表格、公式、图表、页码、裁切和空白页。要求精确页数时使用 `--expected-pages`。修正后检查最新产物,才交付。
6. 内容引用可核验。用户提供的材料可直接引用;新增时效、专业或不确定事实使用当前可用搜索工具查证,不编造统计、论文或参考文献。图片识别的猜测与原文分开标记。