Сервис распознавания накладных из изображений в json, c помощью Finereader + Deepseek. И OCR Telegram bot

17.07.25

Интеграция - Распознавание документов и образов

Итак: https://docvision.ru.tuna.am/ и бот в телеграм @DocumentsRecognitionBot Сервис распознавания накладных из изображений в json (на самом деле в любой текст или html), c помощью Finereader + Deepseek (ОСень + Winow + 1connector). Данная публикация родилась после того, как я познакомился с фреймворком ОСень и Winow.  Идея сделать сервис аналогичный 1С по распознаванию первички родилась уже давно. Бот в Телеграм: @DocumentsRecognitionBot, разработанный на этом сервисе и SaluteBot от Сбер

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Доработанная версия сервиса предоставляющая сайт и апи с работой в фоне(для интеграции в боты)
.zip 23,77Mb
4 4 550 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

https://docvision.ru.tuna.am/ и бот в телеграм @DocumentsRecognitionBot

Что нам понадобится:

Про ОСень:

//infostart.ru/1c/articles/1980026/

Про Вино:

https://github.com/autumn-library/winow

Про коннектор:

https://github.com/vbondarevsky/1connector/tree/master

Про deepseek:

//infostart.ru/1c/tools/2366670/

На этих китах и держится весь этот сервис (пока что).

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

Суть: мини сервер winow принимает картинку, распознает ее с помощью finereader, и полученный текст скармливает deepseek, который производит пост обработку и корректировку накладной, сглаживая ошибки и выдает ответ в виде json или html(можно deepseek сказать чтобы оформил как реальную накладную). Что с этим делать дальше?

Думаю вы разберетесь. 

За основу я взял example из winow.

Вы не поверите(если не знакомы с ОСенью), но код основного модуля в итоге выглядит вот так:

 

 

Ну и собственно основная логика у меня уместилась в 2 эндпоинта:

&ТочкаМаршрута("start_processing")
Процедура НачатьОбработку(ДанныеФормы, ПараметрыЗапросаИменные, Ответ) Экспорт
	
	// Генерация уникального ID задачи
	УникальныйИД = Строка(Новый УникальныйИдентификатор());
	ПутьКХранилищу = КаталогВременныхФайлов() + "tasks\";
	СоздатьКаталог(ПутьКХранилищу);
	
	// Сохранение исходного изображения
	ИмяФайлаИзображения = ПутьКХранилищу + УникальныйИД + ".raw";
	
	url = ПараметрыЗапросаИменные["url"];
	Если ПустаяСтрока(url) Тогда
		ДанныеФайла = ДанныеФормы.НайтиЗначениеПоМетаданным(Новый Структура("name", "file"));
		ДанныеФайла.Записать(ИмяФайлаИзображения);
	Иначе
		urlclear = Сред(url, 9, СтрНайти(url, """,") - 9);
		КоннекторHTTP.Get(urlclear).ДвоичныеДанные().Записать(ИмяФайлаИзображения);
	КонецЕсли;
	
	// Создание файла статуса
	СтатусФайл = Новый ТекстовыйДокумент();
	СтатусФайл.ДобавитьСтроку("processing");
	СтатусФайл.Записать(ПутьКХранилищу + УникальныйИД + ".status");
	//ЗапуститьОбработкуВФоне(УникальныйИД, ИмяФайлаИзображения);
	// Запуск фоновой обработки
	Сообщить(ИмяФайлаИзображения);
	ПараметрыВыполнения = Новый Массив;
	ПараметрыВыполнения.Добавить(УникальныйИД);
	ПараметрыВыполнения.Добавить(ИмяФайлаИзображения);
	
	Задание = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ЗапуститьОбработкуВФоне", ПараметрыВыполнения);
	//ЗапуститьФоновоеВыполнение("ЭтотОбъект.ЗапуститьОбработкуВФоне(Парметр1,Парметр2);",Новый Структура("Параметр1,Параметр2",УникальныйИД,ИмяФайлаИзображения));
	Сообщить("Запущено фоновое");
	
	// Возвращаем ID задачи клиенту
	Ответ.УстановитьТипКонтента("json");
	Ответ.ТелоТекст = "{""task_id"":""" + УникальныйИД + """}";
	
КонецПроцедуры

 

&ТочкаМаршрута("get_result")
Процедура ПолучитьРезультат(ПараметрыЗапросаИменные, Ответ) Экспорт
	
	Идентификатор = ПараметрыЗапросаИменные["task_id"];
	ПутьКХранилищу = КаталогВременныхФайлов() + "tasks\";
	
	Ответ.УстановитьТипКонтента("json");
	
	РезФайл = Новый ТекстовыйДокумент();
	РезФайл.Прочитать(ПутьКХранилищу + Идентификатор + ".result");
	Результат = РезФайл.ПолучитьТекст();
	//Ответ.ТелоТекст = СтрШаблон("<!DOCTYPE html>%1", Результат);
	Ответ.ТелоТекст = Результат;
	
	// Очистка ресурсов
	УдалитьФайлы(ПутьКХранилищу + Идентификатор + ".txt");
	УдалитьФайлы(ПутьКХранилищу + Идентификатор + ".result");
	УдалитьФайлы(ПутьКХранилищу + Идентификатор + ".raw");
	
КонецПроцедуры

 

Проверить у себя на практике, как все это работает, можно скачав архив с примером, в который достаточно вставить токен дипсик, выполнить oscript ocr.os и у вас на localhost:3333 свой сервис по распознаванию первички.

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

Самое интересное, что это намного дешевле сервиса от вендора, в котором 3 руб./документ.

Здесь себестоимость запроса к обычной модели deepseek для 1 документа меньше 1 цента.

Спасибо за внимание!

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.189

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Публикаций не найдено

Попробуйте расширить область поиска, проверьте поисковый запрос и повторите попытку.

Или закажите индивидуальную разработку вашего решения.

Создать заказ на разработку

Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. akR00b 25 03.06.25 14:51 Сейчас в теме
Отлично, ОСень здесь выполняет роль сервиса по загрузке изображений? Можно было оставить связь 1с-Тесеракт-Дипсик-1С ?
3. exitone 23 03.06.25 15:51 Сейчас в теме
(1)
связь 1с-Тесеракт-Дипсик-1С
2. exitone 23 03.06.25 15:50 Сейчас в теме
Код основной открыт.
В ДанныеФайла двоичные данные из 1С, и можно пропустить ОСень и получить связь 1с-Тесеракт-Дипсик-1С.
4. akR00b 25 04.06.25 14:55 Сейчас в теме
(2) ОСень в этой цепочке какую роль играет? веб сервис?
5. exitone 23 04.06.25 15:16 Сейчас в теме
(4) веб сервер winow в первую очередь. и веб сервис на его основе, который можно в интернет для всех.
6. exitone 23 13.06.25 12:07 Сейчас в теме
(4)
Сервис можете потрогать по адресу: https://ocr.ru.tuna.am/ocr/login
Логин: exitone
Пароль: любой
7. exitone 23 14.06.25 12:55 Сейчас в теме
еще появился ocr bot в Телеграм: @Exitone_MasterMindBot
9. exitone 23 06.07.25 12:40 Сейчас в теме
бот @DocumentsRecognitionBot пока что работает бесплатно
Для отправки сообщения требуется регистрация/авторизация