File size: 4,364 Bytes
99bbd64 8683e61 99bbd64 89ac774 8683e61 99bbd64 f40468d 99bbd64 89509c4 99bbd64 7dbf682 9e0b38e 99bbd64 ba60b2c 9e0b38e 7dbf682 f40468d 7dbf682 6e78f7b fa24c7d 4aba3cf bcc36a0 4d13280 bcc36a0 24a440f 4696f89 a3cdaed 4696f89 8683e61 c7e63c1 4696f89 fa24c7d 9e0b38e fa24c7d 24a440f 194b1f0 fa24c7d 6e78f7b 89ac774 c7e63c1 a587148 89509c4 fa24c7d 2e32f9d 7b15466 71694b0 9597d26 0d1fe0d 7b15466 0d1fe0d 2e32f9d 9e0b38e d21275b 8683e61 1e4a1c0 55d1a9e 1e4a1c0 621b61f c7e63c1 621b61f 55d1a9e 621b61f 55d1a9e bc7a2c2 c7e63c1 fe7685d 7c6dbbd fe7685d 1b39389 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
#Fast APi Packages
from fastapi import FastAPI,File, UploadFile
from pydantic import BaseModel
import json
from typing_extensions import Annotated
#SkillExtraction Packages
import PyPDF2
from PyPDF2 import PdfReader
import psycopg2
from psycopg2 import sql
import pandas as pd
from datetime import date
import numpy as np
import spacy
import re
from sentence_transformers import SentenceTransformer, util
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import io
from spacy.matcher import PhraseMatcher
from skillNer.general_params import SKILL_DB
from skillNer.skill_extractor_class import SkillExtractor
from psycopg2.extensions import register_adapter, AsIs
register_adapter(np.int64, AsIs)
import warnings
warnings.filterwarnings('ignore')
from io import BytesIO
import requests
#Custom Classes for endpoints
from DbConnection import DbConnection
from UploadFile import UploadOpenFile
from SkillExtract import SkillExtractorDetails
import os
os.environ['HF_HOME'] = '/hug/cache/'
app = FastAPI()
class FileDetails(BaseModel):
filecontents: str
filename: str
fileid: str
message: str
class SkillDetails(BaseModel):
skillid: int
requiredSkills: str
softSkills: str
goodToHaveSkills: str
class FileResponse(BaseModel):
fileid: int
message: str
class FileUploadDetails(BaseModel):
fileData: bytes = File(...)
filename: str
nlp = spacy.load("en_core_web_lg")
# init skill extractor
skill_extractor = SkillExtractor(nlp, SKILL_DB, PhraseMatcher)
@app.get("/")
async def root():
return {"SkillAPI":"SkillAPi Version 0.05"}
#https://vaibhav84-resumeapi.hf.space/docs
db_params = DbConnection.GetDbConnection()
def parse_csv(df):
res = df.to_json(orient="records")
parsed = json.loads(res)
return parsed
@app.post("/uploadJobDescriptionPDF/")
def process_pdf_file(file: bytes = File(...)):
# Save file locally for processing
text =''
reserve_pdf_on_memory = io.BytesIO(file)
load_pdf = PyPDF2.PdfReader(reserve_pdf_on_memory)
for page in load_pdf.pages:
text += page.extract_text()
print(text)
# Process saved file
return {"content": text}
@app.post("/uploadJobDescriptionPDF_Fname/")
def process_pdf_file1(file: FileUploadDetails):
# Save file locally for processing
text =''
reserve_pdf_on_memory = io.BytesIO(file.fileData)
load_pdf = PyPDF2.PdfReader(reserve_pdf_on_memory)
for page in load_pdf.pages:
text += page.extract_text()
print(text)
# Process saved file
return {"content": text}
@app.get("/ProfileMatch")
def ProfileMatchResults():
dbQuery = "select * from profilematch"
conn = psycopg2.connect(**db_params)
df = pd.read_sql_query(dbQuery, conn)
return parse_csv(df)
@app.post("/UploadFile/")
def UploadFileDetails(file_data: FileDetails):
returnID = UploadOpenFile.uploadFile(file_data.filecontents,file_data.filename,db_params)
file_data.filecontents = ""
file_data.fileid = str(returnID)
file_data.message = "File Uploaded Successfully!"
return file_data
@app.post("/ExtractSkills/")
def ExtractSkills(skill_data: SkillDetails):
returnSkills = SkillExtractorDetails.SkillExtract(db_params,skill_extractor,skill_data.skillid)
details = returnSkills.split('@')
skill_data.requiredSkills = details[0]
skill_data.softSkills = details[1]
skill_data.goodToHaveSkills = details[1]
return skill_data
@app.post("/uploadJobDescription/")
def create_upload_file(file: bytes = File(...)):
content = file.encode('utf-8').strip()
lines = content.split('\n')
return {"content": lines}
@app.post("/uploadJobDescriptionPDF_Test/")
def upload_PDF(file: UploadFile = File(...)):
text=''
data = json.loads(file.file.read())
return {"message": f"Successfully uploaded {data}"}
@app.post("/uploadJobDescriptionPDF3/")
def process_pdf_file2(file: Annotated[bytes, File()]):
# Save file locally for processing
text =''
#reserve_pdf_on_memory = io.BytesIO(file)
#load_pdf = PyPDF2.PdfReader(reserve_pdf_on_memory)
#for page in load_pdf.pages:
# text += page.extract_text()
#print(text)
# Process saved file
return {"content": file.content_type } |