Разбор XML с Python pdfquery - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно прочитать данные счетов в PDF-файлах, некоторые из 200 страниц. Я создал этот скрипт с библиотекой pdfquery, которую я использую впервые.

Я должен извлечь данные, читая строки xml по одной, идентифицируя номер строки и извлекая данные. Проблема, которая у меня есть, заключается в том, что в некоторых PDF-файлах строка имеет другой номер, и я извлекаю другие данные.

Я хотел бы прочитать страницу документа в виде текста и использовать регулярные выражения для извлечения данных. Как мне преобразовать PDF в текст?

Спасибо.

импорт ОС импорт pdfquery из lxml import etree

если имя == " main ":

file_path = 'InputFiles'
#file_path = 'PDFInput'
for file in os.listdir(file_path):
    if file.endswith('.pdf') or file.endswith('.PDF'):
        #print(file)
        pdf = pdfquery.PDFQuery(file_path+'/'+file)
        num_paginas = pdf.doc.catalog['Pages'].resolve()['Count']
        #print('Num: ', num_paginas)

        for pagina in range(0, num_paginas, 2):
            #print('Pagina: ', pagina)    
            pdf.load(pagina)
            pdf.tree

            line = 0
            for etiqueta in pdf.tree.iter():
                line = line + 1
                #print(str(tag)+' '+str(tag.text))
                #print(str(line)+' '+str(etiqueta.text))

                if line == 59:
                    num_serie = etiqueta.text.strip()
                if line == 61:
                    fecha = etiqueta.text.strip()
                if line == 66:
                    num_factura = etiqueta.text.strip()
                if line == 90:
                    descripcion = etiqueta.text.strip()
                if line == 91:
                    centro = etiqueta.text[8:12].strip()
                if line == 103:
                    precio_unitario = etiqueta.text.strip()

                    print(str(file)
                    +' '+str(num_paginas)
                    +' '+str(pagina+1)
                    +' '+str(num_serie)
                    +' '+str(fecha)
                    +' '+str(num_factura)
                    +' '+str(descripcion)
                    +' '+str(centro)
                    +' '+str(precio_unitario))


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