import os import pickle from tkinter import Tk, filedialog import docx2txt import PyPDF2 from sklearn.feature_extraction.text import TfidfVectorizer # Load trained vectorizer and model VECTORIZER_PATH = r'F:\New folder (2)\resume-analyzer\models\vectorizer.pkl' MODEL_PATH = r'F:\New folder (2)\resume-analyzer\models\model.pkl' vectorizer = pickle.load(open(VECTORIZER_PATH, 'rb')) model = pickle.load(open(MODEL_PATH, 'rb')) def extract_text_from_pdf(file_path): try: with open(file_path, 'rb') as file: pdf_reader = PyPDF2.PdfReader(file) return " ".join([page.extract_text() or "" for page in pdf_reader.pages]) except Exception as e: print(f"Error reading PDF: {e}") return "" def extract_text_from_docx(file_path): try: return docx2txt.process(file_path) except Exception as e: print(f"Error reading DOCX: {e}") return "" def predict_resume_category(): # File dialog root = Tk() root.withdraw() # Hide the main window file_path = filedialog.askopenfilename(title="Select Resume File", filetypes=[("Documents", "*.pdf *.docx")]) root.destroy() if not file_path: print("❌ No file selected.") return file_extension = os.path.splitext(file_path)[1].lower() text = "" if file_extension == ".pdf": text = extract_text_from_pdf(file_path) elif file_extension == ".docx": text = extract_text_from_docx(file_path) else: print("❌ Unsupported file type. Please upload a PDF or DOCX.") return if not text.strip(): print("❌ No readable text found in the resume.") return # Predict category input_vector = vectorizer.transform([text]) prediction = model.predict(input_vector) print(f"✅ Predicted Resume Category: {prediction[0]}") if __name__ == "__main__": predict_resume_category()