学术汇报 PPT(证据锁定型)
触发:用户已有冻结的分析产物(图 / CSV / 证据卡),要求组装成"问题 → 处理 → 证据 → 结论"的汇报 PPT,并交付检查报告。典型场景:给导师的论文进度汇报、答辩预演、组会。
一、用户硬性标准(违反即返工)
- 说人话:禁用 AI/CS 腔——异构、范式、智能表征、特征空间、鲁棒、架构、赋能、多模态。改用领域语言(如光谱领域:背景、重叠峰、峰位、峰强、分辨能力)。
- 页标题 = 问题式或结论式:"能拟合出来,不代表这个点一定可靠" ✅;"峰拟合结果" ❌。
- 每页必须能回答四问:这一页在说什么问题 / 做了什么 / 哪张图证明 / 得到什么 + 为何能进入下一步。
- 科学边界严格:
- 不写因果("因为 A 所以 B")
- 不把低于仪器分辨能力的变化写成"变化"
- 不写未经正式检验的统计推断(如"远超随机水平")
- 不外推到未测样品;单样品结论必须写明"这是代表性样品"
- 交付 = 成品 + 检查报告(页数 / 逐页修改 / 主线检查 / 数字核对 / 边界核对 / 禁用词扫描 / 讲稿检查 / 是否适合直接汇报)。
- 迭代不推倒重做:按任务书逐条改,命名 v2/v3 并覆盖桌面旧成品;旧版留在项目内作基准。
- 汇总表中的每个数字都要能追到证据卡;不确定的(样品条件、外部记录)标注"需与记录核对",不要断言。
二、技术要点(踩过的坑)
python-pptx
title_only版式没有正文占位符:用 spec 驱动脚本写bullets时,文字会被塞进 footer / slide-number 占位符 → 位置错乱、与图重叠(曾一次 26 处重叠)。结论:自建布局——blank版式 + 自己add_textbox/add_table/add_shape逐元素定位。- 图片 contain 缩放:按原始宽高比,先按宽算高,超出框则用高反推宽,再双轴居中。
- 中文字体
微软雅黑;标题 24–26pt、正文 15–17pt、表格 11.5–12.5pt、说明小字 10–12pt。 - 图形:流程用
MSO_SHAPE.CHEVRON,结论块用ROUNDED_RECTANGLE+ 浅底色。
图与数字
- 图/表标题里的数字必须由数据动态计算。硬编码会与实测脱节(实例:图标题里写死的倍数区间和真实结果差了近两个数量级,而且这个错数字已经扩散到 5 个文件)。
- 改一个数字后全库 grep 同步(脚本 / 证据卡 / 总表 / 导读 / 报告)。
- 多面板证据图(6×3 之类)投影不可读:裁出代表行做"主视觉 + 次视觉",别把整张大图塞进一页。裁剪比例参考:总标题 0–3%、列标题 3–5%、每行约 15%(切掉列标题是常见事故,裁完用 vision 复核)。
- 表达性示意图(结构 / 证据链)用 matplotlib + FancyBboxPatch/FancyArrowPatch 画,比堆指标更"去算法感"。
讲稿(Speaker Notes)
- 目标 30–60 秒/页,中文按 ≈250 字/分钟 估算。
- 写法:解释"为什么这一页必须做",不念图;句式"我们一开始发现… / 所以这里先… / 这张图证明… / 因此下一步才能…"。
三、无渲染工具时的验证(本机常无 soffice / pdftoppm)
程序化核对三步:
- 布局:逐形状读
left/top/width/height→ 越界 + 两两重叠(跳过 TXT×TXT;标题框与图轻微相交属正常)。 - 内容:提取全部文本(含表格单元格 + notes)join 成全文 → ① 锁定数字必须出现;② 禁用词/废弃表述必须 0;③ 边界声明必须以否定形式在位。
- 讲稿:逐页字数 → 时长区间。
样例脚本分三类:布局 / 嵌入 / 讲稿检查、锁定数字 / 禁用词 / 边界检查、任务书逐条落实核对。
四、脚本自身的坑
- 对 list 用
in是成员检查不是子串搜索:"关键字" in pages_list恒为 False。必须full = "\n".join(pages)再in。 - 示意图/裁剪图内的数字不在 PPT 文本里 → 检查脚本要区分"正文文本"与"图内文字",否则误报缺失。
五、验收口径
逐条核对任务书 → 跑三类扫描 → 按"听众只听一次能否全程知道为什么做下一步"自检 → 检查报告里给出"是否适合直接汇报"的明确结论,并附"建议在 PowerPoint 里目视确认一次"的提醒(程序化检查看不到视觉观感)。