Статистическая модель на основе Python для автоматического определения координат полей формы в PDF - PullRequest
1 голос
/ 03 августа 2020

Я хочу определить координаты заполняемых PDF-форм, точнее координаты ограничивающего прямоугольника текстового поля, в котором будет размещено конкретное текстовое поле (String).

В настоящее время я следуя жестко запрограммированному подходу Python -Pdfminer с использованием LTTBox для определения координат на основе наличия определенной строки.

Пример:

def identifyTextboxes(path, fieldName, fieldType):
    # reading the file and setting prams
    fp = open(path, 'rb')
    rsrcmgr = PDFResourceManager()
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    pages = PDFPage.get_pages(fp)

    # defining key-terms of custodian:
    names=["Name of entity:", "Name of Investor (Please Print or Type)", "Print Name of Entity", "Name of Prospective Investor ", 
    "Investor's Name", "Name (the “Applicant” or “We”)", "On Behalf of:", "Name of Business"]

    num_pages = 0
    output = []
    for page in pages:
        temp_dict = {}
        interpreter.process_page(page)
        layout = device.get_result()
        num_pages += 1

        # fetching the coordinates of the text via bbox
        for lobj in layout:
            if isinstance(lobj, LTTextBox):
                (x, y, xw, yh), text = lobj.bbox, lobj.get_text()
                for name in names:
                    ResSearch = re.search(name, text)                
                    if ResSearch:break
                    field='textbox'
            if ResSearch:break
        if ResSearch:
            temp_dict['label'] = fieldName
            temp_dict['type'] = fieldType
            temp_dict["value"] = ''
            temp_dict['group'] = ''
            temp_dict["overlay"] = {'page': num_pages, 'left': (xw)-90, 'top':((y-10)-(yh-y))+90, 'height': 20, 'width':240}
            output.append(temp_dict)
            print(lobj)
    return output

В приведенном выше коде я обнаруживаю места, где Соответствующая строка появляется из имен списков и определяет координату текстового поля справа от внешнего вида на основе координат LTTBox и фиксированной с помощью, как вы можете видеть на возвращаемом выходе ['overlay'].

Этот процесс очень жестко запрограммирован и терпит неудачу, когда в PDF-файле возникает какая-либо неизвестная строка или ситуация, следовательно, не такой надежный. ящик через CNN / RNN / CNN + RNN. Я прошел через детектор EAST , но это, похоже, не решает проблему, поэтому, возможно, обучение более индивидуальной сети, возможно, будет более полезным.

Пожалуйста, найдите прикрепленные изображения для лучше понять, что делает текущий код. enter image description here введите описание изображения здесь

Я новичок в ML, мне нужно руководство, чтобы построить такую ​​сеть. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 03 августа 2020

Если формы являются правильными полями PDF AcroForm, вы можете легко найти их, просто прочитав файл PDF.

Просто поищите такой текст в своем файле PDF:

7 0 obj
<<
/Type /Annot 
/Subtype /Widget 
/Rect [ 87.539 495.187 139.289 511.890 ] 
/F 4 
/FT /Tx 
/H /N 
/R 0 
/Ff 4194304 
/BS << /W 1 /S /S  >>
/MK <</BC [ 0.267 0.267 0.267 ] /BG [ 0.996 0.839 0.804 ]  >>
/T (name1[first])
/TU (<FE><FF>)
/DV ()
/DA (/F2 9.9 Tf 0.000 g)
/NM (0007-5003)
/M (D:20181012063448)
>>

Другой пример:

23 0 obj
<</Type/Annot/Subtype/Widget/F 4
/Rect[165.7 388.3 315.7 402.5]
/FT/Tx
/P 1 0 R
/T(Address 1 Text Box)
/V <FEFF>
/DV <FEFF>
/MaxLen 40
/DR<</Font 6 0 R>>
/DA(0 0 0 rg /F3 11 Tf)
/AP<<
/N 60 0 R
>>
>>
endobj

Координаты поля - это числа после /Rect в последовательности слева, снизу, справа, сверху.

Возможно, рассматриваемый объект сжат. В этом случае вы не увидите это как текст. В таком случае я бы рекомендовал использовать mutool clean -d input.pdf readable.pdf для распаковки всех объектов в файле PDF, чтобы сделать файл доступным для чтения в текстовом редакторе. mutool - это инструмент командной строки, который поставляется с mupdf .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...