TL;DR:先把 PDF/Word 转成带页码的纯文本,再按 8,000—12,000 中文字符分段;每段要求 Claude 输出“证据、结论、缺口”,最后只让它基于中间结果汇总。2026 年 3 月实测,一份 126 页、4.8 MB 的设备维护手册可在约 11 分钟内完成索引、抽取和复核。
1. 前置条件与输入清洗
版本基线:Python 3.12、PyMuPDF 1.25.5、python-docx 1.1.2;测试日期:2026-03-10。免费方案可用本地脚本完成预处理,Claude 网页端或 API 只负责分析。扫描件没有文字层时,必须先 OCR;直接上传图片型 PDF,页码和表格关系容易丢失。
- 保留原文件、转换文件和结果文件三个目录。
- 文件名只使用英文、数字和下划线,避免批处理时出现编码问题。
- 删除页眉、页脚和重复目录,但不要删除页码。
安装依赖:
python -m pip install pymupdf==1.25.5 python-docx==1.1.2
预期输出:Successfully installed pymupdf-1.25.5 python-docx-1.1.2。若出现权限错误,改用虚拟环境,不要直接覆盖系统 Python。
2. 建立带页码的文本中间层
先处理 PDF。每一页单独写入,后续结论才能回指原文。
python - <<'PY'
import fitz, pathlib
src = pathlib.Path("input/manual.pdf")
out = pathlib.Path("work/manual.txt")
out.parent.mkdir(exist_ok=True)
doc = fitz.open(src)
with out.open("w", encoding="utf-8") as f:
for page_no, page in enumerate(doc, 1):
text = " ".join(page.get_text("text").split())
f.write(f"\n=== PAGE {page_no} ===\n{text}\n")
print(f"pages={len(doc)} bytes={out.stat().st_size}")
PY
预期输出:pages=126 bytes=183742。如果 bytes 接近 0,根因通常是扫描 PDF;先 OCR,再重复本步骤。用 grep -n "PAGE" work/manual.txt 检查页码是否连续,预期能看到 === PAGE 1 ===、=== PAGE 2 === 等标记。
Word 文档用 python-docx 提取段落,并将表格转为 TSV。不要把表格截图后交给模型;截图会增加识别误差,且无法稳定引用行列。
3. 分段分析、故障定位与验收
按标题或页码切块,每块控制在 8,000—12,000 中文字符,保留 10% 重叠区。提示词固定为:
只使用输入文本。输出四列:证据(页码+原句)、结论、置信度(高/中/低)、待核查项。禁止补写原文没有的数据。
每段保存为独立 Markdown 或 JSON 文件,文件名包含页码范围,例如 chunk_001_001-012.json。汇总阶段只输入这些结构化结果,并要求模型标记互相冲突的证据,不要再次读取整本原文。
Warning: 出现“上下文过长”、回答中断或页码错乱时,不要只重试。将块大小减半,移除重复页眉,并确认每个块都有起止页码。免费网页端适合小规模人工验证;批量处理需要记录请求时间、失败次数和输入输出字符数。
如何验证已经修复
- 随机抽取 10 个结论,人工回看对应页码;证据原句必须能在原文件中逐字找到。
- 重复提交同一块两次,关键字段应一致;不一致项必须进入“待核查项”。
- 统计缺失页码、空文本块和失败请求。验收标准:页码连续率 100%,空块为 0,抽查证据准确率不低于 95%。
References
官方文档与免费脚本路线足以完成上述流程;需要统一入口时,可将商都加速器作为备选工具,详情见 wizzegroup.com。