pptx-wzq 使用手册与技术分析

PPT 多模态教学知识库自动化构建 · 版本 3.1.2 · 使用手册(第一部分)+ 技术分析报告(第二部分)
作者:吴振谦 · wuzhenqian@nbu.edu.cn · QQ:38328063

第一部分 · 使用手册

零、关于本工具与作者

作者:吴振谦 · wuzhenqian@nbu.edu.cn · QQ:38328063

开发原因:高校教师在课程建设与教材建设中,长期面临「课件里的大量图片、公式、文本散落各处,难以整理为规范、可复用、图文并茂的教学资源」的痛点——手工整理一份课程的图文知识库往往要耗费数周。本工具把 PPT 自动转化为图文并茂的多模态教学知识库,让教师从机械整理中解放出来。

版本:当前 3.1.2(历经理念重构:v1.5 六步管线 → v2.0 十六规则落地 → v2.3 整篇分章分节 → v2.6 预览图判定/公式双通道 → v3.0 全链路提速+实时打印 → v3.1 WPS 渲染+按需视觉兜底)。

一、它能做什么(工作流程总览)

输入一份教学 PPT(.pptx),自动完成 8 环节流水线

blocks 图块提取:组合(grpSp)即图块,整体保留原生 XML 段到 sources/;像素图/Visio/矢量按规则拆块;PowerPoint 渲染块图。
text 文本提取:逐页正文(排除页眉页脚),组内文字标「图块内文本」,表格输出 Markdown。
formula 公式提取:非组合公式三路径(OMML/MTEF/OCR)→ LaTeX。
caption 图块解读:按 sources/ 顺序——XML 段→DeepSeek 读 XML(公式转 LaTeX);像素图→qwen 兜底。
related 相关性过滤:剔除 logo/作者/装饰块(审计 json)。
author 教材文案:整篇视为一部教材,DeepSeek 自主分章分节(一节可含多页),每页标注章节;500 字为限(不足扩写、超出直出整理)。
blocks_json 组装:visual_blocks.json(v2.0 schema)+ DeepSeek 语义增强 + 跨模态关系 + binding 导出。
输出:归位 images/ + sources/ + 各 JSON/MD;成功即清理过程文件;中断断点续传。

二、环境要求与下载

系统要求

下载方式

  1. pip 安装发行版pip install pptx-wzq
  2. GitHub 源码https://github.com/wuzhenqian6611/pptx-wzq
  3. 安装后自带文档:python -c "from pptx_wzq import docs; print(docs.__path__)"

三、快速开始

# 一条命令跑完 8 环节(推荐)
pptx-paser "C:\课件\战略管理.pptx" -o "C:\输出\战略管理知识库"

# 只跑图块+文本+公式+解读(跳过相关性与文案,省 Token)
pptx-paser "C:\课件\战略管理.pptx" -o out --skip related,author

# 断点续传(中断后重跑同命令即可自动接续)
pptx-paser "C:\课件\战略管理.pptx" -o out

# 单步命令(叶子工具)
pptx-blocks out --pptx "战略管理.pptx" --texts out\战略管理_texts.md --no-vlm
pptx-author --texts out\战略管理_texts.md --formulas out\战略管理_formulas.md --captions out\战略管理_captions.md -o out\战略管理_textbook.md

四、命令一览(10 个 console_script)

命令功能
pptx-paser总编排器:8 环节一条命令跑完,断点续传/成功清理
pptx-blocks图块提取+解构+渲染;--caption-sources 模式按 sources/ 顺序解读
pptx-text文本提取(in_group/表格 Markdown)
pptx-formula公式提取 → LaTeX
pptx-caption图片/图块解读(模型路由)
pptx-related块相关性过滤 + 审计
pptx-author整篇分章分节教材文案(500 字为限)
pptx-bind图文绑定 JSON
pptx-html / pptx-deck教材 HTML / 教学 Deck 导出

五、输入 PPTX 预处理要求

核心思想:用 PPT 自带工具给解析器打「块边界」标注。组合的数量 = 该页图块数量的上限基准,可据此验收。预处理不是必须的(无组合也能跑),但组合能让图块提取完全确定、可回归。
对象预处理操作解析器行为
逻辑图/示意图Ctrl+G 把底图+文字+箭头合成一个组合整体 = 1 个 group 块,XML 段导出 sources/,渲染图存 images/
嵌套组合有意为之才用;想分开就移出外层并入外层 children,不单独成块
Visio/vsdx不要组合进其他形状;保持独立 OLE独立 visio 块:可剥离 .vsdx / 不可剥离 XML 段
公式行内公式保持独立;想并入图块就移进组合组合内随块转 LaTeX;非组合进 formulas.md
首页/尾页无需操作(默认跳过图块)封面/致谢不产块(文本/公式仍提取)
小像素图<20% 页面默认舍弃;想保留 → 组合进相邻图形组合内豁免;非组合丢弃入审计
表格无需操作Markdown 表格输出(texts.md)
srcRect 裁剪图无需操作(自动一致)元数据/资源/渲染/描述全程按裁剪

六、输出文档说明

<名>_result/
├─ sources/ # 图块源(解读唯一输入):grpSp XML 段 / .vsdx / 像素图原图 / rldimg/ 资源图
├─ images/ # 块渲染 PNG(PowerPoint,仅供人阅览)
├─ <名>_visual_blocks.json # 核心结构化(v2.0)
├─ <名>_visualBlock_text_binding.json # 图文关联(v1.0)
├─ <名>_textbook.md # 教材文案(篇→章→节→页,每页标注章节)
├─ <名>_captions.md # 块解读(绑定 sources/ 文件名+通道)
├─ <名>_texts.md / _text_entries.json / _formulas.md / _related_filter.json
(成功即清理,无过程文件;中断保留断点续传)

七、常见问题

问题说明
没有 Office 会怎样?渲染降级:无块渲染图(images/ 为空);XML/JSON/文案等其余产物正常。
没有 API Key?跳过对应解读/文案步骤;PPTX_PASER_NO_VLM=1 可跳过 VLM 全流程 0 Token。
中途中断?重跑同命令自动接续(state.json + doc_md5 换源检测)。
DeepSeek 对某 XML 段空响应?自动降级 qwen 读渲染图 → 规则模板兜底,保证每块有解读。
如何查安装版本与文档?pptx-paser --versionfrom pptx_wzq import docs

第二部分 · 技术分析报告

1. 系统定位与核心能力

🎯 定位

把任意 PPT 课件解构为「多模态教学知识库」:文本/公式/图块三路抽取 + AI 解读 + 教材级文案,输出 JSON/Markdown/渲染图三件套。

⚙️ 技术栈

OOXML 原生解析 + DeepSeek-V4-Flash(语义/文案)+ qwen3.7-plus(VLM 兜底)+ PowerPoint/WPS COM 渲染(ProgID 自动探测)。

📦 交付物

sources/ + images/ + visual_blocks.json + binding + textbook.md + captions.md。

2. 技术架构

2.1 模块划分

模块职责Token
extract_pptx_images.pyOOXML 原子对象提取(图片/形状/grpSp/表格/公式/图表);XML 段原生提取;srcRect 裁剪;OLE 预览图判定(preview_of);PowerPoint/WPS COM 渲染(ProgID 探测 + DispatchEx)0
extract_texts.py页面文本(in_group 标记)、表格 Markdown0
visual_blocks.py单阶段确定性拆块、块渲染、语义增强、跨模态关系DeepSeek
cli_blocks.pyXML 段导出、rldimg 复制、caption 路由、binding、captions.mdDeepSeek+qwen
cli_author.py整篇分章分节文案、500 字为限、自动分批DeepSeek
cli_related.py相关性过滤 + 审计DeepSeek
cli_paser.py总编排、断点续传、归位、成功清理

2.2 命令体系

pptx-paser / pptx-blocks / pptx-text / pptx-formula / pptx-caption
pptx-related / pptx-author / pptx-bind / pptx-html / pptx-deck

3. 工作流程(8 环节)

① blocks图块+解构 ② text文本 ③ formula公式 ④ caption图块解读 ⑤ related过滤 ⑥ author分章文案 ⑦ blocks_json组装+增强 ⑧ 输出归位+清理 caption 模型路由(规则 11/16) DeepSeek-V4-Flash · 读 sources/ XML 段 grpSp/Visio/SVG-WMF · 公式转 LaTeX qwen3.7-plus · 像素图兜底 仅纯像素图 / DeepSeek 空响应(规则16)
图 1 · 八环节流水线与模型路由

4. 图块识别规则(16 条)

4.1 识别层(1-9)——「组合即图块声明」

#规则实现
1一个 grpSp 组合即是一个图块,组合内一切内容读取为该图块内容kind="group",children 递归收编
2嵌套组合不单独提取嵌套仅作外层 children
3OLE Visio/vsdx 独立成块(除非在组合内)kind="visio" 分支
4非组合像素图单独成块;重叠文本并入raster 独立块 + 重叠文本并入
5组合内公式作块内容;非组合公式独立提取formula 排除 in_group
6首页/尾页图块舍弃skip_cover_pages 整页跳过
7非组合像素图 < 整页 20% 舍弃raster_min_area_ratio=0.20
8表格仍读取为表格(Markdown)表格移交 text 步骤
9grpSp 内 srcRect 须全程一致children 携带 src_rect + 裁剪落盘

4.2 解构/解读层(10-16)

#规则实现
10grpSp 保留整段 XML,页标记,每组合一个独立 .xml 存 sources/sources/slide_{页}_{块id}_grp.xml
11grpSp 块 caption 用 DeepSeek 读 XML;公式转 LaTeX_ds_read_xml + 超长压缩 + 重试
12grpSp 块 PowerPoint 渲染 PNG 存 images/;PNG 不送 qwenCOM ExportAsFixedFormat + PyMuPDF
13Visio 可剥离 → .vsdx 存 sources/ + PNG 存 images/原生剥离 + 渲染
14Visio 不可剥离 → XML 段,同 grpSpsources/slide_{页}_{块id}_ole.xml
15SVG/WMF 同 Visio:尽量 XML 段,不行才 PNGsources/slide_{页}_{块id}_vec.xml
16仅无法 DeepSeek 解读的块才送 qwen模型路由 + 空响应降级链

5. 输出文档体系与内部格式

5.1 结果目录结构

<名>_result/
├─ sources/ # 图块源(解读唯一输入):grpSp XML 段 / .vsdx / 像素图原图 / rldimg/
├─ images/ # 块渲染 PNG(PowerPoint)
├─ <名>_visual_blocks.json # pptx_multimodal_slide_v2.0
├─ <名>_visualBlock_text_binding.json # pptx_visual_block_text_binding_v1.0
├─ <名>_textbook.md # 篇→章→节→页(每页标注章节)
├─ <名>_captions.md # 绑定 sources/ 文件名 + 通道
├─ <名>_texts.md / _text_entries.json / _formulas.md / _related_filter.json
(成功即清理,无过程文件)

5.2 VisualBlock 内部格式

{
  "block_id": "blk_01", "page": 7, "block_type": "战略管理概念框架",
  "bbox": {"x": 142.3, "y": 226.4, "w": 1026.2, "h": 400.2},
  "assets": {"xml_source": "./sources/slide_07_blk_01_grp.xml",
             "raster_png": null,
             "rldimg": ["./sources/rldimg/slide_07_blk_01_image4.png", "…"]},
  "internal_structure": {"nodes": ["…"], "edges": ["…"]},
  "semantic_description": {
    "block_type": "战略管理概念框架",
    "expression_goal": "展示战略管理概念框架的核心逻辑",
    "expression_role": "将抽象概念通过战略哲学/商道/天道/人道具象化…",
    "expression_features": ["概念框架", "层次结构", "关系图"],
    "vlm_caption": "该图块以“战略哲学”为中心…",
    "teaching_use": "教学辅助图示",
    "formula_latex": "", "caption_source": "deepseek_xml"
  },
  "member_obj_ids": ["…"], "vector_resources": []
}

6. 生命周期与可靠性

6.1 成功即清理

  • 成功后中间产物(by_page/atomic/manifest)全部删除,只留交付物。
  • 删除失败打印警告而非静默。

6.2 中断续传

  • 中断保留 work + state.json(步骤状态机)。
  • 再运行跳过已完成、自动接续缺失;doc_md5 换源 → 全量重跑。

7. 版本演进

版本里程碑
1.5.0六步管线重构、三件套交付物、版本统一
2.0.016 条规则落地、组合即块、XML 段导出、DeepSeek caption 路由、PowerPoint 渲染
2.1.0captions 绑定 sources/ + 通道标注;每页扩写 500 字
2.2.0textbook 500 字为限(不足扩写、超出直出整理)
2.3.0Author 整篇自主分章分节,每页标注章节
2.4.0技术分析报告(html/pdf/md)随安装包分发
2.5.0使用手册+技术分析合并文档、README 全量更新
2.5.1渲染静默降级修复(dependencies 补 pymupdf);渲染失败明确警告
2.5.2images/ 不再被 caption/blocks_json 清空(--skip-render);DispatchEx 独立实例
2.6.0OLE 预览图判定(preview_of,vector 块 63→0)+ 组合内公式进 formulas.md
3.0.0语义增强提速(去 thinking + 并发,10 倍)+ 模型调用实时打印([DeepSeek]/[qwen])
3.0.1related 并发提速(162 倍)+ 正文为空保守保留(防误删)
3.0.2渲染 Open 失败根因:pptx 强制 resolve 绝对路径 + 错误完整显示
3.1.0WPS 渲染支持(ProgID 自动探测 PowerPoint/Kwpp + 简化参数回退)
3.1.1qwen 视觉兜底按需触发(仅 caption 未解读块)+ 图路径接通 images/
3.1.2文档体系更新:README/使用手册/技术分析同步 3.0.x~3.1.x 全部变更
附注:本手册与技术分析的所有字段与格式均来自 pptx-wzq 真实产物(visual_blocks.json / binding / textbook.md / captions.md / sources/),非虚构。