Распознавание текста (OCR)
===========================

Функция распознавания текста (OCR) позволяет автоматически извлекать
текст из файлов и бинарного содержимого документов
в рамках бизнес-процесса на платформе Synergy.

Функция реализована на уровне маршрута реестра
и выполняется как отдельный этап маршрута.


Назначение функции
------------------

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

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

Функция работает без участия пользователя:
после запуска маршрута система самостоятельно обрабатывает файл
и помещает распознанный текст в указанное поле.


Техническая реализация
----------------------

Для обработки файлов используется self-hosted модель,
работающая на CPU.

Ключевые характеристики:

* модель размещена в Docker-контейнере на отдельном хосте;
* при наличии GPU модель автоматически использует его
  для ускорения обработки;
* время обработки зависит от размера файла и объёма бинарного содержимого;
* использование мощных LLM не требуется.

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


Настройка модели ИИ
-------------------

Перед использованием функции необходимо выполнить настройку
в разделе администрирования системы.

Для этого:

1. Перейдите в раздел **Администрирование**.
2. Откройте **Настройки системы**.
3. Перейдите в подраздел **Настройки ИИ**.
4. Нажмите **«Добавить функцию ИИ»**
5. Укажите **Тип функции** и **Адрес хоста**.
6. Опционально укажите **Модель ИИ** и **API ключ** 
7. Сохраните настройки.


.. figure:: ../images/ai_settings.png

   Настройка ИИ функций

.. note::
   В разделе **Настройки ИИ** можно настроить несколько различных моделей.
   Это позволяет использовать разные модели для разных задач.



Подготовка формы
----------------

Для работы функции OCR форма реестра должна содержать хотя бы два поля:

* **Поле файла** - поле, в которое пользователь загружает документ
  для распознавания;
* **Поле текста** - поле, в которое система запишет распознанный текст.



Настройка этапа маршрута
------------------------

Функция OCR подключается на уровне этапа маршрута реестра.

Для настройки этапа:

1. Откройте маршрут реестра в Synergy IDE.
2. Добавьте новый этап или выберите существующий.
3. В настройках этапа в разделе **Тип действия**
   выберите **«Функция искусственного интеллекта»**.
4. В поле **«Тип функции ИИ»** выберите **«Распознавание текста»**.
5. В **«Поле-источник данных»** укажите **поле файла** - источник содержимого для распознавания.
6. В **«Поле-приемник данных»** укажите **поле текста** - поле, в которое будет записан результат.
7. Сохраните настройки этапа.

.. figure:: ../images/ai_ocr_stage.png

   Настройка этапа распознавания текста в маршруте


Использование функции
---------------------

После настройки маршрута и этапа OCR работа с функцией
выполняется в следующем порядке:

1. Откройте запись в реестре.
2. Загрузите файл в поле файла формы.
3. Запустите маршрут.
4. Дождитесь завершения этапа распознавания текста.
5. Откройте запись - распознанный текст будет отображён
   в текстовом поле формы.

.. note::
   Время ожидания на этапе распознавания зависит от размера файла.
   Для больших документов обработка может занять больше времени.


Поведение системы
-----------------

При выполнении этапа распознавания текста:

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