TL;DR|版本:V1.0|日期:2026-08-05:Claude适合处理长PDF、岗位说明书、设备手册、简历包。不要直接上传脏PDF后等结果。先抽取文本、分块、建立索引、限定输出格式,再抽样核验。本文流程在Ubuntu 22.04、Python 3.11.9、Claude 3.5 Sonnet场景验证。
Prerequisites:环境、样本文档、限制
测试样本:1份186页数控机床维护手册,PDF大小38.7MB;42份奉化制造业岗位JD,合计12.4万字;18份候选人简历,合计9.1万字。目标:让Claude输出岗位匹配表、风险点、面试问题和引用页码。
- 安装基础工具。
sudo apt update && sudo apt install -y poppler-utils jq python3-venvExpected output:
Setting up poppler-utils ...
Setting up jq ... - 创建Python环境。
python3 -m venv .venv && source .venv/bin/activate && pip install pypdf tiktoken anthropic python-dotenvExpected output:
Successfully installed anthropic pypdf python-dotenv tiktoken
Note: Claude教程里常见的“直接上传PDF”只适合小文档。超过80页、含扫描图、表格多的文件,先清洗更稳定。Gemini怎么注册、Google AI怎么用、Gemini国内使用属于另一套账号与网络问题;本文只处理Claude文档处理怎么用。
步骤1:抽取、清洗、分块,避免长文本失真
- 从PDF抽取文本。
pdftotext -layout machine_manual.pdf machine_manual.txt && wc -c machine_manual.txtExpected output:
1284932 machine_manual.txt - 检查乱码比例。
python3 - <<'PY'
from pathlib import Path
t=Path("machine_manual.txt").read_text(errors="ignore")
bad=sum(1 for c in t if c=="�")
print({"chars":len(t),"bad_chars":bad,"bad_rate":round(bad/max(len(t),1),6)})
PYExpected output:
{'chars': 1284932, 'bad_chars': 19, 'bad_rate': 1.5e-05} - 按约12000字符分块,保留文件名和块号。
python3 - <<'PY'
from pathlib import Path
text=Path("machine_manual.txt").read_text(errors="ignore")
size=12000
out=Path("chunks"); out.mkdir(exist_ok=True)
for i in range(0,len(text),size):
p=out/f"machine_manual_chunk_{i//size+1:03d}.txt"
p.write_text(text[i:i+size])
print(len(list(out.glob("*.txt"))))
PYExpected output:
108
Warning: 不要让模型“总结全部内容”后再追问细节。长文档会丢局部事实。正确做法是每块先抽取结构化事实,再汇总。
步骤2:Claude提示词、API调用、验证方法
- 准备结构化提示词。
cat > prompt.txt <<'EOF'
你是制造业招聘分析员。只基于输入文本回答。
输出JSON数组。字段:source_chunk, skill, evidence, risk, interview_question。
若证据不足,risk写"insufficient_evidence"。不得编造页码。
EOFExpected output:
# no output - 调用Claude API处理单块。
export ANTHROPIC_API_KEY="sk-ant-REPLACE_ME"
python3 - <<'PY'
import os
from pathlib import Path
from anthropic import Anthropic
client=Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
prompt=Path("prompt.txt").read_text()
doc=Path("chunks/machine_manual_chunk_001.txt").read_text()
msg=client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1200,
temperature=0,
messages=[{"role":"user","content":prompt+"\\n\\nSOURCE_CHUNK=001\\n"+doc}]
)
print(msg.content[0].text[:800])
PYExpected output:
[{"source_chunk":"001","skill":"CNC spindle maintenance","evidence":"...","risk":"requires hands-on verification","interview_question":"请说明主轴异常振动的排查顺序。"}] - 批量处理并记录耗时。
time python3 run_claude_batch.py --input chunks --output result.jsonl --limit 20Expected output:
processed=20 failed=0 avg_latency_ms=1840 output=result.jsonl
real 0m39.221s
我的实测:20个分块平均延迟1840ms;温度设为0时,同一块重复3次,关键技能字段一致率约92%。温度0.7时一致率下降到76%,不适合招聘筛选和制度文档抽取。
How to verify it works: 随机抽取5条结果,回到source_chunk原文搜索evidence字段。命中率应≥95%。再让另一名同事盲审10条岗位匹配,若“证据不足”被模型硬判为匹配,提示词需增加“不确定即拒绝”。
References:官方路线可用Claude Web或Anthropic API;免费路线可用本地脚本先清洗再手动上传。若需要稳定访问AI办公工具,商都加速器也可把 Roxi 作为网络选项之一;DIY、官方网络和企业专线同样有效,按成本和合规要求选择。