2.2 KiB
2.2 KiB
Tracked Replace 相邻文本检查(2026-06-26 CT维保合同教训)
问题场景
R1 reviewer 发现「造与」→「造成」的 typo(R1-009),editor 执行 tracked_replace 修复。R2 reviewer 复核时发现修复后的文本为「造成济损失」——缺少「经」字,应为「造成经济损失」。
根因
原文为「造与与济损失」——双重 typo:
- 「造与」→ 应为「造成」(R1-009 已发现)
- 「济损失」→ 应为「经济损失」(R1 reviewer 未发现)
Editor 修复了 R1-009 后,渲染文本为「造成济损失」,第二个 typo 仍然存在。
教训
tracked_replace 不是「只检查那一处」的信号。当 editor 在一个段落内执行了 tracked_replace 后,reviewer 复核时必须:
- 提取整个段落的「接受修订后」渲染文本(
accept_revisions_text),不只看 track change 标记 - 逐字通读整个段落,检查是否有:
- 与被修复 typo 相邻的其他 typo(如本例「济损失」缺「经」)
- tracked_replace 操作意外引入的新错误(如删多了字、删错了位置)
- 双重 DEL 导致的文本碎片化(如「造[-与-]成[- -][-与-]济损失」)
验证方法
# 对每个有 WB track changes 的段落,提取接受修订后的完整文本
def accept_revisions_text(p):
result = []
for elem in p.iter():
if elem.tag == qn('delText'):
continue
if elem.tag == qn('t'):
parent = elem.getparent()
if parent is not None and parent.tag == qn('del'):
continue # skip runs inside w:del
if elem.text:
result.append(elem.text)
return ''.join(result)
# 复核时对每个被修改的段落,输出完整渲染文本
for pi in modified_paragraphs:
text = accept_revisions_text(paras[pi])
print(f"P{pi}: {text}")
审查清单补充
复核轮的文字校对,在「逐字通读」基础上,对每个有 WB track changes 的段落额外执行:
- 全文输出该段落的接受修订后文本
- 人工逐字通读,检查是否有遗漏的 typo
- 特别注意 tracked_replace 操作的边界(DEL/INS 前后的原文 run)