Написание кода для извлечения даты PDF и помещения в таблицу csvPython

Программы на Python
Anonymous
Написание кода для извлечения даты PDF и помещения в таблицу csv

Сообщение Anonymous »

Пытаюсь создать код, который извлекает определенные данные с помощью Python, а затем создает таблицу в формате CSV для загрузки в Excel. По какой-то причине я не могу узнать даты или идентификатор пациента, но мне удалось зайти так далеко, и это огромный шаг вперед! LOL Может ли кто-нибудь помочь мне достичь того, чего я пытаюсь сделать? TIA
pip install pdfplumber
импортировать pandas как pd
импортировать pdfplumber
импортировать повторно
из datetime import datetime # Импортируем модуль datetime

Код: Выделить всё

# Defined PDF file path
pdf_path = "/content/drive/MyDrive/Final Project PDFs/Zoho Creator — Отчет об очереди печати.pdf"

Код: Выделить всё

# Open the PDF file
с pdfplumber.open(pdf_path) в формате pdf:

Код: Выделить всё

# Extract text from each page
text = ""
for page in pdf.pages:
text += page.extract_text()

# Define a pattern to extract the Order Creation Date
order_creation_date_pattern = r"Дата создания заказа (со страницы сканирования новой трансляции).* (.+(\d+-[A-Z].*-\d+))"

Код: Выделить всё

# Find the Order Creation Date in the text
match = re.search(order_creation_date_pattern, text)
order_creation_date = match.group(1) если совпадение, иначе Нет

Код: Выделить всё

# Defined dictionary to map column names to their corresponding patterns
column_patterns = {
"Имя файла проекта": r"Имя файла проекта (.+)",
"Дата создания заказа": r"Дата создания заказа (со страницы New Cast Scan).* (.+(\d+-[A-Z].*-\d+))",
"Название клиники": r"Название клиники (.+)",
"Идентификатор пациента": r"Идентификатор пациента (.+)",
"Имя на транспортной этикетке": r"Имя на транспортной этикетке (.+)",
"Включить комплект для переоборудования банджи": r"Включить комплект для преобразования банджи? (.+)",

Код: Выделить всё

# Add the "Closure" pattern
column_patterns["Closure"] = r"Застежка легко снимается (шина) (.+)"

Код: Выделить всё

# Extract data based on the defined patterns
data = {}
для столбца, шаблон в columns_patterns.items():
data[column] = [match.group(1) if (match : = re.search(шаблон, текст)) else Нет для текста в text.split('\n')]

Код: Выделить всё

# Add the Order Creation Date to the data dictionary
data["Дата создания заказа"] = [order_creation_date] * len(data[next(iter(data))])

Код: Выделить всё

# Creates a DataFrame from the extracted data
result_df = pd.DataFrame(данные)

Код: Выделить всё

# Exports the DataFrame to a CSV file
result_df.to_csv("output.csv", index=False)
импортировать pandas как pd

Код: Выделить всё

# Reads the CSV file
df = pd.read_csv("output.csv")

Код: Выделить всё

# Displays the DataFrame
print(df)
Выход:
Имя файла дизайна Дата создания заказа Название клиники

0 NaN NaN NaN

1 AA2_HT_XX_RD_A_B_MON_410_8 NaN NaN

2 NaN NaN NaN

3 NaN NaN NaN

4 NaN NaN NaN

5 NaN NaN Уход за ранами Монарха

6 NaN NaN NaN

7 NaN NaN NaN

8 NaN NaN NaN

9 NaN NaN NaN

10 NaN NaN NaN

11 NaN NaN NaN

12 NaN NaN NaN

9 NaN NaN NaN

10 NaN NaN NaN

11 NaN NaN NaN

12 NaN NaN NaN

13 NaN NaN NaN

14 NaN NaN NaN

15 NaN NaN NaN

16 NaN NaN NaN

17 NaN NaN NaN

18 NaN NaN NaN

19 NaN NaN NaN

20 NaN NaN NaN

21 NaN NaN NaN

22 NaN NaN NaN

23 NaN NaN NaN

24 NaN NaN NaN

25 NaN NaN NaN

26 NaN NaN NaN

27 NaN NaN NaN

28 NaN NaN NaN

29 NaN НЭН НЭН

Код: Выделить всё

Patient ID Name on Shipping Label Include Bungee Conversion Kit  Closure
0 NaN NaN NaN NaN

1 NaN NaN NaN NaN

2 NaN NaN NaN NaN

3 NaN NaN NaN NaN

4 NaN NaN NaN NaN

5 NaN NaN NaN NaN

6 NaN NaN NaN NaN

7 NaN NaN NaN NaN

8 NaN NaN NaN NaN

9 NaN NaN NaN NaN

10 NaN NaN NaN NaN

11 NaN Уход за ранами Monarch NaN NaN

12 NaN Доктор. Жаклин Гей NaN NaN

13 NaN NaN NaN NaN

14 NaN NaN NaN NaN

15 NaN NaN NaN NaN

16 NaN NaN NaN NaN

17 NaN NaN NaN NaN

18 NaN NaN NaN NaN

19 NaN NaN NaN NaN
20 NaN NaN NaN NaN

21 NaN NaN Нет NaN

22 NaN NaN NaN NaN

23 NaN NaN NaN NaN

24 NaN NaN NaN NaN

25 NaN NaN NaN NaN

26 NaN NaN NaN NaN

27 NaN NaN NaN NaN
28 NaN NaN NaN NaN

29 NaN NaN NaN NaN
Я зашел так далеко, и это огромное изменение, но хотелось бы чего-то вроде это...
Искомый результат
Используемый PDF-файл выглядит так...
Отчет об очереди печати
Имя файла дизайна AA2Redo_HT_XX_RD_A_B_MON_410_8
Дата создания дизайна 08 апреля 2024 г.
Дата создания заказа (со страницы нового сканирования слепков) 08 апреля 2024 г.
Примечания к доставке
Название клиники Monarch Wound Care
Номер логотипа индивидуальной клиники
Текст логотипа индивидуальной клиники
Идентификатор пациента AA2Redo
Идентификатор сканирования 1
Полное имя (admin)
Имя на транспортной этикетке Monarch Wound Care
Имя контактного лица на транспортной этикетке Dr. Жаклин Гей
Адрес (уличный адрес) 200 Fort Pierpont Dr.
Адрес (квартира, номер, блок, здание, этаж, номер 105
и т. д.)
Адрес (отдел, c/ o и т. д.)
Почтовый индекс 26508
Город Моргантаун
Штат Западная Вирджиния
Способ доставки UPS 2nd Day Air
Направляющий врач Жаклин Гэй
Включает комплект для переоборудования банджи ? Включает ли
рукава? Нет
Комментариев к дизайну
Пациент или демонстрационный пациент
Легко снимаемая застежка (шина)
Покрытие PCL (прочное) Нет
Приоритет печати Обычный
Отправлено? (администратор) Нет
Только печать или фрагмент? Печать в CO

Подробнее здесь: https://stackoverflow.com/questions/783 ... -csv-table

Вернуться в «Python»