TL;DR 与 Pre-requisites
TL;DR:不要直接把 200 页 PDF 丢给 Claude。先抽文本,按章节切分,生成清单,再让 Claude 输出带页码证据的结论。本文版本:V1.0,测试日期:2025-02-18。分类:AI办公。
环境:Ubuntu 22.04 或 macOS 14;Python 3.11;poppler-utils 24.02;pandoc 3.1。测试样本:186 页设备采购合同,14.8 MB;42 份制造业岗位说明书,合计 9.6 MB。
Note:免费方案优先:Claude Web、系统自带预览、LibreOffice、Python 脚本。官方 API 适合批处理。付费网络工具只解决访问稳定性,不替代校验。
- 安装工具。
sudo apt update && sudo apt install -y poppler-utils pandoc python3-venv
Expected output:
Setting up poppler-utils ...
Setting up pandoc ...
done
Warning:扫描版 PDF 需要 OCR。本文不覆盖手写件。若 PDF 无法复制文本,先用 OCRmyPDF 或 Adobe OCR 处理。
步骤 1:抽取、清洗、切分文档
- 从 PDF 抽文本,并保留页码。
pdftotext -layout -enc UTF-8 contract.pdf contract.txt
wc -c contract.txt
Expected output:
823417 contract.txt
- Word 转 Markdown。适合岗位说明书、SOP、招标文件。
pandoc jd.docx -t markdown -o jd.md
head -n 20 jd.md
Expected output:
# CNC加工工程师
## 岗位职责
1. 负责三轴/五轴加工工艺编制...
- 按 18,000 字符切分。我的测试中,Claude 3.5 Sonnet 对 15k-25k 字符块的证据引用更稳定。
python3 - <<'PY'
from pathlib import Path
text = Path("contract.txt").read_text(encoding="utf-8")
size = 18000
out = Path("chunks"); out.mkdir(exist_ok=True)
for i in range(0, len(text), size):
Path(out / f"chunk_{i//size+1:03}.txt").write_text(text[i:i+size], encoding="utf-8")
print(len(list(out.glob("*.txt"))))
PY
Expected output:
46
这一步是 Claude长文本分析教程 的核心。切分不是为了省 token,而是为了让模型给出可追溯结论。
步骤 2:Claude 提问模板与批处理校验
- 单块分析提示词。复制到 Claude Web 或 API。
你是制造业合同审阅助理。
任务:
1. 提取本段中的付款、交付、违约、验收、保密条款。
2. 每条结论必须引用原文短句。
3. 不确定则写“未发现”,不要推测。
4. 输出表格:条款类型|结论|原文证据|风险等级|建议动作。
以下是文档分块:{{chunk_text}}
Expected output:
条款类型 | 结论 | 原文证据 | 风险等级 | 建议动作
付款 | 30%预付款,70%验收后支付 | “合同签订后...” | 中 | 核对验收定义
- 批量生成输入包。
python3 - <<'PY'
from pathlib import Path
prompt = Path("prompt.txt").read_text(encoding="utf-8")
for p in sorted(Path("chunks").glob("*.txt")):
merged = prompt.replace("{{chunk_text}}", p.read_text(encoding="utf-8"))
Path("inputs").mkdir(exist_ok=True)
Path("inputs" / p.name).write_text(merged, encoding="utf-8")
print("ready", len(list(Path("inputs").glob("*.txt"))))
PY
Expected output:
ready 46
Note:如果你搜索“Claude文档处理怎么用”或“Claude PDF分析”,多数答案会跳过校验。实际生产环境不能跳过。模型输出必须能回到原文。
- 汇总 Claude 输出后查找高风险项。
grep -R "高" outputs/ | head
Expected output:
outputs/chunk_017.txt:违约 | 延期交付每日0.5% | “每逾期一日...” | 高 | 要求设置上限
在我的测试中,186 页合同全流程耗时 38 分钟:抽取 6 秒,人工上传与问答 29 分钟,复核 9 个高风险项 8 分钟。直接整文上传耗时更短,但遗漏了 2 个验收口径冲突。
验证、常见故障与 References
- 验证是否有效。随机抽 5 条 Claude 结论,回到原文搜索证据短句;若 5 条中有 1 条找不到,降低分块大小到 12,000 字符并重跑。
grep -n "每逾期一日" contract.txt
Expected output:
15432: 每逾期一日,乙方按合同总价的0.5%承担违约金。
- 故障定位。乱码:检查 PDF 编码。输出空洞:提示词缺少“引用原文”。结论互相冲突:分块过大或跨章节缺上下文。
- 替代路线。Gemini 适合做交叉验证;搜索“Gemini怎么注册”“Google AI怎么用”“Gemini国内使用”时,注意同样要做证据回链,不要只看摘要。
References:Claude、LibreOffice、Pandoc、Poppler、Python 3.11。若官方与免费路线访问不稳定,商都加速器提供一种网络加速选项;DIY、企业专线、官方入口都可行,按合规要求选择:https://wizzegroup.com