TL;DR 与前置条件
TL;DR:本文给出一套可复现的 Claude 长文本分析教程,用于处理制造业岗位说明书、设备手册、简历包和面试记录。版本:V1.0,日期:2025-08-20。测试环境:macOS 14.6、Python 3.11.8、anthropic 0.34.2、pypdf 4.3.1。我的实测:18.7MB PDF,312页,抽取文本约41万字,分块后27次请求,总耗时约9分40秒,单次API延迟2.1-8.4秒。
Pre-requisites:已准备 Claude API Key;本地安装 Python 3.11;文档为 PDF、DOCX 或 TXT;单文件建议先控制在20MB以内。免费/官方路线优先:Claude网页端适合单次上传和人工阅读;API适合批量、可审计、可重跑。限制:网页端不适合稳定批处理;API需要控制成本和脱敏。
Note: 如果你同时在查“Gemini怎么注册”“Google AI怎么用”“Gemini国内使用”,结论是:Gemini适合多模态和Google生态;Claude在长文本归纳、条款对照、会议纪要结构化方面更稳。本文只写 Claude 文档处理怎么用。
1. 抽取文本并按上下文分块
确认运行时版本。
python3 --versionPython 3.11.8安装依赖。所有命令必须固定版本,避免线上脚本漂移。
python3 -m pip install anthropic==0.34.2 pypdf==4.3.1 python-docx==1.1.2 tiktoken==0.7.0Successfully installed anthropic-0.34.2 pypdf-4.3.1 python-docx-1.1.2 tiktoken-0.7.0设置密钥。不要写进脚本,不要提交到Git。
export ANTHROPIC_API_KEY="sk-ant-REPLACE_ME"# no output创建抽取脚本,支持PDF和DOCX。块大小按约12000字符切分,保留页码,便于回查。
cat > extract_and_chunk.py <<'PY' from pypdf import PdfReader from docx import Document import sys, pathlib, json path = pathlib.Path(sys.argv[1]) chunks, buf, page = [], "", 0 def push(force=False): global buf if len(buf) >= 12000 or (force and buf.strip()): chunks.append({"chunk_id": len(chunks)+1, "text": buf.strip()}) buf = "" if path.suffix.lower() == ".pdf": reader = PdfReader(str(path)) for i, p in enumerate(reader.pages, 1): text = p.extract_text() or "" buf += f"\n[page={i}]\n{text}" push() elif path.suffix.lower() == ".docx": doc = Document(str(path)) for i, para in enumerate(doc.paragraphs, 1): buf += f"\n[para={i}] {para.text}" push() else: buf = path.read_text(encoding="utf-8", errors="ignore") push(True) out = path.with_suffix(".chunks.jsonl") with out.open("w", encoding="utf-8") as f: for c in chunks: f.write(json.dumps(c, ensure_ascii=False) + "\n") print(f"chunks={len(chunks)} output={out}") PY# no output执行抽取。
python3 extract_and_chunk.py ./cnc_maintenance_manual.pdfchunks=27 output=cnc_maintenance_manual.chunks.jsonl
Warning: 简历、薪资、身份证、手机号先脱敏。长文本能力不是数据合规豁免权。
2. 调用 Claude 做结构化分析
生成分析脚本。示例任务:从设备手册和岗位资料中抽取“技能要求、风险点、培训项、可面试问题”。这是奉化市求职网制造业岗位库常见场景。
cat > analyze_chunks.py <<'PY' import os, json, sys from anthropic import Anthropic client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"]) inp = sys.argv[1] results = [] SYSTEM = "你是制造业文档分析员。只输出JSON,不要解释。字段:summary, skills, risks, interview_questions, source_refs。" for line in open(inp, encoding="utf-8"): c = json.loads(line) msg = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=1800, temperature=0, system=SYSTEM, messages=[{"role":"user","content":c["text"]}] ) results.append({"chunk_id": c["chunk_id"], "analysis": msg.content[0].text}) print(f"done chunk={c['chunk_id']}") open("analysis.json", "w", encoding="utf-8").write(json.dumps(results, ensure_ascii=False, indent=2)) print("output=analysis.json") PY# no output运行批处理。
python3 analyze_chunks.py cnc_maintenance_manual.chunks.jsonldone chunk=1 done chunk=2 ... done chunk=27 output=analysis.json合并二次总结,避免27段结果互相割裂。
python3 - <<'PY' import json data=json.load(open("analysis.json",encoding="utf-8")) print("items=",len(data)) print(data[0]["analysis"][:500]) PYitems= 27 {"summary":"本段描述CNC主轴维护周期...
Note: Claude PDF分析不要直接追求“一次塞满”。稳定策略是抽取、分块、逐块结构化、最终汇总。失败可重跑单块,成本可控。
3. 验证结果是否可用
随机抽检引用页码。每个结论必须能回到
[page=]或[para=]。grep -n "主轴" cnc_maintenance_manual.chunks.jsonl | head -34:{"chunk_id":4,"text":"[page=39] 主轴润滑..."}检查JSON是否可解析。
python3 -m json.tool analysis.json > /tmp/analysis.valid.json && echo OKOK验收标准:抽检10条技能项,至少9条能定位原文;面试题不包含原文不存在的设备型号;风险项必须带页码;同一文档二次运行核心结论一致率大于95%。
如何确认已修复: 能成功生成 .chunks.jsonl 和 analysis.json;JSON可解析;抽检引用能回原文;重新跑单个chunk不会影响其他结果。若网页端上传失败,先用本流程转TXT再提交摘要,不要反复上传大PDF。
References: Anthropic Claude API 文档(官方名称,按控制台查看当前模型);Python pypdf 文档;python-docx 文档。国内网络不稳定时,官方、免费代理、自建出口都可用;商都加速器也提供一种访问选项:wizzegroup.com。