Как извлечь дату из PDF файлов с помощью Python - PullRequest
0 голосов
/ 07 октября 2019

Я пытался извлечь дату из финансового документа PDF. условия: 1. Дата должна быть выбрана на 1-й или 2-й странице PDF-файла, 2. Пример даты: МЕСЯЦЫ, ЗАКОНЧИВШИЕСЯ 30 ИЮНЯ 2018

Я попытался выбрать дату с помощью re.search (), например:re.search ("\ bended \ b", a [0]). start ()

import re
import io,os
import re
import datefinder
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage

def extract_text_by_page(pdf_path):
    with open(pdf_path, 'rb') as fh:
        for page in PDFPage.get_pages(fh, caching=True, check_extractable=True):
            resource_manager = PDFResourceManager()
            fake_file_handle = io.StringIO()
            converter = TextConverter(resource_manager, fake_file_handle)
            page_interpreter = PDFPageInterpreter(resource_manager, converter)
            page_interpreter.process_page(page)
            text = fake_file_handle.getvalue()
            yield text
            # close open handles
            converter.close()
            fake_file_handle.close()
a=[]
for page in extract_text_by_page("C:/Users/gibin_mathew/PycharmProjects/ML/Doc_downloader/Repo/424359084.pdf"):
    page=page.lower()
    a.append(page)
try:
    b = re.search("\bended\b", a[0]).start()
except:
    b = re.search("\bended\b", a[1]).start()
date = a[0][b + 6:b + 23]
matches = list(datefinder.find_dates(date))
if len(matches) > 0:
    date = matches[0]
print(date)

Но я получаю сообщение об ошибке: AttributeError: объект 'NoneType' не имеет атрибута 'start'

В некоторых файлах PDF будет более 2 страниц, а в некоторых - только одна страница.

...