pip install pdfplumber
импортировать pandas как pd
импортировать pdfplumber
импортировать повторно
из datetime import datetime # Импортируем модуль datetime
Код: Выделить всё
# Defined PDF file path
Код: Выделить всё
# Open the PDF file
Код: Выделить всё
# Extract text from each page
text = ""
for page in pdf.pages:
text += page.extract_text()
# Define a pattern to extract the Order Creation Date
Код: Выделить всё
# Find the Order Creation Date in the text
order_creation_date = match.group(1) если совпадение, иначе Нет
Код: Выделить всё
# Defined dictionary to map column names to their corresponding patterns
"Имя файла проекта": r"Имя файла проекта (.+)",
"Дата создания заказа": r"Дата создания заказа (со страницы New Cast Scan).* (.+(\d+-[A-Z].*-\d+))",
"Название клиники": r"Название клиники (.+)",
"Идентификатор пациента": r"Идентификатор пациента (.+)",
"Имя на транспортной этикетке": r"Имя на транспортной этикетке (.+)",
"Включить комплект для переоборудования банджи": r"Включить комплект для преобразования банджи? (.+)",
Код: Выделить всё
# Add the "Closure" pattern
Код: Выделить всё
# Extract data based on the defined patterns
для столбца, шаблон в 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
Код: Выделить всё
# Creates a DataFrame from the extracted data
Код: Выделить всё
# Exports the DataFrame to a CSV file
импортировать pandas как pd
Код: Выделить всё
# Reads the CSV file
Код: Выделить всё
# Displays the DataFrame
Выход:
Имя файла дизайна Дата создания заказа Название клиники
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
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