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

# Введение
PDF-файлы широко используются во многих рабочих процессах. Вам может потребоваться объединить отчеты, разделить большие файлы, извлечь текст или таблицы, добавить водяные знаки или скрыть конфиденциальную информацию. Все это рутинные задачи, но их выполнение вручную для множества файлов может быть медленным и чреватым ошибками. Эти пять скриптов на Python автоматизируют этот процесс. Они запускаются из командной строки, поддерживают пакетную обработку и легко настраиваются.
Все скрипты можно найти на GitHub .
# 1. Объединение и разделение PDF-файлов
// Болевая точка
Объединение нескольких PDF-файлов в один или разделение большого PDF-файла на отдельные файлы по диапазону страниц — одни из самых распространенных задач при работе с PDF-файлами. Обе задачи утомительны при выполнении вручную, особенно при работе с большим количеством файлов или большим объемом страниц.
// Что делает скрипт
Объединяет папку с PDF-файлами в один выходной файл в настраиваемом порядке или разделяет один PDF-файл на отдельные файлы по фиксированным диапазонам страниц, через каждые N страниц или по списку конкретных номеров страниц. Обе операции обрабатываются одним и тем же скриптом с помощью флага режима.
// Как это работает
Скрипт использует библиотеку pypdf для всех операций на уровне страниц. В режиме слияния он считывает все PDF-файлы из входной папки, сортирует их по имени файла (или по заданному в текстовом файле порядку) и последовательно записывает их в один выходной PDF-файл. В режиме разделения он принимает либо список диапазонов страниц, либо фиксированный размер фрагмента, либо список номеров страниц для разделения. Каждый сегмент разделения записывается в пронумерованный выходной файл. Метаданные из первого входного файла сохраняются в режиме слияния.
⏩ Получите скрипт для объединения и разделения PDF-файлов
# 2. Извлечение текста и таблиц из PDF-файлов
// Болевая точка
Извлечение полезных данных из PDF-файла — будь то текст из отчета или табличные данные из выписки — необходимо перед дальнейшей обработкой. Копирование и вставка из программы просмотра PDF-файлов нецелесообразны для файлов, содержащих более нескольких страниц, и результат редко бывает качественным.
// Что делает скрипт
Программа извлекает текст и таблицы из одного или нескольких PDF-файлов и записывает результаты в структурированные выходные файлы. Текст записывается в файлы обычного текста или Markdown. Таблицы записываются в CSV или Excel, при этом для каждой найденной таблицы находится один лист. Поддерживаются как текстовые PDF-файлы, так и базовое извлечение с сохранением макета.
// Как это работает
Скрипт использует pypdf для базового извлечения текста и pdfplumber для извлечения с учетом структуры и обнаружения таблиц. Для каждого входного файла он обрабатывает данные постранично, извлекая текстовые блоки и обнаруживая области таблиц с помощью инструмента поиска таблиц pdfplumber. Извлеченные таблицы нормализуются — удаляются пустые строки, обнаруживаются заголовки — и записываются в отдельные выходные файлы. В сводном отчете указывается количество страниц и таблиц, найденных в каждом файле, и отмечаются страницы, для которых извлечение не дало результатов.
⏩ Получите скрипт для извлечения текста и таблиц из PDF-файлов
# 3. Штамповка, нанесение водяных знаков и добавление номеров страниц.
// Болевая точка
Добавление водяного знака, штампа или номеров страниц к группе PDF-файлов перед их распространением — это простая задача, но её выполнение по одному файлу за раз через графический интерфейс пользователя (GUI) занимает много времени. Когда группа файлов большая или задача возникает регулярно, необходимо автоматизировать этот процесс.
// Что делает скрипт
Применяет текстовый или графический штамп к каждой странице одного или нескольких PDF-файлов. Поддерживает диагональные водяные знаки, текст в верхнем/нижнем колонтитуле, номера страниц и наложение изображений. Положение, размер шрифта, прозрачность и цвет настраиваются. Обрабатывает целые папки в пакетном режиме.
// Как это работает
Скрипт использует библиотеку pypdf для обработки страниц и reportlab для генерации слоя штампа. Для каждого входного PDF-файла он создает в памяти одностраничный PDF-файл штампа с помощью reportlab. Он отображает текст в заданном положении, под заданным углом, шрифтом и прозрачностью или размещает изображение в указанных координатах. Затем эта страница штампа объединяется со всеми страницами исходного PDF-файла с помощью функции слияния страниц pypdf. Результат записывается в новый выходной файл, оставляя оригинал без изменений. Номера страниц обрабатываются как особый случай, генерируя уникальный штамп для каждой страницы.
⏩ Получить скрипт маркера PDF
#4. Редактирование конфиденциальной информации
// Болевая точка
Перед отправкой PDF-файла внешним пользователям часто необходимо удалить конфиденциальную информацию, такую как имена, номера ссылок, финансовые показатели и адреса. Ручное обведение текста черными рамками в PDF-редакторе работает, но не во всех инструментах удаляет сам текст и непрактично для файлов, содержащих более нескольких страниц.
// Что делает скрипт
Программа сканирует страницы PDF-файлов на наличие заданных вами шаблонов текста — регулярных выражений, точных строк или предопределенных категорий, таких как адреса электронной почты и номера телефонов, — и навсегда удаляет соответствующее содержимое, заменяя его черными прямоугольниками. В результате создается новый PDF-файл, в котором текст удален, а не просто визуально скрыт.
// Как это работает
Скрипт использует библиотеку pymupdf , которая обеспечивает как поиск текста с координатами ограничивающих прямоугольников, так и возможность создания аннотаций для редактирования, которые при применении навсегда удаляют базовое содержимое. Для каждой страницы скрипт ищет все совпадения по каждому настроенному шаблону, помечает ограничивающие прямоугольники как аннотации для редактирования, а затем применяет их — что удаляет текст из потока содержимого страницы. Создается отчет, в котором перечислены все внесенные изменения, включая номер страницы, найденный текст (до редактирования) и шаблон, который их вызвал.
⏩ Получите скрипт для редактирования PDF-файла
# 5. Извлечение метаданных и создание PDF-инвентаризации
// Болевая точка
При работе с большим количеством PDF-файлов часто бывает полезно знать основные характеристики каждого из них — количество страниц, размер файла, дату создания, автора, наличие шифрования, наличие текста или то, является ли файл отсканированным изображением. Проверка каждого файла по отдельности с помощью программы просмотра нецелесообразна в больших масштабах.
// Что делает скрипт
Программа сканирует папку с PDF-файлами и извлекает из каждого из них метаданные, включая количество страниц, размер файла, даты создания и изменения, автора, производителя, статус шифрования, а также информацию о наличии в документе текста, допускающего поиск, или отсканированных изображений. Вся информация записывается в один CSV- или Excel-файл с данными.
// Как это работает
Скрипт использует pypdf для чтения метаданных документа из словаря информации PDF и pdfplumber для выборки страниц на предмет текстового содержимого. Для каждого файла он пытается открыть PDF-файл и прочитать стандартные поля метаданных. Он выбирает первые несколько страниц, чтобы определить, содержит ли файл извлекаемый текст, а не отсканированные изображения. Зашифрованные файлы, которые не могут быть открыты, помечаются, а не пропускаются без уведомления. Выходной список включает одну строку для каждого файла со всеми извлеченными полями и сводную строку внизу с итогами и средними значениями.
⏩ Получить скрипт инвентаризации в формате PDF
# Завершение
Эти пять скриптов на Python выполняют задачи, связанные с обработкой PDF-файлов, которые обычно превращаются в повторяющуюся ручную работу: разделение файлов, извлечение содержимого, обработка пакетов и очистка рабочих процессов обработки документов. Каждый скрипт разработан для безопасной работы с отдельными файлами или целыми папками, генерируя новые выходные данные вместо изменения оригиналов.
Начните с небольшой партии файлов, проверьте результат, а затем, когда все будет выглядеть правильно, переходите к более крупным папкам. Большая часть настройки сводится лишь к установке перечисленных зависимостей и настройке раздела конфигурации для путей к файлам и параметров.
Бала Прия С. — разработчик и технический писатель из Индии. Ей нравится работать на стыке математики, программирования, анализа данных и создания контента. В сферу её интересов и компетенции входят DevOps, анализ данных и обработка естественного языка. Она любит читать, писать, программировать и пить кофе! В настоящее время она работает над изучением и распространением своих знаний среди сообщества разработчиков, создавая учебные пособия, руководства, аналитические статьи и многое другое. Бала также создает увлекательные обзоры ресурсов и обучающие материалы по программированию.
Источник: www.kdnuggets.com
Похожие записи
Подписка на рассылку
Получайте свежие новости и идеи на почту. Без спама — только самое интересное.
Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.
