把 AI 回答粘到 Word,最容易误判的是"屏幕上看着对"。竖线文本也像表格,公式截图也像公式;但交付时如果要改一个单元格或公式里的数字,就能看出区别。
下面用千问回答做一个最小测试。先让千问生成这段内容:
请用 Markdown 输出一份极简实验记录,包含:
1. 一个二级标题"结果";
2. 一个两列三行的 Markdown 表格,列名是"样本"和"数值",两行数据为 A/12、B/18;
3. 一条单独成行的 LaTeX 公式:$$\bar{x}=\frac{12+18}{2}=15$$。
不要把表格或公式改成截图。
拿到回答后,可以复制内容,在鲸鱼AI助手在线转换工具中导出 Word;如果使用其浏览器插件,也可在千问网页的回答处选择 Word 导出。这里验证的是一条千问回答生成一份文档,不据此推断账号历史会话都能批量导出。若只需普通文本,复制到 Word 也可以;本测试关心的是表格和公式对象。
不靠肉眼:检查 DOCX 里的对象
.docx 是 ZIP 容器,正文通常位于 word/document.xml。Office Open XML 中,w:tbl 是表格元素,m:oMath 是数学公式元素。保存下面脚本为 inspect_docx.py,运行 python inspect_docx.py 导出的文件.docx:
from pathlib import Path
from zipfile import ZipFile, BadZipFile
import sys
import xml.etree.ElementTree as ET
if len(sys.argv) != 2:
raise SystemExit("用法:python inspect_docx.py 文件.docx")
path = Path(sys.argv[1])
try:
with ZipFile(path) as archive:
document = archive.read("word/document.xml")
except (FileNotFoundError, KeyError, BadZipFile) as error:
raise SystemExit(f"无法读取 Word 正文:{error}")
root = ET.fromstring(document)
namespaces = {
"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
"m": "http://schemas.openxmlformats.org/officeDocument/2006/math",
}
tables = root.findall(".//w:tbl", namespaces)
equations = root.findall(".//m:oMath", namespaces)
cells = [
"".join(node.text or "" for node in cell.findall(".//w:t", namespaces))
for table in tables for cell in table.findall(".//w:tc", namespaces)
]
print("表格对象:", len(tables))
print("公式对象:", len(equations))
print("样本单元格:", {"A", "B", "12", "18"}.issubset(set(cells)))
对这个最小样例,理想结果是至少一个表格对象、至少一个公式对象,并能在 Word 里点进单元格和公式实际修改。w:tbl 与 m:oMath 的存在是结构证据,不能单独证明视觉排版或公式语义完全正确 ;还要打开文件对照"12、18、15"及分式。若脚本显示公式数为 0,先检查复制的内容里是否真的保留了 $$...$$,再确认转换入口没有把公式变成普通文本或图片。

这个方法适合需要验收 AI 生成的试卷、技术报告或公式说明。对只有正文的短回答,直接阅读即可;对含复杂内容的文档,先做一份小样例,比转完几十页后逐页返工更省时间。