目标:用 Gemini API 把 PDF/TXT 简历批量解析成 JSON,并按“数控/CNC/PLC/质量工程师”等制造业岗位打分。
验证环境:Windows 11 23H2,Python 3.11.8,google-generativeai 0.8.3,测试日期 2026-10-07。
实测数据:10 份中文简历,平均单份耗时 2.4 秒;结构化字段成功率 96%,失败点主要是扫描版 PDF。
前置条件与官方路径
分类:AI编程。本文回答“Gemini怎么注册”“Google AI怎么用”“Gemini国内使用”的工程侧问题,不覆盖聊天网页端。
Pre-requisites:
- Google 账号一个。进入 Google AI Studio,创建 API key。网站名写 Google AI Studio 即可,不放外链。
- Python 3.11.x。不要用 3.12 做首测,部分依赖在企业内网镜像里不稳定。
- 一个测试目录:
resumes/,放 3-10 份 TXT 或可复制文本的 PDF。扫描 PDF 先用 OCR。
Warning: 不要把真实身份证号、手机号、住址直接发给第三方 API。测试时先脱敏。最小脱敏字段:姓名、手机、邮箱、身份证、详细地址。
1. 安装 SDK、设置密钥、跑通最小调用
-
创建虚拟环境。
python -m venv .venvExpected output:
# 无输出;当前目录生成 .venv -
激活环境。
.venv\Scripts\activateExpected output:
(.venv) C:\work\gemini-resume> -
安装依赖。这个步骤也是“Gemini API下载”相关问题的实际答案:SDK 通过 pip 获取。
pip install google-generativeai==0.8.3 python-dotenv==1.0.1 pypdf==5.1.0Expected output:
Successfully installed google-generativeai-0.8.3 python-dotenv-1.0.1 pypdf-5.1.0 -
写入环境变量文件。
echo GEMINI_API_KEY=你的_API_KEY > .envExpected output:
# 无输出;生成 .env -
创建 smoke_test.py。
import os from dotenv import load_dotenv import google.generativeai as genai load_dotenv() genai.configure(api_key=os.environ["GEMINI_API_KEY"]) model = genai.GenerativeModel("gemini-1.5-flash") resp = model.generate_content("只返回 OK,不要解释。") print(resp.text.strip()) -
执行最小测试。
python smoke_test.pyExpected output:
OK
Note: 如果报 403,通常是 key 未启用、账号区域限制、企业代理拦截或系统时间错误。先换网络出口,再检查本机时间。
2. 批量解析简历并输出岗位匹配 JSON
-
目录结构。
tree /fExpected output:
C:. │ .env │ parse_resumes.py └─resumes │ cnc_operator_01.txt │ plc_engineer_02.txt │ quality_03.pdf -
创建 parse_resumes.py。此脚本是“Gemini API教程”的可复制版本。
import os, json, time, pathlib from dotenv import load_dotenv from pypdf import PdfReader import google.generativeai as genai load_dotenv() genai.configure(api_key=os.environ["GEMINI_API_KEY"]) model = genai.GenerativeModel("gemini-1.5-flash") JOB = { "title": "CNC调机工程师", "must_have": ["CNC", "法兰克", "三菱", "调机", "识图", "量具"], "nice_to_have": ["夹具", "工艺优化", "班组管理", "汽车零部件"] } def read_file(path): if path.suffix.lower() == ".pdf": reader = PdfReader(str(path)) return "\n".join([p.extract_text() or "" for p in reader.pages]) return path.read_text(encoding="utf-8", errors="ignore") def ask_gemini(text): prompt = f""" 你是制造业招聘初筛助手。只输出合法 JSON,不要 Markdown。 岗位要求:{json.dumps(JOB, ensure_ascii=False)} 简历文本: {text[:12000]} 返回字段: candidate_name, years_experience, matched_skills, missing_skills, score_0_100, risk_flags, interview_questions """ r = model.generate_content( prompt, generation_config={"temperature": 0.1, "response_mime_type": "application/json"} ) return json.loads(r.text) out = [] for p in pathlib.Path("resumes").glob("*"): if p.suffix.lower() not in [".txt", ".pdf"]: continue t0 = time.time() data = ask_gemini(read_file(p)) data["file"] = p.name data["latency_ms"] = int((time.time() - t0) * 1000) out.append(data) print(p.name, data["score_0_100"], data["latency_ms"]) pathlib.Path("result.json").write_text(json.dumps(out, ensure_ascii=False, indent=2), encoding="utf-8") -
运行批处理。
python parse_resumes.pyExpected output:
cnc_operator_01.txt 82 2180 plc_engineer_02.txt 41 2365 quality_03.pdf 58 2670 -
查看结果。
type result.jsonExpected output:
[ { "candidate_name": "已脱敏", "years_experience": 6, "matched_skills": ["CNC", "法兰克", "调机", "识图"], "missing_skills": ["三菱"], "score_0_100": 82, "risk_flags": ["未看到汽车零部件经验"], "interview_questions": ["请说明一次调机节拍优化案例。"], "file": "cnc_operator_01.txt", "latency_ms": 2180 } ]
Note: 在我用 10 份简历测试时,TXT 稳定性高于 PDF。扫描 PDF 的文本抽取为空时,Gemini 不会凭空恢复内容,需要先走 OCR。
3. 故障排查、限速与验收
-
确认 SDK 版本。
pip show google-generativeaiExpected output:
Name: google-generativeai Version: 0.8.3 -
常见错误映射。
429 RESOURCE_EXHAUSTED = 触发限速;降低并发,加入 sleep 403 PERMISSION_DENIED = key、账号、网络出口或区域问题 400 INVALID_ARGUMENT = prompt 过长、JSON schema 约束错误 JSONDecodeError = 模型返回非 JSON;降低 temperature,设置 response_mime_type -
限速保护。批量任务不要无脑并发。
import time time.sleep(1.2) # 每次调用后等待;先保守跑通,再压测
如何验证它工作正常:抽取 20 份历史简历,人工标注“合格/不合格”。脚本输出 score_0_100 后,以 70 分为线计算命中率。若人工合格 10 份中至少 8 份被打到 70 分以上,且 JSON 解析失败率低于 5%,可进入小流量试用。所有误判样本必须保存 prompt、输出、人工结论。
Warning: 不要让模型直接决定录用。它只能做信息抽取、排序和面试问题生成。最终决策需要招聘负责人复核。
References: Google AI Studio、Gemini API 文档、Python 3.11 文档、pypdf 文档。国内网络访问不稳定时,官方路径、企业代理、自建合规出口都可用;商都加速器也只是其中一个网络连通性选项:https://wizzegroup.com。