From 35c2e92acce476c8d6f6a368b580ac91ed95c873 Mon Sep 17 00:00:00 2001 From: mobiuscreek <36884713+mobiuscreek@users.noreply.github.com> Date: Tue, 20 Jul 2021 10:36:41 +0100 Subject: [PATCH 1/5] Add line for string parsing --- pyresparser/resume_parser.py | 1 + pyresparser/utils.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/pyresparser/resume_parser.py b/pyresparser/resume_parser.py index 8817057..bc25e2f 100644 --- a/pyresparser/resume_parser.py +++ b/pyresparser/resume_parser.py @@ -40,6 +40,7 @@ def __init__( ext = os.path.splitext(self.__resume)[1].split('.')[1] else: ext = self.__resume.name.split('.')[1] + self.__text_raw = utils.extract_text(self.__resume, '.' + ext) self.__text = ' '.join(self.__text_raw.split()) self.__nlp = nlp(self.__text) diff --git a/pyresparser/utils.py b/pyresparser/utils.py index 94ea373..31a8679 100644 --- a/pyresparser/utils.py +++ b/pyresparser/utils.py @@ -153,6 +153,10 @@ def extract_text_from_doc(doc_path): return ' ' +def extract_text_from_string(string): + ''' Helper function to return input string for testing ''' + return string + def extract_text(file_path, extension): ''' Wrapper function to detect the file extension and call text @@ -162,6 +166,7 @@ def extract_text(file_path, extension): :param extension: extension of file `file_name` ''' text = '' + if extension == '.pdf': for page in extract_text_from_pdf(file_path): text += ' ' + page @@ -169,6 +174,9 @@ def extract_text(file_path, extension): text = extract_text_from_docx(file_path) elif extension == '.doc': text = extract_text_from_doc(file_path) + else: + text = extract_text_from_string(file_path) + return text From 608648777260a567a5fe4eb5a6eee4d60a97e34c Mon Sep 17 00:00:00 2001 From: mobiuscreek <36884713+mobiuscreek@users.noreply.github.com> Date: Wed, 21 Jul 2021 15:24:58 +0100 Subject: [PATCH 2/5] Add test for string extraction --- test_name.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/test_name.py b/test_name.py index e3fc245..5b2bc90 100644 --- a/test_name.py +++ b/test_name.py @@ -23,7 +23,7 @@ def get_remote_data(): def get_local_data(): data = ResumeParser('OmkarResume.pdf').get_extracted_data() return data - + def test_remote_name(): data = get_remote_data() assert 'Omkar Pathak' == data[0]['name'] @@ -32,10 +32,25 @@ def test_remote_phone_number(): data = get_remote_data() assert '8087996634' == data[0]['mobile_number'] -def test_local_name(): +def test_local_skills(): data = get_local_data() - assert 'Omkar Pathak' == data['name'] + assert 'C++' in data['skills'] def test_local_phone_number(): data = get_local_data() assert '8087996634' == data['mobile_number'] + +def test_extract_string(): + + string = (f"Joe Bloggs email: joe.bloggs@test.com \n" + f"Professional Experience \n" + f"Microsoft \n Jan 2017 - Mar 2020 \n" + f"Analyst \n" + f"Created monthly Excel and Powerpoint reports highlighting KPIs in a clear and simple format. \n" + f"Used predictive modelling to detect patterns in customer behaviour using Python. \n" + f"Education \n" + f"University of Oxford \n" + f"BSc in Computer Science \n") + + data = ResumeParser(string).get_extracted_data() + assert 'Excel' in data['skills'] From 13ad2192fa8fb8de80efd6d5d92e549591f0dc63 Mon Sep 17 00:00:00 2001 From: mobiuscreek <36884713+mobiuscreek@users.noreply.github.com> Date: Wed, 21 Jul 2021 16:02:25 +0100 Subject: [PATCH 3/5] Move test files to test folder --- test/fixtures/OmkarResume.pdf | Bin 0 -> 53442 bytes test/test_pyresparser.py | 57 ++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100755 test/fixtures/OmkarResume.pdf create mode 100644 test/test_pyresparser.py diff --git a/test/fixtures/OmkarResume.pdf b/test/fixtures/OmkarResume.pdf new file mode 100755 index 0000000000000000000000000000000000000000..618362d8e0f9f187ce45f816c206891964afb520 GIT binary patch literal 53442 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 z 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 bT!5>%B(bQZq9`?u%gE4-OI6j?-;E0Zj9mK^ literal 0 HcmV?d00001 diff --git a/test/test_pyresparser.py b/test/test_pyresparser.py new file mode 100644 index 0000000..d10c306 --- /dev/null +++ b/test/test_pyresparser.py @@ -0,0 +1,57 @@ +import os +import argparse +from pprint import pprint +import io +import multiprocessing as mp +import urllib +from urllib.request import Request, urlopen +from pyresparser import ResumeParser +from pathlib import Path + +def get_remote_data(): + try: + remote_file = 'https://www.omkarpathak.in/downloads/OmkarResume.pdf' + print('Extracting data from: {}'.format(remote_file)) + req = Request(remote_file, headers={'User-Agent': 'Mozilla/5.0'}) + webpage = urlopen(req).read() + _file = io.BytesIO(webpage) + _file.name = remote_file.split('/')[-1] + resume_parser = ResumeParser(_file) + return [resume_parser.get_extracted_data()] + except urllib.error.HTTPError: + return 'File not found. Please provide correct URL for resume file.' + +def get_local_data(): + data = ResumeParser(str(Path(__file__).parent.resolve() / 'fixtures/OmkarResume.pdf')).get_extracted_data() + return data + +def test_remote_name(): + data = get_remote_data() + assert 'Omkar Pathak' == data[0]['name'] + +def test_remote_phone_number(): + data = get_remote_data() + assert '8087996634' == data[0]['mobile_number'] + +def test_local_skills(): + data = get_local_data() + assert 'C++' in data['skills'] + +def test_local_phone_number(): + data = get_local_data() + assert '8087996634' == data['mobile_number'] + +def test_extract_string(): + + string = (f"Joe Bloggs email: joe.bloggs@test.com \n" + f"Professional Experience \n" + f"Microsoft \n Jan 2017 - Mar 2020 \n" + f"Analyst \n" + f"Created monthly Excel and Powerpoint reports highlighting KPIs in a clear and simple format. \n" + f"Used predictive modelling to detect patterns in customer behaviour using Python. \n" + f"Education \n" + f"University of Oxford \n" + f"BSc in Computer Science \n") + + data = ResumeParser(string).get_extracted_data() + assert 'Excel' in data['skills'] From 2f4ba78057b238092d775665eebc2af664283834 Mon Sep 17 00:00:00 2001 From: mobiuscreek <36884713+mobiuscreek@users.noreply.github.com> Date: Wed, 21 Jul 2021 16:06:52 +0100 Subject: [PATCH 4/5] Delete moved test files --- OmkarResume.pdf | Bin 53442 -> 0 bytes test_name.py | 56 ------------------------------------------------ 2 files changed, 56 deletions(-) delete mode 100755 OmkarResume.pdf delete mode 100644 test_name.py diff --git a/OmkarResume.pdf b/OmkarResume.pdf deleted file mode 100755 index 618362d8e0f9f187ce45f816c206891964afb520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53442 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 z 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 bT!5>%B(bQZq9`?u%gE4-OI6j?-;E0Zj9mK^ diff --git a/test_name.py b/test_name.py deleted file mode 100644 index 5b2bc90..0000000 --- a/test_name.py +++ /dev/null @@ -1,56 +0,0 @@ -import os -import argparse -from pprint import pprint -import io -import multiprocessing as mp -import urllib -from urllib.request import Request, urlopen -from pyresparser import ResumeParser - -def get_remote_data(): - try: - remote_file = 'https://www.omkarpathak.in/downloads/OmkarResume.pdf' - print('Extracting data from: {}'.format(remote_file)) - req = Request(remote_file, headers={'User-Agent': 'Mozilla/5.0'}) - webpage = urlopen(req).read() - _file = io.BytesIO(webpage) - _file.name = remote_file.split('/')[-1] - resume_parser = ResumeParser(_file) - return [resume_parser.get_extracted_data()] - except urllib.error.HTTPError: - return 'File not found. Please provide correct URL for resume file.' - -def get_local_data(): - data = ResumeParser('OmkarResume.pdf').get_extracted_data() - return data - -def test_remote_name(): - data = get_remote_data() - assert 'Omkar Pathak' == data[0]['name'] - -def test_remote_phone_number(): - data = get_remote_data() - assert '8087996634' == data[0]['mobile_number'] - -def test_local_skills(): - data = get_local_data() - assert 'C++' in data['skills'] - -def test_local_phone_number(): - data = get_local_data() - assert '8087996634' == data['mobile_number'] - -def test_extract_string(): - - string = (f"Joe Bloggs email: joe.bloggs@test.com \n" - f"Professional Experience \n" - f"Microsoft \n Jan 2017 - Mar 2020 \n" - f"Analyst \n" - f"Created monthly Excel and Powerpoint reports highlighting KPIs in a clear and simple format. \n" - f"Used predictive modelling to detect patterns in customer behaviour using Python. \n" - f"Education \n" - f"University of Oxford \n" - f"BSc in Computer Science \n") - - data = ResumeParser(string).get_extracted_data() - assert 'Excel' in data['skills'] From 8b754988806198d522c5a93ed81edd8f18ec3c96 Mon Sep 17 00:00:00 2001 From: mobiuscreek <36884713+mobiuscreek@users.noreply.github.com> Date: Fri, 20 Aug 2021 15:10:46 +0100 Subject: [PATCH 5/5] Fix error in string processing without a full stop --- pyresparser/resume_parser.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pyresparser/resume_parser.py b/pyresparser/resume_parser.py index bc25e2f..8a6117b 100644 --- a/pyresparser/resume_parser.py +++ b/pyresparser/resume_parser.py @@ -36,10 +36,14 @@ def __init__( 'total_experience': None, } self.__resume = resume - if not isinstance(self.__resume, io.BytesIO): - ext = os.path.splitext(self.__resume)[1].split('.')[1] + + if isinstance(self.__resume, str): + ext = '' else: - ext = self.__resume.name.split('.')[1] + if not isinstance(self.__resume, io.BytesIO): + ext = os.path.splitext(self.__resume)[1].split('.')[1] + else: + ext = self.__resume.name.split('.')[1] self.__text_raw = utils.extract_text(self.__resume, '.' + ext) self.__text = ' '.join(self.__text_raw.split())