Sourcecode
Sourcecode
- Sneha T
Index.html
<!DOCTYPE html>
<html>
<head>
<title>Resume Analyzer</title>
<style>
body.dark-mode {
background-color: #1a1a1a;
color: #ffffff;
</style>
<script>
function toggleDarkMode() {
themeStyleLink.addEventListener('transitionend', () => {
themeStyleLink.removeEventListener('transitionend', arguments.callee);
themeStyleLink.href = body.classList.contains('dark-mode')
? "{{ url_for('static', filename='styles.css') }}"
});
body.classList.toggle('dark-mode');
</script>
</head>
<body>
<style>
body {
background-image: url('img1.jpg');
</style>
<center>
<img src="https://ideogram.ai/api/images/direct/qtam5-HIR62mza3EqF_FPQ.jpg"
width="150" height="150" alt="Flowers in Chania">
<h1>Resume Analyzer</h1>
</center>
<div id="dark-mode-toggle-slider"></div>
</label>
<form action="/" method="post" enctype="multipart/form-data">
<br>
<br>
</form>
<br>
{% if results %}
<h2>Ranked Resumes:</h2>
<table>
<tr>
<th>Rank</th>
<th>Name</th>
<th>Email</th>
<th>Similarity in %</th>
</tr>
<tr>
{% endfor %}
</table>
{% if results %}
<br>
Download CSV
</a>
{% endif %}
{% endif %}
</body>
</html>
Styles.css
body,
h1,
h2,
p,
table,
th,
td {
margin: 0;
padding: 0;
body:not(.dark-mode) {
background-color: #ffffff;
color: #000000;
body.dark-mode {
background-color: #1a1a1a;
color: #ffffff;
#dark-mode-toggle-label {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
#dark-mode-toggle-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
border-radius: 34px;
transition: 0.4s;
#dark-mode-toggle-slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: #ffffff;
border-radius: 50%;
transition: 0.4s;
#dark-mode-toggle:checked+#dark-mode-toggle-slider {
background-color: #2196F3;
}
#dark-mode-toggle:checked+#dark-mode-toggle-slider:before {
transform: translateX(26px);
body.dark-mode label {
color: #000000;
/* Basic styling */
body {
background-color: #f2f2f2;
color: #333;
padding: 20px;
h1 {
margin-bottom: 20px;
/* Form styling */
form {
background-color: #fff;
padding: 20px;
border-radius: 8px;
label,
input[type="file"],
textarea,
input[type="submit"] {
display: block;
margin-bottom: 10px;
input[type="file"] {
margin-top: 5px;
textarea {
width: 100%;
padding: 1px;
border-radius: 4px;
resize: vertical;
}
input[type="submit"] {
background-color: #007bff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
/* Table styling */
table {
border-collapse: collapse;
width: 100%;
margin-top: 20px;
th,
td {
padding: 8px;
text-align: left;
th {
background-color: #f2f2f2;
}
/* Responsive layout */
form {
width: 100%;
padding: 15px;
App.py
import spacy
import PyPDF2
import re
import csv
import os
app = Flask(__name__)
nlp = spacy.load("en_core_web_sm")
def extract_text_from_pdf(pdf_path):
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
text += page.extract_text()
return text
def extract_entities(text):
if names:
def index():
results = []
if request.method == 'POST':
job_description = request.form['job_description']
resume_files = request.files.getlist('resume_files')
# Create a directory for uploads if it doesn't exist
if not os.path.exists("uploads"):
os.makedirs("uploads")
processed_resumes = []
resume_file.save(resume_path)
resume_text = extract_text_from_pdf(resume_path)
# TF-IDF vectorizer
tfidf_vectorizer = TfidfVectorizer()
job_desc_vector = tfidf_vectorizer.fit_transform([job_description])
ranked_resumes = []
resume_vector = tfidf_vectorizer.transform([resume_text])
results = ranked_resumes
@app.route('/download_csv')
def download_csv():
csv_content = "Rank,Name,Email,Similarity\n"
csv_content += f"{rank},{name},{email},{similarity}\n"
csv_filename = "ranked_resumes.csv"
csv_file.write(csv_content)
if __name__ == '__main__':
app.run(debug=True)
ResumeRanker.py
import spacy
import PyPDF2
import re
import csv
csv_filename = "ranked_resumes.csv"
nlp = spacy.load("en_core_web_sm")
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
text += page.extract_text()
return text
def extract_entities(text):
if names:
tfidf_vectorizer = TfidfVectorizer()
job_desc_vector = tfidf_vectorizer.fit_transform([job_description])
ranked_resumes = []
resume_text = extract_text_from_pdf(resume_path)
resume_vector = tfidf_vectorizer.transform([resume_text])
csv_writer = csv.writer(csvfile)