Добавить в корзинуПозвонить
Найти в Дзене
Одной ногой в It

Встретились как-то Python, Excel и PDF на компе у инженера или как упростить рутинную работу с данными. Часть 1.

В последние полтора года я занимаюсь сдачей исполнительной документации (далее ИД)в архив заказчика.  Что из себя представляет папка:  1) Реестр (состав или содержание папки) 2) Сама исполнительная документация. Реестр ИД выглядит так: Объем папки составляет не более 250 страниц. К каждой папке должен быть приложен диск (или флешка) со сканами актов.  Папка со сканами: Но это пол беды, вторая половина в том, что в электронном реестре должны быть ссылки на каждый документ. И вот представьте, НУЖНО ПРОСТАВИТЬ ГИПЕРССЫЛКУ НА 250 страниц вручную!  Гиперссылки в электронном реестре: Конечный вид реестра с гиперссылками: Это очень долго и нудно, нужно автоматизировать! Мое отношение к формулам Excel вы знаете. Вот тут-то и приходит на помощь питон.  Подготовительные работы. 1.Определение функционала. Нужно определить конечный функционал программы, то есть что мы хотим получить в конечно итоге. Набросать общее представление.  Основные действия который я выполнял вручную: 1) Пронумеро

В последние полтора года я занимаюсь сдачей исполнительной документации (далее ИД)в архив заказчика. 

Что из себя представляет папка: 

1) Реестр (состав или содержание папки)

2) Сама исполнительная документация.

Реестр ИД выглядит так:

Шаблон реестра ИД
Шаблон реестра ИД

Объем папки составляет не более 250 страниц. К каждой папке должен быть приложен диск (или флешка) со сканами актов. 

Папка со сканами:

-3

Но это пол беды, вторая половина в том, что в электронном реестре должны быть ссылки на каждый документ. И вот представьте, НУЖНО ПРОСТАВИТЬ ГИПЕРССЫЛКУ НА 250 страниц вручную! 

Гиперссылки в электронном реестре:

-4

Конечный вид реестра с гиперссылками:

-5

Это очень долго и нудно, нужно автоматизировать! Мое отношение к формулам Excel вы знаете. Вот тут-то и приходит на помощь питон. 

Подготовительные работы.

1.Определение функционала.

Нужно определить конечный функционал программы, то есть что мы хотим получить в конечно итоге. Набросать общее представление. 

Основные действия который я выполнял вручную:

1) Пронумеровать всю папку. 

2) Набить электронный реестр на эту папку.

3) Отсканировать всю папку.

4) Разделить полученный PDF файл по отдельным документам.

5) Назвать скан каждого документа в соответствии с реестром.

6) Вставить гиперссылку на каждый документ в электронный реестр.

Теперь смотрим что можно автоматизировать.

1) Пронумеровать всю папку - точно никак не автоматизировать. Вычеркиваем этот пункт.

2) Набить электронный реестр на эту папку - автоматизировать можно, но это идея для другого проекта. Тоже вычеркиваем.

3) Отсканировать папку - в принципе тут уже нечего автоматизировать, закидываешь пачку документов в сканер и сканируешь по 20-25 страниц, а потом просто объединяешь в один файл. Этот пункт не берем в расчет.

4) Разделить полученный PDF файл по отдельным документам - а вот это автоматизировать можно, это нам нужно.

5) Назвать скан каждого документа в соответствии с реестром - этот пункт можно объединить с пунктом 4, и тоже автоматизировать, запомнили.

6) Вставить гиперссылку на каждый документ в электронный реестр - самое длительное по времени, подлежит автоматизации 100%. В копилку функций.

Итак, у нас получилось 3 основных функции:

1) Разделить общий скан.

2) Переименовать каждый файл.

3) Вставить гиперссылки на каждый файл.

*2.Выбор технологий и библиотек.*

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

Для работы с PDF-файлами я решил использовать библиотеку PyPDF2

Она простенькая в использовании но имеет мощный багаж функций для работы. Отлично, идем дальше!

Для работы с Excel-файлами я использую openpyxl.

Тоже достаточно простая в использовании библиотека с простой документацией.

В следующей части покажу реализацию. Подготовьте свои глаза и мозг, будет много интересной информации!