Я пытаюсь извлечь определенные части файла PDF. Я читаю PDF-файл, как показано в приведенном ниже коде. Этот код извлекает всю информацию сразу, включая все значения мусора. Я хочу сосредоточиться только на резюме, введении, методах и заключении. Я попробовал это с помощью регулярных выражений, а также. Пожалуйста, дайте мне знать, есть ли способ извлечь вышеуказанную информацию.
def pdfparser(pdffile):
with open(pdffile, mode='rb') as f:
#fp = open(data, 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
data =[]
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
for page in PDFPage.get_pages(f):
interpreter.process_page(page)
data = retstr.getvalue()
#print(data)
# Cleaning the data
data = data.lower()
data = re.sub('\[*?\]', '', data)
data = re.sub('[%s]' % re.escape(string.punctuation), '', data)
data = re.sub('\w*\d\w*', '', data)
data = data.replace("\n", "")
print(data)
return data
Код регулярного выражения:
paragraph = "Abstract"
def abstractExtraction(text,paragraph):
count = 0
para=""
text=text.replace('\n\n+', '\n')
text=text.replace('\s\s\s+', '\n')
for i in re.split(r'\n+', text):
p = re.compile('(?<!\S)'+paragraph, re.IGNORECASE)
p1 = re.compile('abstract')
if(str(p1.match(i)))=='None':
if str(p.match(i))!='None':
count=1
if count == 1:
if str(re.compile('\d' + '.*' + '\s*' + 'Introduction', re.IGNORECASE).match(i))!='None':
return para
elif str(re.compile('X|IV|V?I{0,3}' + '.*' + '\s*' + 'Introduction', re.IGNORECASE).match(i))!='None':
return para
else:
para =para+i
continue
if(len(para)>1000):
return 'None'
else:
return para