PPT审阅后再对账:让接受与拒绝有可核验的文本结果

举报
yd_225778114 发表于 2026/10/18 11:33:33 2026/10/18
【摘要】 用文件SHA256绑定版本,按明确的接受/拒绝决定核对PPTX选定文本。记录19项回归测试、合成PPTX互操作与HTML演示验证,并说明unknown、对象身份及报告隐私边界。

一份PPT完成审阅后,除了保存文件,还可以多做一道核对:已经选择“接受”的文字是否保留新版,已经选择“拒绝”的文字是否恢复旧版?界面上的按钮和最终文件里的内容是两种证据。本文记录一个独立的本地核验器,只检查明确选定的普通文本对象,并把不能确定的情形留为unknown。

从已有问题确定边界

在阅读PPT-diff公开问题列表时,我发现Issue #10、#53已经讨论拒绝修订后的内容语义。因此没有再提交相同问题,也没有把新工具说成上游修复。这里处理的是一个可以独立验证的需求:给出旧版、新版、审阅后文件及明确的审阅决定,检查文件文字是否符合决定。

这个范围刻意保持有限。工具不控制PowerPoint,不代替人作决定,不检查排版、颜色、图片或整份演示文稿的视觉一致性。它要求页序和对象身份稳定;同页对象被替换后复用ID、页数相同的页面重排,都可能超出它能识别的范围。

先绑定文件,再核对决定

输入决策文件使用旧版和新版完整文件的SHA256绑定版本。生成模板时,每个检测到的文字变化默认为pending,不会自动当成已接受。如果改换了旧版或新版文件,应重新生成模板,不能把先前决定套在另一份文档上。

python review_verify.py make old.pptx new.pptx -o decisions.json
python review_verify.py verify old.pptx new.pptx reviewed.pptx decisions.json --out-dir reports

模板定位使用演示文稿中的实际页面顺序及数字shape id,而非按slide文件名排序。调用者需要明确把decision编辑为accept、reject或pending。核心规则可以写成下面的伪代码:

if decision == 'accept':
    expected = new_text
elif decision == 'reject':
    expected = old_text
else:
    status = 'unknown'

只有三份文档中对应对象都支持且身份前提满足时,才比较实际文字与预期文字。不相等是mismatch,相等是选定范围内的pass;对象缺失、重复、字段类型不支持、页面数量不同或决定未完成,保留unknown。空决策集合也不是通过。核验未选定的修改不在结论内。

两个容易造成假通过的输入边界

独立审查中发现,直接使用XML的find读取文本体会忽略同一形状下第二个txBody。即使这种输入不符合正常结构,也不能只读第一个后给出通过。我补了回归用例,再把实现改为要求恰好一个文本体;歧义对象返回unknown。

另一处是损坏的DEFLATE压缩数据。它会抛出zlib.error,若只让程序异常退出,退出码1会与“文字确实不符”混淆。现在把它转换为输入错误,CLI退出2,不生成报告目录。退出码0表示选定文本通过,1表示不符,2表示无法核验或输入错误;自动化调用者据此区分内容结论与坏文件。

输入还设置了64MiB文件和总解压限制、2000个ZIP成员、单XML 5MiB等边界,拒绝重复ZIP路径、DTD/实体声明和外部幻灯片关系。这些措施用于约束解析范围,并不构成恶意Office文件的完整安全审计。

实测记录与报告隐私

本次19项合成ZIP/XML测试全部通过,覆盖接受、拒绝、pending、错版、重复对象、损坏压缩输入、HTML转义和输出不覆盖。另用python-pptx 1.0.2生成四份普通文本PPTX:拒绝后仍为After得到mismatch,恢复Before得到pass。没有启动真实PowerPoint,也不把合成案例称为真人审阅。

HTML交互演示由华为云免费AI开发者空间按具体需求生成,输出中途截断后补齐,并在本地检查语法和交互。浏览器实测了pending为unknown、拒绝保留新文为mismatch、恢复旧文为pass,以及修改输入后旧结果失效。演示只使用内置合成文字,不在浏览器解析或上传PPT。核心Python与测试在本地实现,不声称整个工具都由AI空间生成。

CLI只用Python标准库,不修改三份输入文件,不访问网络。报告可能包含原文,应留在本地;公开仓库只放工具、合成演示和合成报告。工具仍有明确的身份及格式限制,pass不能作为整份PPT验收结论。

源码与使用说明:https://gitcode.com/hh11211sa/ppt-review-decision-verifier 。公开讨论背景为PPT-diff的Issue #10与#53。把按钮决定和保存结果再对一遍,可以让有限范围内的审阅更容易复查;对于无法证明的部分,应让报告保留unknown。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。