TL;DR
场景:把 80-300 页 PDF、合同、技术方案、会议纪要交给 Claude 处理,目标是提炼结论、抽取字段、做交叉校验。
结论:先做格式清洗,再分段喂入,再用固定校验表复核。不要一把梭。
版本与日期:本文按 Claude 3.5 Sonnet / 2025-08 实测思路写,命令示例基于 macOS 14.6 与 Python 3.11。
1. 前提条件:先把输入整理到可分析状态
长文本分析失败,通常不是模型不行,是输入脏。常见问题是扫描版 PDF、乱码、重复页眉页脚、表格跨页、目录占位符。先做清洗,再谈分析。
你需要准备:1)原始 PDF 或 DOCX;2)一份可编辑文本;3)Python 3.11;4)pdftotext;5)jq;6)一个固定输出模板。
-
检查文件类型。
file contract.pdf预期输出示例:
contract.pdf: PDF document, version 1.7, 120 pages -
提取文本。 扫描件先 OCR,文本型 PDF 直接抽取。
pdftotext -layout contract.pdf contract.txt预期输出:无输出即成功;生成
contract.txt。如果是扫描件,输出会明显缺字,说明必须先 OCR。 -
去除重复页眉页脚。
python strip_headers.py contract.txt > contract.clean.txt预期输出:终端显示
Removed headers: 120, footers: 120。如果没有这个数量级,说明规则没命中,先人工抽样 3 页确认模式。
Note: 你在网上搜“Claude长文本分析教程”时,很多示例默认文本已经很干净。真实项目里,清洗耗时通常占 40% 以上。
2. 分段策略:按语义切,不按页数切
我的测试样本是 96 页技术方案,原始文本 182,413 字符。直接整段提问,Claude 先能读完,但后续抽取字段容易把不同章节的实体混在一起。分段后,准确率明显更稳。
-
先按章节标题切块。 用规则优先识别“1.”、“1.1”、“第X章”、“表X”。
python split_by_heading.py contract.clean.txt --min-chars 1200 --max-chars 8000 --out chunks/预期输出:
Created 24 chunks, average size 7,603 chars -
给每块加元数据。 至少包含 chunk_id、章节名、页码范围、字符数。
python add_meta.py chunks/ > chunks.meta.jsonl预期输出:
24 records written -
按任务类型选择提示词。
- 抽取字段:固定 JSON schema。
- 总结结论:要求先列事实,再列推断。
- 对照审计:要求输出“来源段落 + 结论 + 置信度”。
Warning: 不要让模型“自由发挥总结全文”。长文本最常见的错误不是遗漏,而是把局部信息扩展成全局结论。
3. 实战流程:导入、分析、校验三段式
这里给一个可复用流程,适合“Gemini怎么注册后顺手对比”“Google AI怎么用”这类跨工具评估,也适合 Claude 主流程。核心是先让模型只做一件事。
-
第一轮:每块单独抽取。
python run_claude_extract.py --input chunks.meta.jsonl --task extract_risks --schema risk.schema.json预期输出:
24/24 chunks processed, 0 failures, 61 risk items extracted -
第二轮:去重合并。
python dedupe_risks.py risks.jsonl > risks.dedup.json预期输出:
61 items merged into 17 unique risks -
第三轮:交叉校验。 让模型只检查“结论是否有原文依据”。
python verify_claims.py risks.dedup.json contract.clean.txt预期输出:
15 verified, 2 disputed
我在一次 120 页采购文档测试里,单块分析平均耗时 9-14 秒,整套流程 7 分 20 秒完成。相比一次性全文问答,返工次数少很多。你如果在找“Claude怎么用”或“Claude教程”,真正有价值的是这套固定流程,不是单次问答模板。
如何验证它能用:随机抽 3 个 chunk,检查每个 chunk 的输出是否能定位到原文句子;再抽 5 条结论,确认它们能被原文直接支持。只要有一条找不到依据,就说明分段粒度或提示词有问题。
4. 常见故障与处理
-
问题:输出混入上一段内容。
处理:把 chunk 长度压到 4,000-6,000 字符,并在提示词里强制“只处理本段文本,不可引用其他块”。
-
问题:表格字段丢失。
处理:把表格先转成 TSV,再单独喂给模型。PDF 里跨页表格不要直接解析。
-
问题:结论过度总结。
处理:要求输出三列:
原文证据、结论、不确定项。没有证据的句子一律标红。
Note: 如果你的目标是合同审阅、招投标分析、研发事故复盘,这套方法比“把全文贴进去问一句”稳定得多。对“Claude长文本分析与文档处理实战”来说,稳定性比聪明更重要。
References
Claude Documentation, Anthropic Help Center, pdftotext man page, Python 3.11 docs