Я покажу вам сегодня, как вы можете автоматизировать процесс импорта данных PDF в Excel. Это может сэкономить много времени для всех ежедневно.
Это наши тестовые данные:
Давайте прыгаем в код!
Сначала нам нужно импортировать зависимости
from tika import parser import pprint from collections import defaultdict import re import pandas as pd
После этого нам нужно определить PrettyPrinter и получить содержимое файла PDF и преобразовать его в список:
pp = pprint.PrettyPrinter(indent=3) parsedPDF = parser.from_file("final-test.pdf") content = parsedPDF['content'] contentlist = content.split('\n')
Удалить пустые строки в списке, полученном в результате разделения
contentlist = list(filter(lambda a: a != '', contentlist))
Создайте итератор и другие флаги, которые мы будем использовать для алгоритма, итератора содержимого PDF в строку:
iterateContent = iter(contentlist)
Словарь заполнитель данных соскобы
data = defaultdict(dict)
Наш счетчик, чтобы подсчитать, сколько блоков мы сможем получить
cntr = 0
Индикатор, какую строку мы в определенном блоке данных
line = 1
Алгоритм будет использовать флаги CNTR и строку, чтобы определить, есть ли мы в новом блоке или существующий блок
while True: try: string = next(iterateContent) except StopIteration: break if re.match('^[A-Z\s]+$', string): cntr += 1 data[cntr]['Name'] = string line = 2 print('matched') elif line == 2: data[cntr]['Address'] = string line += 1 elif line == 3: data[cntr]['Website'] = string line += 1
print("Total data:", len(data.keys()))
Настройка данных в DataFrame
df = pd.DataFrame(data.values()) df.index += 1 print(df)
Напишите dataframe в Excel
writer = pd.ExcelWriter("dataframe.xlsx", engine='xlsxwriter') df.to_excel(writer, sheet_name='output', index=False) writer.save()
Наши окончательные результаты:
Спасибо вам всем.
Оригинал: “https://dev.to/stokry/automate-data-entry-from-pdf-to-excel-with-python-1hm”