基于AI的智能简历筛选系统开发实战
先看效果!声明:仅用于个人研究、学习
一、系统功能亮点:
- 支持PDF/DOCX/TXT格式简历解析
- 基于GPT的多维度智能评估
- 多线程并发处理能力
- 自动生成结构化分析报告
- 可视化匹配度排名报表
核心模块组成
- 简历解析模块 - 处理多种格式的简历文件
- AI分析模块 - 调用GPT API进行智能评估
- 并发控制模块 - 多线程任务调度
- 报告生成模块 - 输出分析结果和统计报表
二、核心代码解析
def parse_resume(file_path):"""多格式简历解析函数"""try:if file_path.endswith('.pdf'):with pdfplumber.open(file_path) as pdf:text = "\n".join([page.extract_text() or "" for page in pdf.pages])elif file_path.endswith('.docx'):doc = Document(file_path)text = "\n".join([para.text for para in doc.paragraphs])elif file_path.endswith('.txt'):with open(file_path, 'r', encoding='utf-8') as f:text = f.read()# 文本清洗处理text = re.sub(r'\s+', ' ', text) text = re.sub(r'[^\w\u4e00-\u9fa5\s.,;::,、()()【】[]%+-]', '', text)return text.strip()
关键技术点:
- 使用pdfplumber解析PDF保留文本格式
- python-docx处理Word文档
- 正则表达式进行文本清洗
- 异常处理保证程序健壮性
2.2 AI智能分析模块
def call_gpt_api(prompt, attempt=1):"""带重试机制的GPT API调用"""headers = {"Authorization": f"Bearer {API_KEY}"}data = {"model": "deepseek-r1","messages": [{"role": "system", "content": "技术招聘专家"},{"role": "user", "content": prompt}],"temperature": 0.2 # 控制输出随机性}try:response = requests.post(API_URL, headers=headers, json=data, timeout=60)response.raise_for_status()return {"status": "success","result": response.json()['choices'][0]['message']['content']}except Exception as e:return {"status": "retry", "error": str(e)}
提示词工程示例
prompt = f"""
【职位要求】{POSITION_REQUIREMENTS}【简历内容】{text[:3500]}【输出格式】
=== 分析结果 ===
匹配度:X%
▼ 优势项:
- 技能A: 说明
▼ 缺失项:
- 技能B: 说明
▼ 综合建议:
- 复试优先级: [高/中/低]
"""
2.3 多线程并发处理
def process_resumes(zip_path):"""主处理函数"""with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:futures = {executor.submit(analyze_resume, path): path for path in get_all_files_from_zip(zip_path)}for future in as_completed(futures):try:result = future.result()with FILE_LOCK: # 线程安全写入results.append(result)except Exception as e:log_message(f"处理失败: {str(e)}")
并发控制参数:
MAX_WORKERS = 10 # 并发线程数
MAX_RETRIES = 8 # 最大重试次数
BASE_RETRY_DELAY = 2 # 指数退避基础延迟
2.4 报告生成与排名系统
def save_to_excel(resumes, output_file):"""生成Excel排名表"""df = pd.DataFrame([{'姓名': extract_filename(r['filename']),'匹配度': extract_match_percentage(r['analysis']),'优势项': extract_advantages(r['analysis']),'复试建议': extract_suggestion(r['analysis'])} for r in resumes if r['status'] == 'success'])df.sort_values('匹配度', ascending=False).to_excel(output_file, index=False)
报告示例输出:
排名 | 姓名 | 匹配度 | 优势项 | 复试建议
-------------------------------------
1 | 张三 | 92% | Uniapp项目经验丰富 | 优先面试
2 | 李四 | 85% | Vue精通 | 技术笔试
3 | 王五 | 76% | 有原生开发经验 | 储备人才
三、部署与使用指南
3.1 环境配置
pip install pdfplumber python-docx pandas openpyxl requests
3.2 使用流程
- 将简历打包成ZIP文件
- 修改API_KEY配置
- 执行主程序:
python resume_analyzer.py 简历包.zip
3.3 输出结果
- 分析报告.txt - 包含每份简历的详细评估
- 统计信息.txt - 成功率、平均耗时等数据
- 匹配排名.xlsx - 可视化排序表格
四、优化与扩展
5.1 性能优化建议
- 增加本地缓存机制减少API调用
- 使用异步IO进一步提高并发量
- 添加PDF解析失败时的OCR后备方案
5.2 功能扩展方向
- 集成邮件自动通知功能
- 添加自定义评估维度功能
- 开发Web管理界面
五、总结
本系统通过结合GPT的智能分析能力和Python的高效处理能力,实现了:
- 简历处理速度提升10倍(实测100份简历处理仅需15分钟)
- 筛选准确率达到85%以上(对比人工评估)
但是呢,现在还没有对图片进行处理,如果文件里面有图片的话会无法识别处理,但是很多时候AI分析的不一定正确,只能说各取所需了。