Цель: Автоматизировать работу по обработке сканов
Дано: Существует файловый ресурс для сканирования и хранения счетов.
Задачи:
- Проверять правильность указания Р/С в платежных документах относительно контрагентов и выставленных счетов
- Необходимо настроить инструмент для автоматического "подшития" скана к документу 1С по входящему номеру
- Ускорить создание документов, номенклатуры
- Ведение номенклатуры поставщика
Условия для начала работы
- python 3.8 & higer
- tesseract-ocr-setup-3.05.01
- 1С Предприятие. (Разработка и эксплуатация велась на серверной версии) 1С:Предприятие 8.3 (8.3.17.1851)
Файлы типов pdf, jpg расположенные в каталогах сканируются py. скриптом, после чего текстовые данные попадают в аргегатор данных. Агрегатор, периодически анализирует содержание текстовых данных и пытается их структурировать.
- список файлов
- сырой текст
- текст с параметрами (координаты, только символы или цифры)
Справочник “файлы” (меню “Содержание файл”)
Например: pdf файл содержит УПД от клиента, после того, как данные попали в агрегатор, регламентное задание по очереди запускает очередь модулей анализа, в которых производится анализ всех блоков текста и находит несколько последовательностей из 10 цифр, по которой можно определить ИНН контрагента. К записи файла, помимо текстовой информации подкрепляется структурированные поля, такие как “Вид Документа” или “Контрагенты”.
Для ускорения анализа все файлы обрабатываются в параллельном режиме
Модуль анализа “контрагенты”
api результат get - запроса после обработки
БСП взято за основание решение.
Примеры кода справочника "Модули анализа"
Тип документа:
//#_Переменные модуля
//ИсходныйТекст - Содержимое файла
//СообщениеМодуля - строка неограниченной длинны, добавлять в конец строки
//РезультатАлгоритма - строка неограниченной длинны
//РезультатАлгоритма = ИсходныйТекст; //пример простого копирования
Если Найти(врег(ИсходныйТекст),"ТОРГ-12") Тогда
РезультатАлгоритма = "ТОРГ-12";
Конецесли;
Если Найти(ИсходныйТекст,"Счет-фактура") Тогда
РезультатАлгоритма = "Счет-фактура";
Конецесли;
Расчетные счета:
ТаблицаПолей = _МодульОбработки.ВернутьТаблицуПоЗначениям(ИсходныйТекст);
//Поиск р/с
МассивСтрок = ТаблицаПолей.НайтиСтроки(Новый Структура("ТолькоЦифры,ДлиннаПоля",Истина,20));
МассивЗначений = ТаблицаПолей.Скопировать(МассивСтрок,"ЗначениеПоля").ВыгрузитьКолонку("ЗначениеПоля");
РезультатАлгоритма = _МодульОбработки.РазвернутьМассивВСтроку(МассивЗначений);
Дополнительно:
- Уважаемые пользователи проект в стадии активного использования поэтому планирую создать отдельную ветку на гите куда буду скидывать наработанные модули.
- А пока осваиваю регулярные выражения.
- Анализ листа можно производить с учетом координат слов/предложений, т.к. эти данные так же собираются от tesseract.
Интересное из последних работ: