专利五书合一 / 拆分(patent-five-doc-merge)
帮助专利代理师在中国发明专利申请的「五书拆分文档」与「五书合一文档」之间双向转换,并支持模板的自定义与长期记忆。
一、两个核心任务
任务 A:合并(五书拆分 → 五书合一)
输入:5 个独立文档(权利要求书、说明书、说明书附图、说明书摘要、摘要附图)。
输出:1 个五书合一 .docx,套用模板的 5 节页眉结构(页眉标注各部分文字),可直接提交国知局。
任务 B:拆分(五书合一 → 五书拆分)
输入:1 个五书合一 .docx。
输出:5 个独立 .docx(权利要求书、说明书、说明书附图、说明书摘要、摘要附图)。
二、五书合一顺序(国知局标准,固定)
五书合一文档由 5 个分节组成,顺序固定为:
| 节序 | 页眉文字 | 内容 |
|---|---|---|
| 第 1 节 | 说明书摘要 | 摘要正文 |
| 第 2 节 | 摘要附图 | 摘要附图(1 张) |
| 第 3 节 | 权利要求书 | 权利要求 1~N |
| 第 4 节 | 说明书 | 技术领域/背景技术/发明内容/附图说明/具体实施方式 |
| 第 5 节 | 说明书附图 | 说明书附图 图 1~N |
强制:合并时严格按此顺序,不得调整;拆分时按此顺序输出 5 个文件。
三、模板管理规则
- 默认模板:内置
templates/000-WORD转XML编辑器五书模板文件.docx(已打包进 skill,开箱即用)。 - 用户指定新模板:本次任务用新模板,但不改变默认。
- 用户说「以后都用这个模板」:将新模板记忆为默认,写入
config/template.json,后续任务默认采用。 - 模板只借版式(页眉/页脚/页码/分节/字体字号),模板中的任何文字内容一律清空、不保留。
四、文档识别规则(文件名 + 内容双识别)
合并时,对 5 个输入文档自动匹配到对应部分,规则:
- 文件名优先:按文件名关键词匹配(见下表)。命中即用,不重复匹配。
- 内容兜底:文件名不含关键词时,读文档首段/标题,按内容特征识别(如"权利要求书"开头、"本发明公开了"为摘要、"技术领域"为说明书等)。
- 都失败才问用户:仅当文件无法确定归属时,用 AskUserQuestion 让用户指定。
| 部分 | 文件名关键词 | 内容特征 |
|---|---|---|
| 权利要求书 | 权利要求/claim | 开头"1. 一种…"或"权利要求" |
| 说明书 | 说明书/description(不含"附图") | 含"技术领域""背景技术""具体实施方式" |
| 说明书附图 | 说明书附图/附图/drawing/fig | 以图片为主、含"图1/图2" |
| 说明书摘要 | 摘要/abstract(不含"附图") | 单段 ≤300 字、开头"本发明公开了…" |
| 摘要附图 | 摘要附图/摘要图 | 单张图 |
五、关键技术边界(合并/拆分通用,必须遵守)
- 保留模板版式结构:合并时克隆模板的 5 个分节、各节页眉(说明书摘要/摘要附图/权利要求书/说明书/说明书附图)、页脚页码域(PAGE)、分节符类型、页面尺寸与页边距,只替换各节正文。
- 公式原样保留(两类都要):说明书/权利要求书中的公式可能是两种形态——① OMML 公式(
m:oMath/m:oMathPara),深拷贝整段<w:p>保留;② OLE 公式对象(MathTypeEquation.DSMT4/DSMT6或 WPSEquation.KSEE3),即w:object里的OLEObject(引用embeddings/oleObjectN.bin)+ VML 预览图(v:imagedata引用media/imageN.wmf)。两类都必须整体迁移(复制 OLE 二进制 + WMF 预览图 + 重建关系),不得转图片、不得文字描述、不得丢上下角标。 - 矢量图保留:权利要求书/说明书中的 WMF/EMF 公式预览图及附图,原样搬运并重建关系(
r:embed/r:id),不得转 PNG 栅格。 .doc附图提取:说明书附图/摘要附图若是.doc(WPS 老格式,OLE2 复合文档),用scripts/doc_reader.py纯 Python 解析 CFB/OLE 提取嵌入图片(EMF/WMF/PNG/JPG),再以 VML 图片段插入对应节。无需 LibreOffice。- 节标题去重(必做):源文档(说明书摘要/权利要求书/说明书)首段常自带"说明书摘要/权利要求书/说明书"独立标题段。模板页眉已承担标识,正文里这些独立标题段自动删除(规则:段文本去空格后属于 FIVE_ORDER 且 ≤10 字符)。发明名称段(如"子带自适应划分...")保留。
- 说明书附图自动加图号:说明书附图里只有图没"图1/图2..."标注时,合并时按图片顺序自动在每张图前加"图N"居中段落(黑体 11pt)。摘要附图通常不加图号。
- WPS 批注清理(必做):源文档里的 WPS 批注深拷贝时 references 关系会断裂,导致批注只显示空头像。合并时统一清理
w:commentRangeStart/w:commentRangeEnd/w:commentReference。 - 内容不增不减:合并/拆分只做搬运与排版,不改写、不总结、不增删任何文字、公式、图片。
六、执行流程
合并流程(任务 A)
- 识别输入:定位 5 个文档,按第四节规则匹配到 5 个部分;缺哪个就明确告知用户(缺失部分可空着或跳过,但要标注)。
- 选模板:读
config/template.json确认默认模板;用户本次指定则覆盖。 - 执行合并:运行
scripts/merge_five_docs.py,克隆模板 → 清空正文 → 依次填入 5 节内容(保留 OMML/WMF、提取 .doc 图片)。 - 渲染校验:如环境有 LibreOffice 则转 PDF 逐页核对 5 个页眉、页码;无则至少用 python-docx 结构自检(分节数、每节页眉、段落数)。
- 输出:
五书合一-{发明名称}.docx(.docx 格式,禁止 Markdown)。
拆分流程(任务 B)
- 识别分节:运行
scripts/split_five_docs.py,按各节页眉文字识别 5 个分节边界。 - 提取内容:逐节提取段落、表格、OMML 公式、图片,保存为独立
.docx。 - 输出:
权利要求书.docx、说明书.docx、说明书附图.docx、说明书摘要.docx、摘要附图.docx共 5 个文件。
七、输出与文件占用
- 输出一律
.docx(WPS/Word 通用),文件名中文、带发明名称。 - 生成前检查目标文件是否被 WPS/Word 占用;
PermissionError时先写_v{N}.docx临时文件,待用户关闭后替换。 - 拆分/合并结果直接交给用户路径,不写入查新报告或任何给发明人的文档。
八、边界与停止条件
- 禁止编造内容:合并/拆分绝不新增、删除、改写任何文字/公式/图片;缺内容只标注不补写。
- 禁止丢失公式/图片:发现源文档有 OMML/WMF/嵌入图片而输出缺失,必须停止并修复,不得带病交付。
- 模板缺失兜底:若内置模板丢失且用户未提供模板,停止并告知用户提供模板,不擅自生成无页眉的"裸合并"。
.doc提取失败降级:若.doc图片提取失败,明确告知用户该附图未自动提取,请用户手动提供图片,不得跳过附图节导致正文错位。
资源
scripts/merge_five_docs.py— 合并装配器(克隆模板 + 5 节正文填充 + OMML/WMF/.doc 图片处理)。scripts/split_five_docs.py— 拆分器(识别分节 + 提取内容 + 输出 5 个独立 docx)。scripts/doc_reader.py—.doc(OLE2/CFB)图片提取 + docx 段落/公式/图片读取。scripts/inspect_template.py— 扒模板版式(分节/页眉/页脚/页码/页面),对齐格式用。scripts/omml_utils.py— OMML 公式深拷贝辅助。config/template.json— 默认模板记忆配置。references/merge-guide.md— 合并详细规则。references/split-guide.md— 拆分详细规则。references/template-management.md— 模板管理详细规则。