将中国专利 PDF 或 DOCX/DOC 文件转为结构化 Markdown 文件。支持两类文档:
程序会自动检测文档类型并选择对应的解析流程,无需手动指定。
| 格式 | 说明 |
|---|---|
| ------ | ------ |
.pdf | 专利 PDF 文件(文本型/图像型均可) |
.docx | Word DOCX 文件(直接解析 OOXML) |
.doc | 旧版 Word 文件(自动检测 WPS Office / Microsoft Office / LibreOffice 转换为 .docx) |
> 注意:DOCX/DOC 格式不支持附图提取(无 PDF 页面渲染),其余流程与 PDF 一致。
处理 .doc 文件时,程序自动检测系统中已安装的办公软件并执行格式转换,检测优先级:
| 优先级 | 软件 | 平台 | 转换方式 |
|---|---|---|---|
| -------- | ------ | ------ | ---------- |
| 1 | WPS Office | Windows / macOS / Linux | 命令行 --headless --convert-to docx |
| 2 | Microsoft Office | Windows / macOS | Windows: PowerShell COM 自动化;macOS: AppleScript |
| 3 | LibreOffice | Windows / macOS / Linux | 命令行 --headless --convert-to docx |
若未检测到任何办公软件,程序会提示安装或建议手动将 .doc 另存为 .docx。
| 变量 | 说明 | 示例 |
|---|---|---|
| :--- | :--- | :--- |
| Skill 根目录 | /path/to/.trae/skills/patent-pdf-to-md |
| 输入文件绝对路径 | /path/to/专利文件.pdf |
| 输入文件所在目录 | /path/to |
| 输入文件名(不含扩展名) | 专利文件 |
| 第3.2步获取的真实时间戳 | 20260604_143025 |
| 临时工作目录 | |
| 脚本输出的命名基础字符串 | 202210373749.5-CN114909579A-公开文本 |
| 最终输出目录 | |
> 所有路径必须使用绝对路径,使用 / 作为路径分隔符以确保跨平台兼容性。
检查输入文件扩展名是否为 .pdf、.docx 或 .doc(不区分大小写)。如果不是,告知用户仅支持这三种格式后终止。
执行命令获取真实本地时间戳:
python -c "from datetime import datetime; print(datetime.now().astimezone().strftime('%Y%m%d_%H%M%S'))"
将输出记录为 ,定义 = ,创建工作目录:mkdir "。
运行提取命令,程序会自动检测文档类型并选择对应的解析流程:
cd "<skill_root>/scripts" && python -m patent_extractor.main \
--input "<input_file>" \
--output "<work_dir>" \
[--ocr-engine auto|mineru|tesseract] \
[--verbose] [--dpi 200]
程序内部自动执行以下检测与分流:
PDFReader 或 DocxReader当用户需要同时处理多个文件时,自动调用 SubAgent 模块实现并行处理:
// SubAgent 提示词模板:
你是一个专业的中国专利文档转换助手。请执行以下转换任务:
1. 读取处理流程:读取 "<skill_root>/reference/patent-publication-workflow.md" 或 "<skill_root>/reference/office-action-workflow.md" 的完整内容
2. 按照处理流程的指令执行文档转换
3. 路径变量:skill_root=<skill_root>, input_file=<input_file>, work_dir=<work_dir>
4. ⛔⛔⛔ 禁止向用户提问、禁止要求用户提供任何信息、禁止因任何原因暂停处理流程
系统运行过程中若发生故障,立即加载 fault-handling.md,执行相应的错误恢复流程。
常见故障快速参考:
| 故障 | 处理方式 |
|---|---|
| ------ | ---------- |
| 文本提取完全失败 | 检查文件完整性,尝试切换 OCR 引擎 |
| MinerU 不可用 | 参考 ocr-engine.md 安装或降级到 Tesseract |
| 章节识别错误 | 使用 --ocr-engine mineru 提升 OCR 质量 |
| 附图页数不一致 | 检查 PDF 完整性和附图范围 |
| .doc 转换失败 | 安装办公软件或手动转为 .docx |
| SubAgent 执行超时 | 对超时文件单独重试 |
默认 --ocr-engine auto:pdfplumber → fitz → MinerU flash-extract → Tesseract 逐级降级。
# 强制使用 MinerU(推荐,质量最高)
cd "<skill_root>/scripts" && python -m patent_extractor.main -i "<input_file>" -o "<work_dir>" --ocr-engine mineru
# 强制使用 Tesseract(离线场景)
cd "<skill_root>/scripts" && python -m patent_extractor.main -i "<input_file>" -o "<work_dir>" --ocr-engine tesseract
# 自动降级(默认)
cd "<skill_root>/scripts" && python -m patent_extractor.main -i "<input_file>" -o "<work_dir>" --ocr-engine auto
| 参数 | 默认值 | 说明 |
|---|---|---|
| ------ | -------- | ------ |
--verbose / -v | 关闭 | 输出详细日志 |
--dpi | 200 | 附图渲染 DPI |
--keep-ocr-cache | 关闭 | 保留 OCR 临时缓存 |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
| 结构化 JSON(著录项目、摘要、权利要求书、说明书、附图列表) |
| 结构化 Markdown(含图片引用) |
| 原始提取文本(含页码分隔标记) |
| 说明书附图 PNG 图片(仅 PDF 输入的专利公开/公告文件),按 figPage1.png, figPage2.png 命名 |
| 运行日志 |
> 替换为当前会话所使用的大模型名称。
单文件处理:
专利文档转换完成
输入文件:xxx.pdf
文档类型:实用新型公告(专利公开/公告文件)
输出目录:<final_dir>
【输出文件】
- JSON:<final_dir>/<base_name>.json
- Markdown:<final_dir>/<base_name>.md
- 原始文本:<final_dir>/<base_name>.txt
- 附图:<final_dir>/images/(N 张)
- 日志:<final_dir>/logs/
【提取摘要】
- 专利名称:一种一体式自拍装置
- 申请号:201420522729.0
- 著录项目字段数:N 个
- 权利要求书:N 条
- 说明书子章节:N 个
- 附图验证:记载N页 / 实际N张 → 通过
多文件并行处理:
专利文档批量转换完成(并行处理模式)
处理文件数:N 个
成功:X 个 / 失败:Y 个
使用模型:<model_name>
【处理结果】
- 文件1:实用新型公告 → 成功(附图 N 张)
- 文件2:审查意见通知书 → 成功
- 文件3:失败(原因:...)
失败文件可单独重试。
| 文件 | 用途 | 加载时机 |
|---|---|---|
| ------ | ------ | ---------- |
| reference/patent-publication-workflow.md | 专利公开/公告文件(A/B/U类)完整处理步骤 | 文档类型识别为专利公开/公告文件时 |
| reference/office-action-workflow.md | 审查文件完整处理步骤 | 文档类型识别为审查文件时 |
| reference/fault-handling.md | 详细故障处理对策 | 系统运行过程中发生故障时 |
| reference/patent-type-differences.md | 专利类型差异、INID代码、审查文件对比 | 需要了解类型差异或排查著录项目提取问题时 |
| reference/output-format.md | JSON Schema 及 Markdown 格式定义 | 需要了解输出格式细节或排查生成问题时 |
| reference/ocr-engine.md | MinerU OCR 引擎安装、模式对比、故障排除 | MinerU 不可用或需要排查 OCR 问题时 |
| reference/workspace-spec.md | 工作文件夹命名规范、文件组织架构 | 需要了解工作目录结构或多文件并行处理时 |
patent-pdf-to-md/
├── SKILL.md # 主控制文件(本文档)
├── scripts/
│ └── patent_extractor/
│ ├── main.py # 主入口,自动检测文档类型并编排对应流程
│ ├── pdf_reader.py # PDF 文本提取(pdfplumber → fitz → MinerU → Tesseract)
│ ├── docx_reader.py # DOCX/DOC 文本提取(OOXML 解析)
│ ├── ocr_engine.py # Tesseract OCR 引擎(降级方案)
│ ├── section_parser.py # 专利公开/公告文件:章节识别、著录项目提取
│ ├── office_action_parser.py # 审查文件:文档类型检测、著录项目提取、正文解析
│ ├── image_extractor.py # 说明书附图提取(fitz 渲染 PNG)
│ ├── json_generator.py # 结构化 JSON 生成
│ └── markdown_generator.py # Markdown 生成
└── reference/
├── patent-publication-workflow.md # 专利公开/公告文件处理流程
├── office-action-workflow.md # 审查文件处理流程
├── fault-handling.md # 故障处理对策
├── patent-type-differences.md # 专利类型差异参考
├── output-format.md # 输出格式规范
├── ocr-engine.md # MinerU OCR 引擎详情
└── workspace-spec.md # 工作文件夹规范
共 1 个版本