← 返回
未分类

HR简历分析评分报告

简历批量筛选打分工具。支持PDF/Word/TXT格式简历解析,基于JD进行匹配度分析,多维度评分,生成Excel/JSON/Markdown报告。当用户需要筛选简历、批量评估候选人、简历打分、匹配度分析、生成筛选报告时触发此技能。适用于HR、猎头、招聘团队。
简历批量筛选打分工具。支持PDF/Word/TXT格式简历解析,基于JD进行匹配度分析,多维度评分,生成Excel/JSON/Markdown报告。当用户需要筛选简历、批量评估候选人、简历打分、匹配度分析、生成筛选报告时触发此技能。适用于HR、猎头、招聘团队。
jiuwu_0
未分类 community v1.0.3 4 版本 100000 Key: 无需
★ 0
Stars
📥 31
下载
💾 0
安装
4
版本
#latest

概述

简历批量筛选打分技能

概述

本技能提供完整的简历筛选解决方案:解析简历文件、基于JD匹配度分析、多维度自动评分、批量处理、生成结构化报告。

核心能力

  • 支持 PDF、Word、TXT、Markdown 格式简历解析
  • 基于职位描述(JD)的智能匹配度分析
  • 5维度评分体系:学历、经验、技能匹配、行业匹配、稳定性
  • 批量处理 + Excel/JSON/Markdown 报告输出

使用场景

| 场景 | 触发词示例 |

|------|-----------|

| 直接发送简历 | 用户直接发送简历文件(PDF/Word/TXT) |

| 批量筛选 | "帮我筛选这批简历"、"简历打分"、"简历筛选" |

| JD匹配 | "看这些简历和JD匹配度"、"按岗位要求筛选" |

| 生成报告 | "生成简历评分报告"、"输出Excel筛选结果" |

| 单份评估 | "评估这份简历"、"给这个候选人打分" |

工作流程

模式一:用户直接发送简历(推荐)

当用户直接发送简历文件时,按以下流程处理:

用户发送简历文件
  ↓
┌─────────────────────────────────────┐
│ 1. 自动检测文件                      │
│    - 识别文件格式(PDF/Word/TXT)    │
│    - 获取文件路径                    │
└─────────────────────────────────────┘
  ↓
┌─────────────────────────────────────┐
│ 2. 询问JD(如未提供)                │
│    - "请提供岗位描述(JD),           │
│       或输入'跳过'进行基础评分"      │
└─────────────────────────────────────┘
  ↓
┌─────────────────────────────────────┐
│ 3. 解析并评分                        │
│    - 解析简历内容                    │
│    - 提取关键信息                    │
│    - 多维度评分                      │
└─────────────────────────────────────┘
  ↓
┌─────────────────────────────────────┐
│ 4. 即时反馈                          │
│    - 展示候选人信息摘要              │
│    - 显示评分结果                    │
│    - 给出录用建议                    │
└─────────────────────────────────────┘

处理步骤

  1. 检测文件:用户发送文件后,自动识别为简历文件
  2. 询问JD:如对话中未提供JD,询问用户是否提供岗位描述
  3. 解析简历:使用 ResumeParser.parse_file() 解析文件
  4. 评分分析:使用 ResumeScorer.score_resume() 进行评分
  5. 展示结果:以Markdown格式展示候选人信息和评分结果

输出格式

## 📋 简历解析结果

**候选人**: 张三
**文件名**: 张三_前端开发.pdf

### 基本信息
- 📱 电话: 13800138000
- 📧 邮箱: zhangsan@email.com
- 🎓 学历: 本科
- 💼 经验: 5年

### 技能列表
React, Vue, TypeScript, Node.js, Webpack

### 评分结果

| 维度 | 分数 | 说明 |
|------|------|------|
| 学历背景 | 70 | 本科 |
| 工作经验 | 85 | 5年经验 |
| 技能匹配 | 90 | 高度匹配 |
| 稳定性 | 80 | 较为稳定 |

**总分**: 82.5
**匹配等级**: A-高度匹配
**建议**: 推荐 - 建议安排面试

模式二:指定文件路径/目录

当用户指定文件路径或目录时,按以下流程处理:

用户提供路径
  ↓
┌─────────────────────────────────────┐
│ 1. 确认输入                         │
│    - 简历文件/目录路径               │
│    - JD文本/文件(可选)               │
│    - 输出格式(默认Excel)             │
└─────────────────────────────────────┘
  ↓
┌─────────────────────────────────────┐
│ 2. 批量解析                         │
│    - 遍历目录文件                    │
│    - 逐个解析简历                    │
│    - 收集结构化数据                  │
└─────────────────────────────────────┘
  ↓
┌─────────────────────────────────────┐
│ 3. 批量评分                         │
│    - 基础维度评分                    │
│    - JD匹配度计算(如有JD)            │
│    - 按分数排序                      │
└─────────────────────────────────────┘
  ↓
┌─────────────────────────────────────┐
│ 4. 生成报告                         │
│    - 输出Excel/JSON/Markdown         │
│    - 展示筛选摘要                    │
└─────────────────────────────────────┘

步骤详解

Step 1: 确认输入

向用户确认:

  1. 简历位置:文件路径、目录路径,或用户直接发送文件
  2. JD信息:职位描述文本或文件路径(可选)
  3. 输出格式:Excel(默认)、JSON、Markdown
  4. 输出路径:默认当前目录下

Step 2: 解析简历

调用脚本 scripts/resume_scorer.py 中的 ResumeParser

from resume_scorer import ResumeParser

# 解析单个文件
resume = ResumeParser.parse_file("path/to/resume.pdf")

# 返回结构化数据
print(resume.name)           # 候选人姓名
print(resume.phone)          # 电话
print(resume.email)          # 邮箱
print(resume.education)      # 学历列表
print(resume.experience_years)  # 工作年限
print(resume.skills)         # 技能列表

Step 3: 评分分析

使用 ResumeScorer 进行多维度评分:

from resume_scorer import ResumeScorer, JDMatcher

# 初始化评分器
scorer = ResumeScorer()

# 解析JD(如有)
jd_requirements = JDMatcher.parse_jd(jd_text)

# 评分
result = scorer.score_resume(resume, jd_requirements)

print(result.total_score)       # 总分(0-100)
print(result.match_level)       # 匹配等级(S/A/B/C/D/E)
print(result.dimension_scores)  # 各维度分数
print(result.strengths)         # 优势
print(result.concerns)          # 关注点
print(result.recommendation)    # 录用建议

Step 4: 批量处理

使用 BatchProcessor 批量处理:

from resume_scorer import BatchProcessor, ReportGenerator

processor = BatchProcessor()

# 处理整个目录
results = processor.process_directory("path/to/resumes/", jd_text)

# 生成Excel报告
ReportGenerator.to_excel(results, "筛选报告.xlsx")

# 生成Markdown报告
ReportGenerator.to_markdown(results, "筛选报告.md")

评分维度

| 维度 | 权重 | 说明 |

|------|------|------|

| 学历背景 | 15% | 博士/硕士/本科/大专 |

| 工作经验 | 25% | 年限 + 大厂/行业经验 |

| 技能匹配 | 30% | 与JD技能要求的匹配度 |

| 行业匹配 | 20% | 同行业/相关行业/跨行业 |

| 工作稳定性 | 10% | 平均在职时长 |

匹配等级

  • S (90-100): 极匹配,强烈推荐
  • A (80-89): 高度匹配,推荐面试
  • B (70-79): 较为匹配,建议面试
  • C (60-69): 基本匹配,可考虑
  • D (50-59): 部分匹配,谨慎考虑
  • E (<50): 匹配度低,不推荐

详细评分标准见 references/scoring_criteria.md

人物画像分析

分析维度

| 维度 | 说明 | 分析方法 |

|------|------|----------|

| 性格特征 | 领导力、执行力、创新力等 | 关键词分析 |

| 工作风格 | 技术驱动/业务导向/管理型/研究型 | 内容分析 |

| 职业动机 | 技术成长/薪资/发展/平衡 | 关键词分析 |

| 职业倾向 | 管理方向/专家方向/业务方向 | 经验分析 |

| 领导潜力 | 高/中等/需评估 | 管理经验分析 |

| 团队适配 | 协作型/独立型/灵活型 | 工作方式分析 |

输出示例

#### 👤 人物画像
- **性格特征**: 领导力、执行力、协作力
- **工作风格**: 技术驱动型
- **职业倾向**: 管理方向
- **领导潜力**: 高领导潜力
- **团队适配**: 适合协作型团队
- **总结**: 候选人表现出领导力、执行力、协作力等特质,属于技术驱动型,职业倾向为管理方向。高领导潜力,适合协作型团队。

简历真实性检查

检查维度

| 维度 | 说明 | 风险指标 |

|------|------|----------|

| 时间一致性 | 工作经历时间是否重叠 | 时间矛盾 |

| 描述真实性 | 是否存在夸大或模糊描述 | 夸大描述、模糊描述 |

| 经验合理性 | 经验与年限是否匹配 | 经验与年龄不符 |

| 跳槽频率 | 是否频繁跳槽 | 频繁跳槽 |

| 学历验证 | 学历信息是否可信 | 教育时间异常 |

风险等级

| 等级 | 分数区间 | 建议 |

|------|---------|------|

| 低风险 | 80-100 | 简历信息较为可信 |

| 中等风险 | 60-79 | 建议面试中深入了解 |

| 较高风险 | 40-59 | 建议深度背景调查 |

| 高风险 | 0-39 | 要求提供第三方证明 |

红旗标记

常见可疑模式:

  • 夸大描述:"精通所有"、"全栈精通"
  • 模糊描述:"参与项目"、"协助工作"
  • 时间矛盾:工作经历时间重叠
  • 经验不符:工作年限与技能不匹配

输出示例

#### 🔍 真实性检查
- **真实性评分**: 85/100
- **风险等级**: 低风险
- **验证要点**:
  - 要求提供学历证书或学信网验证
  - 要求提供离职证明或社保记录
  - 通过技术面试验证核心技能

在职时长预估

预估因素

| 因素 | 权重 | 说明 |

|------|------|------|

| 历史平均在职时长 | 35% | 过往工作稳定性 |

| 跳槽频率趋势 | 20% | 最近跳槽是否更频繁 |

| 职业发展阶段 | 15% | 初级/成长期/稳定期/资深 |

| 行业特性 | 10% | 互联网/传统行业/创业 |

| 职位匹配度 | 10% | 与JD的匹配程度 |

风险等级

| 等级 | 预估时长 | 留任概率 |

|------|---------|---------|

| 低风险 | 3年以上 | 高 |

| 中等风险 | 1-3年 | 中 |

| 高风险 | 1年以下 | 低 |

输出示例

#### ⏱️ 在职预估
- **预估在职时长**: 2-3年
- **留任风险**: 低风险

命令行用法

# 基础用法:筛选目录下所有简历
python scripts/resume_scorer.py ./resumes/

# 指定JD文件
python scripts/resume_scorer.py ./resumes/ --jd ./jd.txt

# 直接输入JD文本
python scripts/resume_scorer.py ./resumes/ --jd-text "岗位要求:3年以上Python经验..."

# 指定输出格式和路径
python scripts/resume_scorer.py ./resumes/ --format excel --output 筛选结果.xlsx

# JSON格式输出
python scripts/resume_scorer.py ./resumes/ --format json --output results.json

# Markdown格式输出
python scripts/resume_scorer.py ./resumes/ --format markdown --output report.md

输出报告示例

Excel报告字段

| 字段 | 说明 |

|------|------|

| 排名 | 按总分排序 |

| 文件名 | 原始文件名 |

| 候选人 | 提取的姓名 |

| 总分 | 加权总分(0-100) |

| 匹配等级 | S/A/B/C/D/E |

| 学历得分 | 学历维度分数 |

| 经验得分 | 经验维度分数 |

| 技能匹配 | 技能维度分数 |

| 稳定性 | 稳定性维度分数 |

| 优势 | 候选人亮点 |

| 关注点 | 需注意问题 |

| 建议 | 录用建议 |

依赖安装

# PDF解析 (二选一)
pip install PyMuPDF
# 或
pip install pdfplumber

# Word解析
pip install python-docx

# Excel输出
pip install pandas openpyxl

文件限制

| 限制类型 | 限制值 | 说明 |

|---------|--------|------|

| 单个文件大小 | 10MB | 超过会提示压缩或拆分 |

| 批量处理总大小 | 100MB | 超过会提示分批处理 |

| 支持的文件格式 | PDF, .docx, .txt, .md | 不支持扫描版PDF和旧版.doc |

文件大小限制说明

单个文件限制 (10MB)

  • 超过限制会显示详细的错误信息
  • 提供压缩建议和工具链接
  • 说明如何减小文件大小

批量处理限制 (100MB)

  • 处理前会自动检查总大小
  • 超过限制会提示分批处理
  • 显示当前文件数量和总大小

错误处理

本技能提供详细的错误提示和解决方案,帮助用户快速定位和解决问题。

常见错误类型

1. 文件不存在

❌ 文件不存在: C:/Users/xxx/resume.pdf

💡 解决方案:
1. 检查文件路径是否正确
2. 确认文件是否已被移动或删除
3. 使用绝对路径,例如:C:/Users/xxx/resume.pdf
4. 检查文件名是否有特殊字符或空格

📁 当前工作目录:C:/Users/Administrator

2. 文件大小超限

❌ 文件大小超限: resume.pdf (15.2MB > 10MB)

💡 解决方案:
1. 当前文件大小:15.2MB,超过限制:10MB
2. 如果是PDF文件,尝试压缩:https://smallpdf.com/compress-pdf
3. 如果是Word文件,尝试:
   - 压缩文档中的图片
   - 删除不必要的内容
   - 另存为新文档
4. 联系管理员调整文件大小限制

📊 限制说明:
- 单个文件最大:10MB
- 批量处理总大小最大:100MB

3. 不支持的文件格式

❌ 不支持的文件格式: .jpg

💡 解决方案:
当前文件格式:.jpg
支持的文件格式:.pdf, .docx, .doc, .txt, .md

🔧 格式转换建议:
1. PDF → 直接使用(推荐)
2. Word → 使用.docx格式(推荐)
3. 图片型简历 → 无法解析,需要文本型简历
4. WPS文档 → 另存为.docx格式
5. 其他格式 → 复制内容到.txt文件

4. PDF解析失败

❌ 文件内容为空: resume.pdf

💡 解决方案:
文件内容为空,无法解析。

🔧 可能原因:
1. 文件确实是空的
2. 文件内容是图片(无法提取文字)
3. 文件损坏

💡 建议:
1. 检查文件是否正常打开
2. 如果是扫描版简历,需要文本型简历
3. 联系候选人重新发送

5. Word文件损坏

❌ Word文件损坏:resume.docx

💡 解决方案:
Word文件损坏,可能是旧版.doc格式或文件不完整。

🔧 尝试以下方法:
1. 用Microsoft Word打开并修复
2. 另存为新文档后重试
3. 联系候选人重新发送

6. 编码错误

❌ 文件编码错误: resume.txt

💡 解决方案:
文件编码不是UTF-8,无法正常读取中文内容。

🔧 尝试以下方法:
1. 用记事本打开文件
2. 点击"文件" → "另存为"
3. 编码选择"UTF-8"
4. 保存后重试

7. 权限不足

❌ 文件访问权限不足:resume.pdf

💡 解决方案:
1. 关闭正在使用该文件的程序
2. 以管理员身份运行
3. 检查文件是否被设置为只读
4. 复制文件到其他位置后重试

8. 批量处理超限

❌ 批量处理大小超限: 150.5MB > 100MB

💡 解决方案:
批量处理文件总大小超限。

📊 当前状态:
- 文件数量:150 个
- 总大小:150.5MB
- 限制:100MB

🔧 建议:
1. 分批处理:每次处理部分文件
2. 删除不必要的文件
3. 压缩大文件后重试
4. 联系管理员调整限制

错误处理最佳实践

  1. 遇到错误时:仔细阅读错误信息和解决方案
  2. 文件格式问题:优先使用PDF或.docx格式
  3. 文件大小问题:压缩图片或删除不必要内容
  4. 编码问题:使用UTF-8编码保存文件
  5. 批量处理:控制文件数量和总大小

联系支持

如果按照解决方案仍无法解决问题:

  1. 记录完整的错误信息
  2. 说明文件类型和大小
  3. 提供操作系统和Python版本
  4. 联系技术支持获取帮助

注意事项

  1. 文件格式:确保简历文件格式正确,PDF推荐使用文本型PDF
  2. 编码问题:中文简历建议使用UTF-8编码
  3. 批量数量:单次建议不超过100份,大批量请分批处理
  4. JD质量:JD越详细,匹配分析越准确
  5. 人工复核:自动评分仅供参考,重要岗位建议人工复核

参考文档

  • 评分标准详情:references/scoring_criteria.md
  • 简历解析指南:references/resume_parsing_guide.md
  • 人物画像与真实性检查:references/personality_analysis_guide.md

附录:对话式简历解析指南

场景A:用户直接发送简历文件

当用户在对话中直接发送简历文件时,按以下步骤处理:

1. 识别文件

用户发送的文件会自动保存到工作目录。检测文件扩展名:

  • .pdf → PDF简历
  • .docx / .doc → Word简历
  • .txt / .md → 文本简历

2. 解析并展示结果

# 获取用户发送的文件路径(从工作目录)
import glob
from resume_scorer import ResumeParser, ResumeScorer, JDMatcher

# 查找最新的简历文件
resume_files = glob.glob("*.pdf") + glob.glob("*.docx") + glob.glob("*.txt")
if resume_files:
    file_path = resume_files[-1]  # 取最新文件

    # 解析简历
    resume = ResumeParser.parse_file(file_path)

    # 评分(无JD时使用基础评分)
    scorer = ResumeScorer()
    result = scorer.score_resume(resume)

    # 格式化输出
    print(f"## 📋 简历解析结果\n")
    print(f"**候选人**: {resume.name}")
    print(f"**文件名**: {resume.filename}\n")
    print(f"### 基本信息")
    print(f"- 📱 电话: {resume.phone or '未提供'}")
    print(f"- 📧 邮箱: {resume.email or '未提供'}")
    print(f"- 🎓 学历: {', '.join(resume.education) if resume.education else '未提供'}")
    print(f"- 💼 经验: {resume.experience_years}年\n")
    print(f"### 技能列表")
    print(f"{', '.join(resume.skills) if resume.skills else '未识别到明确技能'}\n")
    print(f"### 评分结果")
    print(f"| 维度 | 分数 |")
    print(f"|------|------|")
    for dim, score in result.dimension_scores.items():
        print(f"| {dim} | {score} |")
    print(f"\n**总分**: {result.total_score}")
    print(f"**匹配等级**: {result.match_level}")
    print(f"**建议**: {result.recommendation}")

3. 询问是否需要JD匹配

展示基础评分后,询问用户:

是否提供岗位描述(JD)进行更精准的匹配分析?
- 提供JD文本 → 进行JD匹配度分析
- 输入"跳过" → 保持基础评分

场景B:用户发送多个简历文件

当用户一次发送多个简历文件时:

  1. 收集所有文件:遍历工作目录中的简历文件
  2. 批量解析:逐个解析并评分
  3. 汇总展示:按分数排序,展示排名表
  4. 询问是否导出:是否需要生成Excel/JSON报告
## 📊 批量简历筛选结果

共解析 5 份简历

| 排名 | 候选人 | 总分 | 等级 | 建议 |
|------|--------|------|------|------|
| 1 | 张三 | 85.5 | A | 推荐面试 |
| 2 | 李四 | 78.0 | B | 建议面试 |
| 3 | 王五 | 72.5 | B | 建议面试 |
| 4 | 赵六 | 65.0 | C | 可考虑 |
| 5 | 钱七 | 55.0 | D | 谨慎考虑 |

是否需要生成详细的Excel报告?

场景C:用户粘贴简历文本

当用户直接粘贴简历内容时:

  1. 保存为临时文件:将文本保存为 temp_resume.txt
  2. 解析并评分:使用标准流程处理
  3. 展示结果:即时反馈评分结果
# 保存用户粘贴的文本
with open("temp_resume.txt", "w", encoding="utf-8") as f:
    f.write(user_pasted_text)

# 解析并评分
resume = ResumeParser.parse_file("temp_resume.txt")
result = scorer.score_resume(resume)

最佳实践

  1. 即时反馈:用户发送文件后,立即解析并展示结果
  2. 渐进式分析:先展示基础评分,再询问是否需要JD匹配
  3. 清晰展示:使用表格和格式化输出,便于阅读
  4. 灵活导出:根据用户需求生成不同格式的报告
  5. 错误处理:解析失败时给出明确提示和解决建议

版本历史

共 4 个版本

  • v1.0.3 1.限制单个文件大小不大于10M、限制总文件大小不大于100M,避免因文件过大导致运行过载,处理时间过长。2.文本文件支持多种编码(UTF-8、GBK、GB2312)3.处理完成后显示摘要统计 当前
    2026-06-05 10:13 安全 安全
  • v1.0.2 1.新增简历中的人物画像分析。2.新增简历的项目以及经历真实性分析。3.新增在职时长预估以及风险预估
    2026-06-04 17:54 安全 安全
  • v1.0.1 可以直接发送简历,进行解析测评。而不是告诉简历存放的位置
    2026-06-04 17:27 安全 安全
  • v1.0.0 Initial release
    2026-06-04 17:16 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

business-ops

Discord

steipete
当需要通过discord工具控制Discord时使用:发送消息、添加反应、发布或上传表情包、上传表情、创建投票、管理帖子/置顶/搜索、获取权限或成员/角色/频道信息,或在Discord私信或频道中处理管理操作。
★ 80 📥 38,093
business-ops

Trello

steipete
使用 Trello REST API 管理看板、列表和卡片
★ 162 📥 41,329
business-ops

Stripe

byungkyu
Stripe API 集成,支持托管 OAuth,实现对客户、订阅、发票、产品、价格和支付的可写金融集成。
★ 27 📥 26,092