بنقرة واحدة
legal-ocr
本技能应在用户需要 OCR、扫描识别、图片文字识别、文档识别,或将 PDF、图片、Office 文档、URL 转换为 Markdown 时使用。检测到法律材料时可进行保守的法律术语与文书结构优化。不要用于法律事实判断、补写缺失内容、语义改写、印章深度识别或图表实体分析。
القائمة
本技能应在用户需要 OCR、扫描识别、图片文字识别、文档识别,或将 PDF、图片、Office 文档、URL 转换为 Markdown 时使用。检测到法律材料时可进行保守的法律术语与文书结构优化。不要用于法律事实判断、补写缺失内容、语义改写、印章深度识别或图表实体分析。
استنادا إلى تصنيف SOC المهني
基于现有文章、专栏、课程讲稿、逐字稿、访谈、课件、会议纪要、案例材料、PDF 文本、Word 文档和笔记等内容资产,判断它们最适合转化为书、小册子、课程、系列文章、实务手册或知识库,并输出精简策划意见;用户提到“把现有内容整理成书”“判断素材适合做书还是课程”“把文章/直播稿/课程稿/笔记重组成知识产品”等场景时,应使用本技能。
使用本地 FunASR 服务将音频或视频文件转录为带时间戳的 Markdown 文件,支持 mp4、mov、mp3、wav、m4a 等常见格式。本技能应在用户需要语音转文字、会议记录、视频字幕、播客转录时使用。
Git 工作流安全助手。本技能应在需要执行分支管理、Monorepo 安全合并、PR 创建/审查/合并、冲突处理、cherry-pick、安全回退,以及 stale/已合并分支审计与清理(branch cleanup,含 squash/rebase merge 校验)时使用。不要用于:批量生成提交信息、项目任务分配、长期任务状态管理或本地多 Agent 会话编排。
Skill 质量验收与格式审查工具,也可称 Skilllint。本技能应在用户需要审查 Claude Code Skill 的目录结构、Frontmatter、引用一致性、发布版本、业务流深度、可评估性和安全风险时使用。不要用于:创建新技能、代码审查、应用功能测试、通用编程任务。
转录稿纠错与轻度优化。本技能应在用户需要按用户词典纠正 ASR 转录稿同音字与英文专有名称漂移时使用。不要用于:重写为课程章节、报告、总结,或完全空白的素材创作。
元典法条与案例检索。本技能应在需要查询中国法律法规条文、检索相关案例、为法律分析提供数据支撑时使用。
| name | legal-ocr |
| description | 本技能应在用户需要 OCR、扫描识别、图片文字识别、文档识别,或将 PDF、图片、Office 文档、URL 转换为 Markdown 时使用。检测到法律材料时可进行保守的法律术语与文书结构优化。不要用于法律事实判断、补写缺失内容、语义改写、印章深度识别或图表实体分析。 |
| version | 1.4.3 |
| license | MIT |
| author | 杨卫薪律师(微信ywxlaw) |
| homepage | https://github.com/cat-xierluo/legal-skills |
本技能用于 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。