mcpField
P
paddle-ocr

paddle-ocr

github.com/cat-xierluo文档处理76278 次安装今天更新
代码仓库

关于 paddle-ocr

面向法律材料的 OCR 技能,可将 PDF 和常见图片转换为 Markdown,并在归档目录保存原件、结构化结果及批次数据。适合法律工作者整理扫描卷宗,供复核和后续分析使用。

主要功能

  1. 01PDF 和图片转为 Markdown
  2. 02保留 JSON 与批次结果
  3. 03归档原件和提取图片
  4. 04支持按页处理与自动分批
  5. 05提供版面解析调试入口

适用场景

  1. 01整理扫描卷宗和证据材料
  2. 02将法院通知或票据转成文本
  3. 03为法律分析或 RAG 准备文档

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cat-xierluo/legal-skills --skill paddle-ocr

安装后在 Claude Code 中输入/paddle-ocr确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHANGELOG.md
LICENSE.txt
docs/
ROADMAP_LEGAL_OCR.md
references/
output_schema.md
scripts/
convert.js
convert.py
layout_caller.py
lib.py
optimize_file.py
smoke_test.py
split_pdf.py

详细介绍

来自项目 README

PaddleOCR 法律 PDF 转 Markdown

本技能服务于法律材料 OCR。默认目标不是返回一段临时文本,而是:

  1. 将本地 PDF / 图片转换为可继续编辑和分析的 Markdown。
  2. 在 archive/ 下保留完整归档,便于复核、追溯和二次处理。

何时使用

在以下场景使用本技能:

  • 需要把卷宗、病历、证据材料、法院通知、财报、票据等扫描 PDF 转成 Markdown。
  • 文档包含表格、印章、页眉页脚、多栏排版、公式或复杂版面。
  • 希望保留一个技能内的 archive,沉淀原文件、Markdown、结构化 JSON 和批次结果。
  • 后续还要继续做法律分析、证据摘录、知识入库或 RAG 切片。

在以下场景不要优先使用本技能:

  • 只是快速读取一小段清晰文本,且不需要 Markdown 和归档。
  • 只是截图抄字,速度比结构化质量更重要。
  • 输入不是 PDF / 常见图片格式。

主产出

默认主产出只有两类:

  • Markdown 文件:保存在源文件同目录,默认与原文件同名、扩展名为 .md
  • archive 归档目录:保存在 paddle-ocr/archive/时间戳_文件名/

archive 默认包含:

  • 原始输入文件副本
  • 最终 result.md
  • 最终 result.json
  • 批次级 batches/*.json
  • 提取出的图片资源
  • metadata.json

依赖

系统依赖
依赖安装方式
python3macOS 通常已内置
uvmacOS: brew install uv
Python 包

脚本使用 uv run 执行,依赖写在脚本头部,无需单独维护 requirements.txt。

首次配置

获取 API 信息
  1. 打开 PaddleOCR 官网
  2. 进入对应模型的 API 页面
  3. 在示例代码中复制:
    • API_URL
    • Access Token
配置方式

优先编辑 config/.env:

cd paddle-ocr/config
cp .env.example .env
nano .env

必填项:

  • PADDLEOCR_DOC_PARSING_API_URL
  • PADDLEOCR_ACCESS_TOKEN

常用命令

主工作流:生成 Markdown + archive

在技能根目录运行:

uv run scripts/convert.py "/path/to/legal-document.pdf"

或继续兼容旧入口:

/usr/bin/osascript -l JavaScript scripts/convert.js "/path/to/legal-document.pdf"

可选参数:

uv run scripts/convert.py "/path/to/legal-document.pdf" --pages "1-20"
uv run scripts/convert.py "/path/to/legal-document.pdf" --output "/tmp/output.md"
uv run scripts/convert.py "/path/to/legal-document.pdf" --archive-name "某案卷宗-证据一"
底层调试:只调用解析接口,输出结构化 JSON
uv run scripts/layout_caller.py --file-path "/path/to/legal-document.pdf" --pretty
uv run scripts/layout_caller.py --file-url "https://example.com/document.pdf" --stdout --pretty

当你只想检查原始接口结果,或后续要自己解析表格/坐标信息时,使用这个底层脚本。

自检
uv run scripts/smoke_test.py --skip-api-test
uv run scripts/smoke_test.py
拆分页码
uv run scripts/split_pdf.py input.pdf output.pdf --pages "1-5,8,10-12"

法律 PDF 工作流

按以下顺序工作:

  1. 优先使用 scripts/convert.py。
  2. 如只需部分页码,先传 --pages,避免整卷上传。
  3. 对大体量卷宗,脚本会按配置自动分批请求,再合并为一个 Markdown。
  4. 需要复核时,到 archive/ 查看:
    • output/result.md
    • output/result.json
    • metadata.json
    • batches/*.json

大文件策略

本技能为了法律材料的稳定性,默认采用保守批次策略:

  • PDF 页数超过 PADDLEOCR_BATCH_PAGES 时自动分批
  • 预估 Base64 大小超过 PADDLEOCR_MAX_BASE64_MB 时自动分批

这意味着它可能比官方上限更早拆分,但通常能降低长卷宗、病历合并件和扫描质量不稳定文档的失败率。

输出说明

Markdown
  • 默认保存到源文件同目录
  • 如果传 --output 且是 .md 文件路径,则保存到指定路径
  • 如果 --output 是目录,则在该目录下生成同名 .md
archive

默认归档目录结构:

archive/
└── 20260405_153000_文件名/
    ├── input/
    │   └── 原文件.pdf
    ├── output/
    │   ├── result.md
    │   ├── result.json
    │   └── images/
    ├── batches/
    │   ├── batch_001_1-40.json
    │   └── batch_002_41-67.json
    └── metadata.json

配置项

编辑 config/.env:

选项默认值说明
PADDLEOCR_DOC_PARSING_API_URL空官方要求的完整 layout-parsing 端点
PADDLEOCR_ACCESS_TOKEN空官方 Access Token
PADDLEOCR_DOC_ORIENTATIONfalse是否启用方向分类
PADDLEOCR_DOC_UNWARPfalse是否启用去扭曲
PADDLEOCR_CHART_RECOGfalse是否启用图表识别
PADDLEOCR_DOC_PARSING_TIMEOUT600单次请求超时秒数
PADDLEOCR_BATCH_PAGES40PDF 自动分批页数阈值兼批次大小
PADDLEOCR_MAX_BASE64_MB20触发分批的保守大小阈值
PADDLEOCR_LOG_LEVELmediumlow / medium / high

结果结构

如果需要理解底层 JSON 包装格式,读取:

  • references/output_schema.md

故障排除

问题解决方式
未配置 API先补 config/.env,再执行 uv run scripts/smoke_test.py --skip-api-test
403 / Token 错误更新 PADDLEOCR_ACCESS_TOKEN
请求超时调大 PADDLEOCR_DOC_PARSING_TIMEOUT,或减少页码范围
大 PDF 失败使用 --pages 缩小范围,或让脚本自动分批
Markdown 为空到 archive/ 查看 batches/*.json 和 metadata.json,确认是否原文件质量过差
需要看原始坐标和表格结构使用 scripts/layout_caller.py,并读取 result.result.layoutParsingResults[*].prunedResult

整合路线图

本技能将与 mineru-ocr 整合为统一的 legal-ocr Skill,支持双后端(PaddleOCR + MinerU)、自动路由和法律后处理管线。

完整规划见 docs/ROADMAP_LEGAL_OCR.md。

维护建议

修改本技能后,同步更新:

  • TASKS.md
  • DECISIONS.md
  • CHANGELOG.md

评论

支持 Markdown