在当今竞争激烈的就业市场中,一份精心制作的简历至关重要。如何确保你的简历在众多应聘者中脱颖而出?答案是利用人工智能 (AI) 技术来分析和优化你的简历。本文将向你展示如何使用 Python 编程语言和 Google 的 Gemini AI 模型构建一个强大的简历分析器。这款分析器能够根据职位描述,评估简历的匹配度,并提供改进建议,帮助你提升求职成功率。无论你是求职者还是招聘人员,本文都将为你带来极大的价值。
关键要点
使用 Python 编程语言构建 AI 驱动的简历分析器。
利用 Google 的 Gemini AI 模型进行简历分析和职位匹配。
通过上传简历和职位描述,获取简历匹配度评分和改进建议。
理解关键步骤:文本提取、提示工程和结果分析。
学习如何构建具有用户友好界面的 Flask Web 应用程序。
掌握使用 Markdown 格式化输出结果的方法。
根据实际需求自定义和扩展简历分析器功能。
AI 简历分析器:Python 实现指南
项目概述与功能演示
简历分析器旨在帮助用户评估其简历与特定职位描述的匹配程度,并提供改进建议。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

该工具通过上传简历(仅支持 PDF 格式)和粘贴职位描述来实现。分析结果将包括匹配度评分、缺失技能列表以及改进建议。
项目功能:
- 简历上传: 用户可以上传 PDF 格式的简历文件。
- 职位描述输入: 用户可以粘贴职位描述文本。
- AI 驱动分析: 系统利用 AI 技术分析简历内容。
- 匹配度评分: 生成简历与职位描述的匹配度评分(百分制)。
- 缺失技能识别: 识别简历中未提及但职位描述中要求的关键技能。
- 改进建议: 提供针对性的简历优化建议,例如量化成就、突出相关技能等。
功能演示:
立即学习“Python免费学习笔记(深入)”;
首先,展示了用户界面的基本操作。用户可以点击“选择文件”按钮上传简历,并在文本框中粘贴职位描述。然后,点击“分析简历”按钮,系统将开始分析。分析完成后,用户将看到匹配度评分、缺失技能列表和改进建议。
代码准备与环境配置
要构建一个AI简历分析器,首先需要准备合适的开发环境和必要的Python库。这将确保你能顺利运行代码,并与Gemini AI模型进行交互。
1. 开发环境:
- Python 3.6+:确保你的系统安装了 Python 3.6 或更高版本。你可以从 Python 官网下载并安装:https://www.python.org/downloads/
- pip: Python 的包管理工具,用于安装和管理项目依赖。
- 代码编辑器: 选择你喜欢的代码编辑器,例如 VS Code、PyCharm 等。
2. 安装必要的 Python 库:
打开命令行终端,使用 pip 安装以下库:
pip install google-generativeai pymupdf python-dotenv
-
google-generativeai: 用于与 Google 的 Gemini AI 模型进行交互。

-
pymupdf: 用于从 PDF 文件中提取文本。
-
python-dotenv: 用于加载和管理环境变量。
3. Gemini API 密钥:
你需要一个 Google Cloud 项目并启用 Gemini API 才能获取 API 密钥。访问 Google AI Studio 网站:https://aistudio.google.com/,创建一个新的项目并获取 API 密钥。
4. 环境变量设置:
为了安全地存储 API 密钥,建议将其设置为环境变量。创建一个名为 .env 的文件,并在其中添加以下内容:
GEMINI_API_KEY=你的API密钥
然后,使用 python-dotenv 库加载环境变量。
从 PDF 简历中提取文本
在分析简历之前,我们需要从 PDF 文件中提取文本内容。这可以通过 pymupdf 库来实现。

以下代码展示了如何定义一个函数,用于提取 PDF 文件中的文本:
import fitz https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b pymupdf
def extract_text_from_resume(pdf_path):
"""从 PDF 文件中提取文本。"""
doc = fitz.open(pdf_path)
text = ""
for page in doc:
text += page.get_text()
return text
代码解释:
-
import fitz:导入pymupdf库,并使用别名fitz。 -
extract_text_from_resume(pdf_path):定义一个名为extract_text_from_resume的函数,接受 PDF 文件路径作为参数。 -
doc = fitz.open(pdf_path):使用fitz.open()函数打开 PDF 文件。 -
text = "":创建一个空字符串,用于存储提取的文本。 -
for page in doc:遍历 PDF 文件中的每一页。 -
text += page.get_text():使用page.get_text()方法提取当前页面的文本,并将其添加到text字符串中。 -
return text:返回提取的文本。
使用示例:
pdf_path = "kumareshan-Resume.pdf" https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 你的简历 PDF 文件路径 resume_text = extract_text_from_resume(pdf_path) print(resume_text)
这段代码将从 kumareshan-resume.pdf 文件中提取文本,并将其打印到控制台。
提示工程:构建 AI 交互指令
提示工程是与 AI 模型进行有效沟通的关键。一个精心设计的提示 (Prompt) 能够引导 AI 模型生成高质量、符合要求的输出。

以下代码展示了一个用于简历分析的提示:
prompt = f"""
你是一位专业的简历分析师。
请分析以下简历,并根据提供的职位描述给出建议:
简历:
{resume_text}
职位描述:
{job_description}
请执行以下任务:
1. 分析简历与职位描述的匹配度。
2. 给出百分制匹配度评分。
3. 突出显示缺失的技能或经验。
4. 提供改进建议。
请以结构化的格式返回结果:
匹配度评分:XX/100
缺失技能:...
建议:...
总结:...
"""
代码解释:
- 该提示首先定义了 AI 模型的角色:专业的简历分析师。
- 然后,它指示 AI 模型分析简历,并根据提供的职位描述给出建议。
- 提示中包含了简历内容
{resume_text}和职位描述{job_description}的占位符,将在后续步骤中被实际内容替换。 - 提示明确了 AI 模型需要执行的任务:匹配度分析、缺失技能识别和改进建议。
- 最后,提示要求 AI 模型以结构化的格式返回结果,方便用户阅读和理解。
使用示例:
在后续步骤中,你需要将提取的简历文本和职位描述文本分别赋值给 {resume_text} 和 {job_description} 占位符,然后将整个提示发送给 AI 模型。
配置Gemini Pro模型
为了使用 Gemini Pro 模型,需要进行一些配置。

以下代码展示了如何配置 API 密钥和模型参数:
import os
import google.generativeai as genai
from dotenv import load_dotenv
load_dotenv()
genai.configure(api_key=os.getenv('GEMINI_API_KEY'))
model = genai.GenerativeModel('gemini-pro')
代码解释:
-
import os:导入os库,用于访问环境变量。 -
import google.generativeai as genai:导入google-generativeai库,并使用别名genai。 -
from dotenv import load_dotenv:从python-dotenv库中导入load_dotenv函数。 -
load_dotenv():加载.env文件中的环境变量。 -
genai.configure(api_key=os.getenv('GEMINI_API_KEY')):配置 Gemini API 密钥。os.getenv('GEMINI_API_KEY')用于从环境变量中获取 API 密钥。 -
model = genai.GenerativeModel('gemini-pro'):创建一个 Gemini Pro 模型实例。gemini-pro是 Gemini Pro 模型的名称。
模型参数配置:
Gemini Pro 模型提供了一些参数,可以用于控制生成文本的质量和多样性。以下代码展示了如何配置模型参数:
configuration = {
"temperature": 1,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 8192
}
model = genai.GenerativeModel(model_name='gemini-pro', generation_config=configuration)
参数解释:
-
temperature:控制生成文本的随机性。值越高,文本越随机。范围:0.0 - 1.0。 -
top_p:控制生成文本的多样性。值越高,文本越多样。范围:0.0 - 1.0。 -
top_k:控制生成文本的候选词数量。值越高,候选词越多。范围:1 - 100。 -
max_output_tokens:限制生成文本的最大 token 数量。范围:1 - 8192。
你可以根据实际需求调整这些参数,以获得最佳的分析效果。
使用 Gemini AI 分析简历
配置好 Gemini Pro 模型后,就可以使用它来分析简历了。

以下代码展示了如何将简历文本和职位描述文本传递给模型,并获取分析结果:
def analyse_resume_gemini(resume_content, job_description):
"""使用 Gemini AI 分析简历。"""
prompt = f"""
你是一位专业的简历分析师。
请分析以下简历,并根据提供的职位描述给出建议:
简历:
{resume_content}
职位描述:
{job_description}
请执行以下任务:
1. 分析简历与职位描述的匹配度。
2. 给出百分制匹配度评分。
3. 突出显示缺失的技能或经验。
4. 提供改进建议。
请以结构化的格式返回结果:
匹配度评分:XX/100
缺失技能:...
建议:...
总结:...
"""
response = model.generate_content(prompt)
return response.text
https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 获取简历文本和职位描述
resume_text = extract_text_from_resume(pdf_path)
job_description = "We are hiring a front end developer"
https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 分析简历
result = analyse_resume_gemini(resume_text, job_description)
https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 打印分析结果
print(result)
代码解释:
-
def analyse_resume_gemini(resume_content, job_description):定义一个名为analyse_resume_gemini的函数,接受简历文本和职位描述文本作为参数。 -
prompt = f"""...""":创建包含简历文本和职位描述文本的提示。 -
response = model.generate_content(prompt):使用 Gemini Pro 模型生成内容。prompt是传递给模型的提示。 -
return response.text:返回生成的文本结果。
运行这段代码,你将会看到 Gemini Pro 模型生成的简历分析结果,包括匹配度评分、缺失技能和改进建议。
构建 Flask Web 应用程序界面
为了方便用户使用简历分析器,我们可以构建一个简单的 Flask Web 应用程序界面。

以下代码展示了如何创建一个基本的 Flask 应用程序:
from flask import Flask, request, render_template
from analyse_pdf import analyse_resume_gemini, extract_text_from_resume
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'uploads'
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
resume_file = request.files['resume']
job_description = request.form['job_description']
pdf_path = os.path.join(app.config['UPLOAD_FOLDER'], resume_file.filename)
resume_file.save(pdf_path)
resume_content = extract_text_from_resume(pdf_path)
result = analyse_resume_gemini(resume_content, job_description)
return render_template('index.html', result=result)
return render_template('index.html', result=None)
代码解释:
-
from flask import Flask, request, render_template:从flask库中导入必要的模块。 -
app = Flask(__name__):创建一个 Flask 应用程序实例。 -
app.config['UPLOAD_FOLDER'] = 'uploads':设置上传文件夹。 -
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True):创建上传文件夹(如果不存在)。 -
@app.route('/', methods=['GET', 'POST']):定义路由,处理 GET 和 POST 请求。 -
if request.method == 'POST':判断请求方法是否为 POST。 -
resume_file = request.files['resume']:获取上传的简历文件。 -
job_description = request.form['job_description']:获取职位描述文本。 -
pdf_path = os.path.join(app.config['UPLOAD_FOLDER'], resume_file.filename):构建 PDF 文件的保存路径。 -
resume_file.save(pdf_path):保存 PDF 文件。 -
resume_content = extract_text_from_resume(pdf_path):提取简历文本。 -
result = analyse_resume_gemini(resume_content, job_description):分析简历。 -
return render_template('index.html', result=result):渲染index.html模板,并将分析结果传递给模板。 -
return render_template('index.html', result=None):如果请求方法为 GET,则渲染index.html模板,不传递分析结果。
创建 index.html 模板:
在 templates 文件夹中创建一个名为 index.html 的文件,并添加以下内容:
简历分析器
简历分析器
{% if result %}
分析结果:
{{ result }}
{% endif %}










