From legal-skills
OCR, scan recognition, image text extraction, and document conversion from PDF/images/Office/URLs to Markdown. Auto-selects PaddleOCR or MinerU backend; applies conservative legal term optimization when legal materials are detected.
How this skill is triggered — by the user, by Claude, or both
Slash command
/legal-skills:legal-ocrThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
本技能用于 OCR、扫描识别、图片文字识别、文档识别,以及把 PDF、图片、Office 文档和 URL 转换为可继续编辑、分析和归档的 Markdown。它首先是通用 OCR 入口;当结果被识别为法律材料时,再自动启用保守型法律后处理。默认使用配置优先的自动路由:
CHANGELOG.mdLICENSE.txtconfig/legal_terms.example.jsonreferences/legal_terms.mdreferences/output_schema.mdscripts/base.pyscripts/basic_postprocess.pyscripts/common.pyscripts/convert.jsscripts/convert.pyscripts/fix_image_paths.pyscripts/legal_terms.pyscripts/linebreaks.pyscripts/mineru_ocr.pyscripts/paddle_ocr.pyscripts/pdf_tools.pyscripts/router.pyscripts/smoke_test.py本技能用于 OCR、扫描识别、图片文字识别、文档识别,以及把 PDF、图片、Office 文档和 URL 转换为可继续编辑、分析和归档的 Markdown。它首先是通用 OCR 入口;当结果被识别为法律材料时,再自动启用保守型法律后处理。默认使用配置优先的自动路由:
旧的 paddle-ocr 和 mineru-ocr 保持可用;本技能是新的统一入口,目标是覆盖两者的常用 OCR/转换场景。
在以下场景使用本技能:
不优先使用本技能的场景:
| 依赖 | 安装方式 |
|---|---|
python3 | macOS 通常已内置 |
uv | macOS: brew install uv |
脚本使用 uv run 执行,依赖写在脚本头部;推荐直接使用 uv run scripts/convert.py,无需单独维护 requirements.txt。
| 包名 | 用途 | 安装命令 |
|---|---|---|
httpx | 调用 PaddleOCR 与 MinerU API | pip install httpx |
pypdfium2 | 读取 PDF 页数与拆分页码范围 | pip install pypdfium2 |
如直接用 python scripts/convert.py 运行且缺少依赖,脚本会给出安装提示。
复制配置模板:
cd legal-ocr/config
cp .env.example .env
nano .env
可选配置:
PADDLEOCR_DOC_PARSING_API_URL 和 PADDLEOCR_ACCESS_TOKEN。MINERU_API_TOKEN;不填时小文件默认走 MinerU 轻量接口。LEGAL_OCR_BACKEND=auto。LEGAL_OCR_LEGAL_TERMS=auto,只在检测到法律材料时启用;如需强制启用可设为 true,如需关闭可设为 false。LEGAL_OCR_LINE_MERGE=true;如需加载自定义法律术语,设置 LEGAL_OCR_CUSTOM_TERMS_PATH。本技能也会尝试读取环境变量和 ~/.mineru/config.yaml 中的 MinerU Token。
PaddleOCR 也兼容 pdf-processor 使用的 PADDLE_OCR_API_ENDPOINT / PADDLE_OCR_API_KEY,并支持 /api/v2/ocr/jobs 异步任务接口。
在技能根目录运行:
uv run scripts/convert.py "/path/to/file.pdf"
uv run scripts/convert.py "/path/to/file.pdf" --pages "1-20"
uv run scripts/convert.py "/path/to/file.pdf" --backend paddle
uv run scripts/convert.py "/path/to/file.pdf" --backend paddle --paddle-model PaddleOCR-VL-1.5
uv run scripts/convert.py "https://example.com/document.pdf" --backend auto
uv run scripts/convert.py "https://example.com/article" --backend mineru
uv run scripts/convert.py "/path/to/judgment.pdf" --legal-terms always
uv run scripts/convert.py checktoken
兼容 JXA 入口:
/usr/bin/osascript -l JavaScript scripts/convert.js "/path/to/file.pdf"
可选参数:
| 参数 | 说明 |
|---|---|
| `--backend auto | paddle |
--output <path> | 输出 Markdown 路径或目录 |
--pages <spec> | 页码范围,如 1-20、1-5,8,10-12 |
--archive-name <name> | 自定义 archive 目录名 |
--no-archive | 不写入 archive |
--no-post-process | 跳过全部后处理 |
--no-legal-terms | 跳过法律术语优化 |
| `--legal-terms auto | always |
--no-line-merge | 跳过 OCR 硬换行整理 |
| `--model pipeline | vlm` |
| `--paddle-model PP-OCRv5 | PaddleOCR-VL-1.5` |
| `--paddle-api-protocol auto | sync |
--paddle-api-extra-json <path> | 合并额外 PaddleOCR optionalPayload |
PaddleOCR 同步接口会校验后端实际返回页数。若返回页数少于本地 PDF 批次页数,转换会失败并提示降低 PADDLEOCR_BATCH_PAGES 或使用 --pages 重跑,避免缺页结果被误当作成功。
auto 会先看用户实际配置了哪些 API;只配置一套时尽量统一走这一套,减少用户判断成本。result.json 和 metadata.json 的 route.attempts 中记录失败类别;存在候选后端时自动继续转换。httpx.RequestError(DNS 解析失败、连接失败、连接/读取超时、远端关闭连接、协议错误)。HTTP 4xx 仍立即抛出(鉴权、配额、参数错误),HTTP 5xx 和 429 在轮询路径下会被同样的重试包装覆盖。LEGAL_OCR_RETRY_ATTEMPTS / LEGAL_OCR_RETRY_BASE_DELAY / LEGAL_OCR_RETRY_MAX_DELAY;可用 PADDLEOCR_RETRY_* 与 MINERU_RETRY_* 覆盖单后端。设置为 1 等于关闭重试。PaddleOCR/MinerU 瞬态错误 … 日志,便于排查真实网络问题。auto 模式:先扫描 OCR 原始文本和文件名,只有命中法院、案号、当事人标签、判决/裁定结构等足够信号时,才运行法律术语优化。result.json 和 metadata.json 的 postprocess.legal_context / legal_context 字段。--legal-terms always 或 LEGAL_OCR_LEGAL_TERMS=true 强制启用。--legal-terms never、--no-legal-terms 或 LEGAL_OCR_LEGAL_TERMS=false。postprocess_log.json,并保留 result_raw.md 供复核。references/legal_terms.md。<文件名>_images/。legal-ocr/archive/时间戳_文件名/。checktoken。--backend、--output、--pages、--archive-name、--model 和 PaddleOCR 相关参数。path / sha256 / size_bytes(本地)或原始 URL(远程)通过 metadata.json 的 source 字段记录,不再单独复制输入副本。archive 内包含:
output/result.mdoutput/result_raw.mdoutput/result.jsonbackend_result/metadata.json(输入文件的 path / sha256 / size_bytes 或远程 URL 通过 source 字段记录;不单独保存输入副本)postprocess_log.json详细结构见 references/output_schema.md。
| 问题 | 解决方式 |
|---|---|
| PaddleOCR 未配置 | 补充 PADDLEOCR_DOC_PARSING_API_URL 与 PADDLEOCR_ACCESS_TOKEN,或显式使用 --backend mineru |
| MinerU 轻量接口超限 | 配置 MINERU_API_TOKEN 后重试 |
| 一个 API 额度用尽 | 同时配置另一套 API,并保持 --backend auto;转换时会自动尝试候选后端 |
| 网页 URL 失败 | 网页 URL 需要 MinerU Token,不支持轻量模式 |
| DOCX/PPTX 走 PaddleOCR 失败 | Office 文档只能走 MinerU,使用 --backend auto 或 --backend mineru |
| PaddleOCR 返回页数不足 | 降低 PADDLEOCR_BATCH_PAGES 或使用 --pages 按较小范围重跑;当前云端接口实测单次稳定返回上限约 100 页 |
| 转换质量需复核 | 查看 archive 中的 result_raw.md、result.json 和 backend_result/ |
修改本技能后,同步更新本目录下的 TASKS.md、DECISIONS.md 和 CHANGELOG.md。
npx claudepluginhub cat-xierluo/legal-skills --plugin transcription-correctorConverts legal PDFs and scanned images to Markdown using PaddleOCR, with archive retention for auditing. Designed for court files, medical records, invoices, tables, formulas, and multi-column layouts.
Routes PDF conversions through analysis to select the best extraction strategy and tools based on document type and output format.
Parses PDF, Office, and image files into structured Markdown using the MinerU API. Supports OCR, formula/table recognition, batch processing, and multi-format export (DOCX/HTML/LaTeX).