智能简历解析系统 Skill
核心功能
- 多格式支持:PDF (.pdf)、Word (.docx/.doc)、图片 (.jpg/.png/.webp) 格式简历解析
- 信息提取:自动识别并提取以下核心信息:
- 个人基本信息(姓名、电话、邮箱、年龄、性别、所在地)
- 教育经历(学校、专业、学历、起止时间、GPA、相关课程)
- 工作经历(公司名称、职位、起止时间、工作内容、业绩成果)
- 项目经历(项目名称、角色、起止时间、项目描述、技术栈、成果)
- 技能栈(编程语言、框架、工具、软技能、语言能力)
- 证书、获奖经历、自我评价
- 匹配度分析:输入岗位JD后自动计算简历匹配度,从技能匹配、经验匹配、学历匹配等多维度打分
- 优化建议:针对简历不足生成具体优化建议,包括内容补充、表述优化、结构调整
- 数据导出:支持JSON/Markdown格式导出结构化简历数据
工作流程
- 当用户上传简历文件或提供简历路径时,先调用对应解析脚本提取文本内容
- 将提取的文本传入大模型进行结构化信息提取,输出标准JSON格式
- 如果用户提供了岗位JD,按照以下严格规则进行匹配度分析:
- 第一步:先区分JD中的「核心要求」和「加分要求」:核心要求占比80%权重,加分要求占20%
- 第二步:严格匹配核心要求:核心要求只要有一项不满足,整体评分上限不超过60分;2项及以上不满足,上限不超过40分
- 第三步:加权计算总分:严格按照各维度权重计算,禁止主观加分
- 第四步:客观说明匹配情况:必须明确说明「完全匹配/基本匹配/不匹配」,禁止模糊表述
- 最终返回结构化结果 + 严格的分析报告 + 可落地优化建议
匹配度评分严格规则
- 90-100分:完全匹配:所有核心要求100%满足,加分要求满足80%以上,有超出要求的亮点
- 70-89分:基本匹配:核心要求全部满足,加分要求满足50%以上,无明显核心短板
- 60-69分:勉强匹配:核心要求基本满足,有1项非关键核心要求不满足,加分要求满足30%以上,可以进入面试
- <60分:不匹配:核心要求有2项及以上不满足,或有1项关键核心要求不满足,不符合岗位基本要求
核心要求判定规则
- 岗位JD中明确标注「必须」「要求」「需具备」的技能/经验
- 岗位名称对应的核心能力(如AI算法岗必须懂深度学习,后端岗必须懂编程语言)
- 明确的工作年限、学历要求
脚本使用
1. PDF文本提取
python scripts/extract_pdf.py <input-pdf-path>
返回纯文本内容
2. Word文本提取
python scripts/extract_docx.py <input-docx-path>
返回纯文本内容
3. 图片OCR提取
python scripts/extract_image.py <input-image-path>
返回OCR识别的文本内容
4. 结构化解析
python scripts/parse_resume.py <extracted-text-file>
返回结构化JSON数据
5. 匹配度分析
python scripts/match_jd.py <resume-json-path> <jd-text-path>
返回匹配度分析结果
输出格式规范
结构化简历JSON格式
{
"basic_info": {
"name": "",
"phone": "",
"email": "",
"age": null,
"gender": "",
"location": "",
"work_years": null
},
"education": [
{
"school": "",
"major": "",
"degree": "",
"start_date": "",
"end_date": "",
"gpa": "",
"courses": []
}
],
"work_experience": [
{
"company": "",
"position": "",
"start_date": "",
"end_date": "",
"description": "",
"achievements": [],
"technologies": []
}
],
"projects": [
{
"name": "",
"role": "",
"start_date": "",
"end_date": "",
"description": "",
"technologies": [],
"achievements": []
}
],
"skills": {
"technical": [],
"soft": [],
"languages": []
},
"certificates": [],
"awards": [],
"self_assessment": ""
}
匹配度分析格式
{
"overall_score": 0-100,
"dimensions": [
{
"name": "核心技能匹配",
"score": 0-100,
"weight": 0.4,
"matched": ["匹配的核心技能列表"],
"missing": ["缺失的核心技能列表"],
"analysis": "详细分析说明"
},
{
"name": "岗位职责匹配",
"score": 0-100,
"weight": 0.3,
"matched": ["匹配的职责经验"],
"gap": "职责差距描述",
"analysis": "详细分析说明"
},
{
"name": "经验/资历匹配",
"score": 0-100,
"weight": 0.15,
"matched": ["匹配的经验点"],
"gap": "经验差距描述",
"analysis": "详细分析说明"
},
{
"name": "学历/背景匹配",
"score": 0-100,
"weight": 0.15,
"matched": "匹配结果描述",
"gap": "背景差距描述(如果有)",
"analysis": "详细分析说明"
}
],
"overall_analysis": "整体匹配情况总结,明确说明是否匹配",
"strengths": ["简历优势列表"],
"weaknesses": ["简历不足列表,必须明确核心差距"],
"suggestions": ["具体的优化建议列表"]
}
依赖安装
首次使用前安装依赖:
pip install PyPDF2 python-docx pytesseract pillow python-multipart
注意:OCR功能需要安装Tesseract引擎