PPT数字一致性体检
用户上传一份 .pptx,要你检查里面的数字有没有前后矛盾时,按下面的步骤做。本技能只看 PPT 内部是否自洽,不读取、也不需要任何外部数据。
能查什么、不能查什么
能查(读取正文文字、表格、图表里的数据):
1. 同一指标在不同页/不同元素里数值不同(如第2页“2025年营收3,620万元”,第7页写成 3,260万元)
2. 合计/小计不等于分项之和(表格的合计行/列、正文里“……合计X”)
3. 一组占比加起来不等于 100%(饼图、环形图、表格占比列、正文里“A占x%、B占y%……”)
4. 单位混用:同一数在不同处差 10⁴/10⁸ 倍(万元写成亿元);同一列里万/亿混写;同一列里 32% 和 0.28 混写
5. 残留旧年份:今年的汇报里,标题、页脚等处出现去年的年份且没有“同比/上年/较”等对比用语
6. 表格与图表数据不一致:同页或跨页,同一组类别的表格数和图表数据不同
不核对(会在报告里列为“未核对”,请用户人工看):SmartArt、图片(含截图里的表格)、3D 图表、嵌入的 Excel/OLE 对象、瀑布图等新式图表。
不判断:数字本身是否等于原始数据、口径是否合理、计算方法(同比/环比)是否正确。
详细判定规则和容差见 @references/rules.md 。
第 1 步:确认文件
- 找到用户上传的文件路径。只接受 .pptx。
- 如果是 .ppt、.pdf、.key 或带密码的文件:告诉用户“请在 PowerPoint/WPS 里另存为 .pptx(有密码先取消)再发我”,不要自己猜内容。
- 用户如果提到汇报年份(如“这是 2025 年年报”),记下来,第 3 步用
--year传入。
第 2 步:环境自检
本技能的脚本在 scripts/ 目录(与本 SKILL.md 同级)。先确定技能目录的绝对路径,记为 <技能目录>。
python3 "<技能目录>/scripts/env_check.py" "<pptx路径>"
- 输出最后一行是
ENV_CHECK=PASS:进入第 3 步。 - 提示
openpyxl 未安装:不影响体检,只是清单改为 .csv,照常进入第 3 步。不要为此去安装软件包。 python3不存在:再试一次python(必须是 Python 3.8 或更高)。仍不行,转到下面的“备用流程”。- 其他 FAIL(读不到文件、目录不可写):按提示处理;目录不可写时第 3 步用
--out-dir指定一个可写目录(如系统临时目录)。
第 3 步:运行体检
python3 "<技能目录>/scripts/check_deck.py" "<pptx路径>" --out-dir "<输出目录>" --json
<输出目录>:默认用 PPT 所在目录;不可写就用可写的工作目录。- 用户说明了汇报年份时,加
--year 2025(按实际年份)。 - 退出码 2:文件读不了(旧版 .ppt、加密、损坏),把脚本给出的原因原样告诉用户。
- 退出码 1:脚本异常,转到“备用流程”,并在回复里说明这次用的是备用流程。
脚本只在本机读写,不联网,不修改用户的 PPT。生成的文件:
- 数字体检报告_<文件名>.md:完整报告
- 数字体检清单_<文件名>.xlsx:三个工作表(问题清单、未核对元素、数字清单);没有 openpyxl 时是 问题清单_<文件名>.csv 和 数字清单_<文件名>.csv
- 数字体检结果_<文件名>.json:结构化结果,供你读取
第 4 步:向用户汇报
读 JSON(或 md 报告),用中文回复,结构如下:
- 一句话结论:几处错误、几处警告;没有问题就直接说“没有发现数字前后矛盾”。
- 问题表:先列全部“错误”,再列“警告”,每行包含 页码 | 位置 | 数值 | 问题 | 建议。超过 15 条时只列前 15 条,其余说明在清单文件里。
- “提示”类(如四舍五入差异、单位写法不统一)一句话带过,不逐条展开。
- 未核对元素:列出页码和类型,提醒用户人工看一眼。
- 附上报告和清单文件。
- 结尾说明边界:本次只检查 PPT 内部是否自洽,不代表数字与原始数据一致。
要求:
- 以脚本结果为准,不要自己新增或删除问题,也不要改级别。你可以结合上下文给“警告”补一句判断(如“第5页是3月单月、第2页是一季度累计,可能是口径不同”),但要写明这是你的判断。
- 不要修改用户的 PPT。用户要求代为修改时,先确认哪个数才是对的,再按用户指示处理。
- 级别含义:错误 = 数字之间确实矛盾;警告 = 很可能有问题,需要用户确认;提示 = 不影响正确性的写法问题。
用户要拿 PPT 和自己的 Excel 对照时
本技能不读取 Excel,无法判断 PPT 里的数是否等于 Excel 里的源数据。如实告诉用户这一点,并说明可以用清单文件里的“数字清单”工作表(列出了每个数字的页码、位置、指标、期间)与 Excel 人工逐项对照。
备用流程(Python 不可用或脚本出错时)
按 @references/fallback.md 操作:直接解压 .pptx 读取幻灯片和图表的 XML,按 @references/rules.md 的规则人工核对,按 @templates/report.md 的格式输出。备用流程覆盖范围有限,回复开头要写明“本次因运行环境限制使用了备用流程,结果可能不完整”。如果连文件都读不了,直接告诉用户读不了以及原因,不要编造检查结果。