Разработка
NTA
111

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

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

В закладки

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

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

  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]

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

Лайфхаки IT, проверенные решения для стандартных задач
{ "author_name": "NTA", "author_type": "editor", "tags": ["\u0431\u0435\u0440\u0435\u043c"], "comments": 0, "likes": 0, "favorites": 4, "is_advertisement": false, "subsite_label": "dev", "id": 149829, "is_wide": true, "is_ugc": false, "date": "Wed, 12 Aug 2020 23:15:04 +0300", "is_special": false }
Объявление на vc.ru
0
Комментариев нет
Популярные
По порядку

Комментарии

null