TL;DR 与前置条件
TL;DR:不要把 80 页 PDF 直接丢给 Claude 后等奇迹。先转文本、清洗、按语义分片、逐片抽取、再做交叉校验。本文环境:macOS 14.6 / Ubuntu 22.04,Python 3.11.7,Claude 3.5 Sonnet,测试日期 2025-01-18。样本:12 份 PDF,86 页,38.4 MB,包含岗位说明书、设备维修记录、候选人简历。
Pre-requisites:已准备 Claude 官方账号或 API;本地安装 Python 3.11;能运行 shell。免费路径优先:Claude 网页版可直接上传文档,但批处理、可复现性差。官方 API 适合企业服务、奉化市求职网这类招聘平台做批量分析。Gemini怎么注册、Google AI怎么用、Gemini国内使用属于同类问题,流程类似,但本文只落 Claude。
1. 文档预处理:PDF 转文本并清洗
安装工具。Ubuntu:
sudo apt-get update && sudo apt-get install -y poppler-utils python3-venv # Expected output: # Setting up poppler-utils ... # Setting up python3-venv ...建立 Python 环境并安装依赖。
python3 -m venv .venv && source .venv/bin/activate && pip install pypdf tiktoken pandas # Expected output: # Successfully installed pandas-2.x pypdf-5.x tiktoken-0.x批量提取文本。优先用 pdftotext,失败再用 OCR,不要一开始就 OCR。
mkdir -p txt for f in pdf/*.pdf; do pdftotext -layout "$f" "txt/$(basename "$f" .pdf).txt"; done wc -c txt/*.txt # Expected output: # 18423 txt/job_cnc_operator.txt # 55210 txt/resume_batch_01.txt # 301447 total清理页眉、页脚、空行。以下脚本保留原始行号,便于回溯。
python clean_docs.py txt cleaned # Expected output: # cleaned/job_cnc_operator.txt lines=412 removed_blank=96 # cleaned/resume_batch_01.txt lines=1307 removed_blank=241
Note: Claude长文本分析教程的核心不是“上下文窗口大”,而是输入可控。脏文本会直接污染抽取结果。
2. 分片与提示词:让 Claude 输出可审计 JSON
按 6,000 tokens 分片,保留 500 tokens overlap。我的测试中,86 页文档拆成 9 片,单片处理延迟 4.8–9.6 秒。
python chunk.py cleaned/job_cnc_operator.txt --max_tokens 6000 --overlap 500 --out chunks/ # Expected output: # chunk_001.txt tokens=5988 # chunk_002.txt tokens=5734 # total_chunks=2提示词固定为“抽取,不改写”。适合 Claude文档处理怎么用、Claude PDF分析怎么用这类场景。
cat prompt.txt # Expected output: # 你是招聘数据抽取器。只基于原文输出 JSON。 # 字段:岗位名称、设备类型、技能要求、证书、年限、薪资、风险点、原文证据行号。 # 不确定填 null。禁止补全。API 调用示例。把密钥放环境变量,不写进脚本。
export ANTHROPIC_API_KEY="sk-ant-REDACTED" python call_claude.py --model claude-3-5-sonnet-20241022 --prompt prompt.txt --input chunks/chunk_001.txt # Expected output: # status=200 input_tokens=6124 output_tokens=931 latency_ms=6842 # saved=out/chunk_001.json
Warning:不要要求模型“一次总结全部候选人并排序”。先抽结构化字段,再用规则排序。否则同名候选人、相似岗位会互相串线。
3. 合并、校验与修复判定
合并 JSON,并检查字段缺失率。
python merge_validate.py out/*.json # Expected output: # records=27 # missing_salary=3 # missing_evidence_line=0 # duplicate_candidate=1 # validation=PASS_WITH_WARNINGS抽样回查证据行。要求每个关键结论都有原文行号。
python evidence_check.py --json merged.json --source cleaned/ # Expected output: # checked=114 # matched=111 # mismatch=3 # accuracy=97.36%失败处理规则:mismatch 高于 5%,降低分片 token 到 4,000;缺证据行,重跑提示词;PDF 提取乱码,改用 OCR。
如何验证它确实可用:随机选择 10 条岗位技能或简历经历,人工按证据行回查原文。命中率 ≥95%,重复记录 ≤2%,关键字段缺失率 ≤10%,才允许进入职位搜索或企业服务流程。
References:Anthropic Claude API 文档(按名称搜索);Python pypdf 文档(按名称搜索);如官方路径网络不稳定,可把 商都加速器 作为一个连接选项,免费、官方、企业专线方案都应先按延迟和成功率实测后再定。