Анализ данных, Обработка документов

Как не заплатить дважды с помощью IT-технологий

Время прочтения: 3 мин.

Каждая организация в процессе своей деятельности рано или поздно сталкивается с необходимостью охраны своих активов.

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

В желании как можно лучше защитить своё имущество, мы порой упускаем из виду целый ряд факторов влияющих на нерациональное расходование денежных средств:

  1. Один объект может охраняться несколькими видами охраны (физическая, пультовая) и, как следствие, время охраны пересекается;
  2. В периметре одного охраняемого объекта есть отдельные помещения, которые ставятся на самостоятельную охрану, т.е. дробление объекта на несколько частей;
  3. Охрана мелкого имущества не группой, а самостоятельными объектами.

Всё это рождает двойные расходы.

Как с помощью инструментов Abbyy Fine Reader и Python найти дублирование оплаты за охрану активов?

Для преобразования PDF в удобный вид используется Abbyy Fine reader, а точнее его часть — hot folder. Hot Folder это приложение-планировщик, входящий в состав пакета FineReader и позволяющий назначить время обработки документов из выбранной папки в то время, когда компьютер наименее загружен, например, ночью.

Для автоматической обработки сканов документов или прочих изображений необходимо настроить задачу для выбранной папки. Настройка задачи включает в себя все необходимые параметры открытия изображения, распознавания и сохранения распознанного текста, режим проверки директории, время начала обработки.

В качестве выходного формата мы указали TXT. Таким образом документы приняли вид привычных и простых для дальнейшей обработки файлов с «плоским текстом».

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

Зная примерную структуру сканированных документов, удалось отсечь часть ненужной информации, оставив только данные из приложения. В нашем случае полезная информация в файле следует после строки с текстом «стоимости услуг пультовой охраны и технического обслуживания»

#берем данные начиная с определенной строки
for n in range(0, len(text_lines)):
                if text_lines[n].lower().__contains__('стоимости услуг пультовой охраны и технического обслуживания'):
                               text_lines = text_lines[n:]
                               break

Полученные строки анализируются с помощью регулярных выражений на предмет содержания в них информации об отделении (ВСП) или номера банкомата:

for n in range(0, len(text_lines)):
                vsp = ''
                row = text_lines[n].replace('г.\t', 'г. ').replace('с.\t', 'с. ').replace('д.\t', 'д. ').replace('\n', '')
                col = row.split('\t')
                if len(col) < 3:
                               continue
                key = re.sub('^\d*,', '', col[2].replace(' ', ''))
                try:
                               vsp = re.findall('(\d{4}\s*[/\\\]\s*\d{1,})', row)[0].replace('\\', '_').replace('/', '_')
                               if vsp in data:
                                               data[vsp].append(row)
                               else:
                                               data[vsp] = [row]
                except:
                               pass
                if vsp != '' or row.lower().__contains__('банкомат'):
                               if key in data:
                                               data[key].append(row)
                               else:
                                               data[key] = [row]

Подобный подход позволяет сопоставить каждую строку с соответствующим отделением или банкоматом. Если какому-либо банкомату или отделению соответствует более чем одна строка – это повод для проверки.

Всё гениальное – просто!

Советуем почитать