Skip to content
Legal
Skill

/pdf-processor

PDF 处理工具,支持扫描件预处理、OCR 双层 PDF、页码添加、PDF 合并、解密、水印去除和压缩。本技能应在用户需要一键处理、优化或整理 PDF 文档时使用。不要用于:纯文本 PDF 内容编辑、PDF 阅读与批注、电子签名、非压缩目的的格式转换。

BOOST
From plugin
legal-skills
73766 skills
Install
$ npx -y skills add cat-xierluo/legal-skills --skill pdf-processor --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/pdf-processor

Context preview

The summary Claude sees to decide when to auto-load this skill.

PDF 处理工具,支持扫描件预处理、OCR 双层 PDF、页码添加、PDF 合并、解密、水印去除和压缩。本技能应在用户需要一键处理、优化或整理 PDF 文档时使用。不要用于:纯文本 PDF 内容编辑、PDF 阅读与批注、电子签名、非压缩目的的格式转换。

SKILL.md

pdf-processor.SKILL.md
name: pdf-processor
homepage: https://github.com/cat-xierluo/legal-skills
author: 杨卫薪律师(微信ywxlaw)
version: "2.13.0"
description: PDF 处理工具,支持扫描件预处理、OCR 双层 PDF、页码添加、PDF 合并、解密、水印去除和压缩。本技能应在用户需要一键处理、优化或整理 PDF 文档时使用。不要用于:纯文本 PDF 内容编辑、PDF 阅读与批注、电子签名、非压缩目的的格式转换。
license: MIT

pdf-processor

定位

本技能是 PDF 处理的统一入口,覆盖扫描件预处理、OCR 双层 PDF 生成、页码添加、PDF 合并、解密、水印去除和压缩。优先保护原始文件,按用户意图选择最短可用流程。

核心职责:

1. 扫描件一键处理:解密 → 页面预处理 → 合并输出 → OCR 双层 PDF。 2. 单项处理:只预处理、只 OCR、只压缩、只解密、只去水印、只合并、只加页码。 3. 用户没有特别说明时,扫描件走默认统一入口;明确提出单项需求时只执行对应工具。

本技能不做纯文本 PDF 内容编辑、PDF 阅读批注、电子签名、非压缩目的的格式转换。

默认策略

  • 不修改原始文件;输出到新文件,重名时加 `_1`、`_2` 等序号。
  • 扫描件、拍照件、证据材料默认继续生成可搜索双层 PDF;PaddleOCR 与本地 `ocrmypdf` 默认直接保留原 PDF,只有 MinerU 或显式图像处理请求才走统一栅格预处理。
  • `auto` 在已配置时默认优先 PaddleOCR API,再尝试 MinerU,最后回退本地引擎(已安装 RapidOCR 时优先 RapidOCR,否则 `ocrmypdf`);明确禁止外传的材料必须使用 `--local-only`。
  • 输入含姓名、案号、医疗、账号等敏感信息且用户尚未明确授权该文件外传时,先说明将上传完整 PDF 并取得一次确认;已授权当前文件后不重复询问,授权不扩展到同目录或其他材料。
  • 电子 PDF 或混合 PDF 默认保留文字、矢量、图片和批注层,跳过栅格化预处理与重压缩;只有用户明确接受层丢失风险时才使用 `--force-raster-preprocess`。
  • “只预处理”“不要 OCR”“只矫正压缩”才使用 `--preprocess-only`。
  • “合并”“加页码”“解密”“去水印”“压缩”只执行对应工具,不自动进入预处理/OCR。
  • 压缩只有用户明确提出时才单独执行;统一入口中的默认压缩是预处理输出策略的一部分。
  • 水印去除只在用户明确要求时执行,不作为默认自动步骤。

常用流程

1. 一键处理扫描 PDF

python3 scripts/pdf-preprocess-ocr.py --input input.pdf --output output.pdf

`auto` 选中已配置的 PaddleOCR 时,默认把原 PDF 直接送给 `PP-OCRv6`,跳过统一栅格化和 OCR 前压缩,以保留扫描分辨率、图像层和 API 坐标空间;实际后端确定为本地 `ocrmypdf` 时同样保留原扫描页,并使用 OCRmyPDF 自带的方向检测、纠偏和清理。MinerU 或显式预处理路径仍以 `medium` 的 200 DPI、JPEG 质量 72、色度子采样 1 为目标,并以 25MP 保护异常大画布。确需裁剪或统一重栅格化时使用 `--enable-crop` 或 `--force-raster-preprocess`。电子/混合 PDF 自动保留原有层。文件大小限制很严时使用:

python3 scripts/pdf-preprocess-ocr.py --input input.pdf --output output.pdf --compress-level high

确需保留超大栅格时可显式调高上限;`--max-preprocess-megapixels 0` 会关闭保护,但可能显著增加内存占用和 OCR 跳页风险。

敏感材料用统一入口但禁止外传:

python3 scripts/pdf-preprocess-ocr.py --input input.pdf --output output.pdf --local-only

页面方向已正确的大批量扫描件可提速:

python3 scripts/pdf-preprocess-ocr.py --input input.pdf --output output.pdf \
  --skip-coarse-rotation --preprocess-jobs 6 --preprocess-chunk-pages 80

2. 只预处理,不做 OCR

python3 scripts/pdf-preprocess-ocr.py --input input.pdf --output output.pdf --preprocess-only

只做页面矫正、不压缩、不 OCR:

python3 scripts/pdf-preprocess-ocr.py --input input.pdf --output output.pdf \
  --preprocess-only --no-compress

3. 只做 OCR 文字层

python3 scripts/pdf-ocr.py --input input.pdf --output output.pdf

默认后端为 `auto`:已配置 PaddleOCR 时先用 `PP-OCRv6` 的行级坐标生成文字层,再按 `OCR_API_ORDER` 尝试 MinerU;外部服务失败或未配置时回退本地引擎——已安装 RapidOCR 时优先本地 RapidOCR(中文行级识别质量好、不出本机),否则回退本地 `ocrmypdf`。该默认路径会上传完整 PDF,不允许外传时使用:

python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf --local-only

`--local-only` 同样走本地优先链(RapidOCR → ocrmypdf)。敏感材料的本地中文 OCR 推荐先安装 RapidOCR:

pip install rapidocr

`--allow-external-upload` 仅为旧命令兼容参数,不再控制后端选择。Paddle 的服务端方向矫正和去畸变默认关闭,避免 OCR 坐标与原图空间不一致。

# 强制本地兜底
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf --backend local_ocrmypdf

# 强制本地 RapidOCR(onnx 本地推理,中文质量好且不出本机)
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf --backend rapidocr_local

# 强制 PaddleOCR API;PP-OCRv6 是双层 PDF 默认模型
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf \
  --backend paddle_api --paddle-model PP-OCRv6

# 干净扫描件/表格可试 PP-StructureV3 的 overall_ocr_res 行级坐标
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf \
  --backend paddle_api --paddle-model PP-StructureV3

# 强制 MinerU API
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf --backend mineru_api

# 显式保存 OCR 可读文本和运行元数据;默认不归档案件材料
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf --archive-results

后端选择、API 配置和协议细节见 `references/ocr-backend-guide.md`、`references/paddleocr-api-guide.md`、`references/mineru-api-guide.md`。

PaddleOCR-VL-1.5/1.6 也可解析,但只提供块级坐标,文字层定位粒度低于 `PP-OCRv5/v6` / `PP-StructureV3`。本技能不接入 Qwen/GLM 等视觉识别链路,也不宣称云端结果含字符级坐标。

PP-OCRv6 文字模型默认开启 `--actualtext`:文字层生成后再调一次 PP-StructureV3 拿版面,融合出自然段并以 `/ActualText` marked-content 写入 PDF。Paddle 文字层还会用本地几何规则识别正文多行段落,把段内字号向下统一到现有最小安全值,同时保留原行坐标和横向框宽,用于改善 PDF Expert 的段落推断。`--no-actualtext` 可关闭;`--layout-dump FILE` 复用已有版面 dump 避免二次 API 调用。阅读器兼容性见下文第 4 节。

4. 自然段文本与 PDF 复制换行

双层 PDF 的文字层按行叠层(保护选区坐标精度),直接从 PDF 复制会按物理行断行。解决方式有两条:

**默认:`/ActualText` + 独立 Markdown。** `--actualtext`(默认开启)把自然段写入 PDF 的 `/ActualText` marked-content,同时保留行级字形坐标。实测各阅读器支持:

| 提取方式 | 从 PDF 复制的段落连续性 | |---|---| | Poppler(`pdftotext -raw`、`pdftotext` 默认) | ✅ 整段连续,无换行 | | PDF Expert | ⚠️ 忽略 `/ActualText`,但会按字号和几何自行推断段落;Paddle 正文段落样式归一可减少换行,不保证完全消除 | | PyMuPDF、pypdf、macOS 预览(PDFKit) | ❌ 仍按物理行断行 |

因此 Poppler 用户能直接从 PDF 拿到段落级文本;PDF Expert 只能做阅读器启发式改善;macOS 预览用户复制仍会断行。跨阅读器需要稳定段落文本时,显式输出独立 Markdown;默认不在案件材料旁生成正文副本:

python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf \
  --backend paddle_api --clean-text-output output-clean.md

独立 Markdown 也可由 `pdf_ocr_paragraphs.py` 生成。个别自然段若跳过被排除的行(如印章碎片),因物理行不连续无法包裹,会降级为行级(文字不丢失,仅该段复制按行断行)。

需要解决复制文本中的段内回车、多余空行和印章文字时,采用两模型分工:`PP-OCRv6` 提供主要行级文字及坐标,`PP-StructureV3` 提供阅读顺序、区域类型和 `seal` 区域。只有 v6 行置信度低于 0.80、Structure 对应行置信度不低于 0.90、双方坐标高度重合且后者至少高 0.10 时,才采用 Structure 的行级文字兜底;始终不读取版面块文字,也不调用大语言模型。

Structure 的块边界只作为候选而非强制段界:融合器先合并同一视觉行的碎片,在 `text` 区域内按行距、缩进和右边界恢复物理换行,再依据句末标点和条款编号跨相邻文本块连接正文;`table` 区域按视觉行保留单元格次序并用 ` | ` 分隔。这样可处理 Structure 高覆盖但正文块过度切碎的页面。

需要独立 Markdown、自定义 dump 审查或复用已有版面 dump 时,用以下四步法(主流程已默认自动完成等价工作):

# 1. 获取文字真值(--dump-and-pdf 同时出 dump 和双层 PDF)
python3 scripts/pdf-ocr.py -i input.pdf -o output.pdf \
  --backend paddle_api --paddle-model PP-OCRv6 \
  --ocr-dump /tmp/text.json --dump-and-pdf

# 2. 获取版面结构
python3 scripts/pdf-ocr.py -i input.pdf -o unused.pdf \
  --backend paddle_api --paddle-model PP-StructureV3 --ocr-dump /tmp/layout.json

# 3. 生成自然段文本,同时输出不含正文的诊断和已过滤文字层 dump
python3 scripts/pdf_ocr_paragraphs.py \
  --text-dump /tmp/text.json --layout-dump /tmp/layout.json \
  --output /tmp/clean.md --diagnostics /tmp/paragraphs.json \
  --filtered-dump /tmp/text-filtered.json

# 4. 用过滤后的行级坐标生成
Read more
Ships withlegal-skills

面向法律人的 Skills 集合。

Get the whole plugin

Other skills on legal-skills.

agent-email
Skill

agent-email

Agent 专用邮箱统一管理:让 Claude Code、Codex 等平台的 Agent 用一套命令收发邮件、整理收件箱、分发任务。支持网易 ClawEmail(claw.163.com)和腾讯 Agent Mail(QQ…

apple-smart-schedule
Skill

apple-smart-schedule

把一句自然语言(机票/高铁/开庭/会议/截止日期/聚会/看病等)或一张票据截图,自动变成苹果「日历」事件 + 一串按事件类型智能提前的「提醒事项」。在 macOS 上运行、经 iCloud 同步到 iPhone/iPad。当用户说「帮我加个日程/提醒」「机票…

case-dashboard
Skill

case-dashboard

律师案件看板。本地零依赖看板服务(案件总览、任务三态看板、期限预警、进度写回)+周研判分析。当用户说"打开看板/dashboard/案件面板/看下案件进度/给我案件周报研判"时使用。案件状态写入与上下文管理用 case-progress(/progress…

case-progress
Skill

case-progress

案件进度与状态台账管理。案件 case.yaml 的唯一写入引擎(新增任务、推进任务、登记期限、更新案件阶段、校验、存量迁移),Agent 会话的进度加载与写回契约,以及案件进度监控对账。当用户或 Agent…

code2patent
Skill

code2patent

从已开发代码项目中提取技术实现证据,围绕候选专利方案生成算法/软件类说明书式技术交底书,并以“权利要求布局卡 →…