Сервис извлечения текста из файлов
schema_type: howto howto_total_time: PT20M
Сервис извлечения текста из файлов
«Управление IT-отделом 8» умеет извлекать текст из присоединённых к заданиям и комментариям файлов и использовать этот текст в двух местах:
- Полнотекстовый поиск платформы — позволяет искать задания по содержимому пр икреплённых документов.
- AI-ассистент — при анализе задания читает не только тему и описание, но и содержимое прикреплённых файлов.
По умолчанию извлечение делает встроенный механизм 1С с использованием технологии IFilter. Этот вариант работает только под Windows и требует, чтобы для каждого формата файла на сервере 1С был установлен соответствующий IFilter (Adobe iFilter для PDF, Microsoft Office iFilter для DOCX и т.д.). Со сканами документов он не справляется — текст из изображений не извлекается.
В качестве альтернативы можно подключить внешний сервис извлечения текста. Он закрывает все слабые места встроенного механизма.
Чем сервис лучше встроенного варианта
| Что не умеет встроенный механизм 1С | Что умеет внешний сервис |
|---|---|
| Работает только под Windows | Работает на Windows и Linux (Docker) |
| Требует установленные IFilter в системе | Самодостаточный образ — все зависимости внутри |
| Сканы документов и фотографии — пустой текст | Распознавание изображений (OCR) на русском и английском |
| Архивы не разбираются | ZIP, RAR, 7Z распаковываются автоматически (до 3 уровней вложенности) |
| EML, MSG, EPUB не поддерживаются | Поддерживаются |
| HTML/веб-страницы — не работает | Извлекает текст из веб-страниц по URL |
Поддерживаемые форматы внешнего сервиса:
- Документы: PDF, DOCX, DOC, ODT, RTF
- Презентации: PPTX, PPT (с заметками докладчика)
- Таблицы: XLSX, XLS, ODS, CSV
- Изображения с распознаванием: JPG, PNG, TIFF, BMP, GIF, WebP
- Архивы: ZIP, RAR, 7Z, TAR, GZ
- Электронная почта: EML, MSG
- Книги и веб: EPUB, HTML
- Текст и конфигурации: TXT, JSON, XML, YAML, TOML, INI
- Исходный код: более 50 языков программирования
Локальное извлечение текстовых файлов
Программа умеет читать содержимое простых текстовых файлов напрямую — без обращения к внешнему сервису. Это значит, что даже если сервис не настроен, файлы следующих форматов будут обрабатываться автоматически:
txt, md, log, bsl, os, xml, json, yaml, yml, html, htm, css, js, ts, py, sql, csv, ini, conf, sh, ps1, bat
Локальное извлечение работает везде — и в полнотекстовом поиске, и в ассистенте при анализе заданий, и в чатах ассистента при прикреплении файлов.
Ограничение по кодировке. Чтение выполняется в кодировке UTF-8. Если файл сохранён в другой кодировке (например, Windows-1251 или UTF-16), содержимое не извлечётся. Это не ошибка программы — внешний HTTP-сервис с такими файлами тоже не справится. Пересохраните файл в UTF-8, чтобы решить проблему.
Размер файла для локального извлечения ограничен тем же лимитом, что и для сервиса — по умолчанию 20 МБ.
Совет
Локальное извлечение работает всегда — даже до настройки сервиса. Это хороший способ начать использовать ассистента с текстовыми логами, конфигами и скриптами, не разворачивая Docker.
Что понадобится для подключения
- Сервер, на котором будет запущен сервис извлечения. Подходит любой Linux или Windows с установленным Docker. Для распознавания сканов рекомендуется минимум 2 ГБ ОЗУ и 2 ядра процессора.
- Сетевой доступ от сервера 1С к серверу с сервисом (один HTTP-порт, по умолчанию
7555). - Доступ к настройкам параметров учёта в «Управление IT-отделом 8» (требуются права администратора).
Совет
Если сервер 1С работает под Linux — внешний сервис фактически единственный способ получить извлечение текста из PDF/DOCX. Встроенный механизм Windows IFilter в этом случае недоступен.
Шаг 1. Развёртывание сервиса
Самый простой способ — через Docker. Создайте на сервере файл docker-compose.yml:
services:
extract-text:
image: text-extraction-api:latest
ports:
- "7555:7555"
environment:
AUTH_MODE: apikey
API_KEYS: "ваш-секретный-ключ-мини мум-20-символов"
restart: unless-stopped
Запустите сервис:
docker compose up -d
После запуска проверьте, что сервис отвечает:
curl http://localhost:7555/health
Должен вернуться ответ со статусом «ok».
Безопасность
Не выставляйте сервис в публичную сеть. Безопаснее всего развернуть его в локальной сети рядом с сервером 1С и обращаться по внутреннему IP-адресу. Если необходим внешний доступ — обязательно используйте AUTH_MODE=apikey и настройте reverse proxy с HTTPS.
Без авторизации
Если сервис стоит в полностью закрытой сети и доступ к нему есть только у сервера 1С, можно запустить его без ключа:
environment:
AUTH_MODE: none
В этом случае поле «Ключ сервиса извлечения текста» в 1С оставьте пустым.
Проект сервиса с подробной документацией по развёртыванию: https://github.com/Diversus23/extract-text.
Шаг 2. Настройка в «Управление IT-отделом 8»
- Откройте раздел «Администрирование» → «Настройки параметров учёта».
- Перейдите на закладку «Файлы».
- В группе «Извлечение текста» заполните поля:
- Адрес сервиса извлечения текста — полный URL сервиса с указанием версии API. Например,
http://192.168.1.100:7555/v1. - Ключ сервиса извлечения текста — тот же ключ, что задан в
API_KEYSсервиса. Если сервис запущен в режиме без авторизации (AUTH_MODE=none) — оставьте поле пустым.
- Адрес сервиса извлечения текста — полный URL сервиса с указанием версии API. Например,
- Нажмите «Записать» — настройки сохраняются автоматически.
Осторожно
/v1Указывайте URL до версии API включительно. Правильно: http://192.168.1.100:7555/v1. Без /v1 запросы будут возвращать ошибку «Не найдено».
Шаг 3. Проверка подключения
На той же закладке «Файлы» нажмите кнопку «Проверить подключение». Программа отправит в сервис тестовый файл и проверит, что сервис правильно вернул его содержимое.
Возможные результаты:
- «Подключение успешно. Адрес: ... Время отклика: ... мс» — всё настроено корректно, можно пользоваться.
- «Адрес сервиса не задан» — поле «Адрес сервиса извлечения текста» пустое.
- «Сервис вернул ошибку: Сетевая ошибка ...» — сервер 1С не может достучаться до сервиса. Проверьте URL, доступность по сети, что сервис запущен.
- «Сервис вернул ошибку: Invalid API key» — ключ в настр ойках 1С не совпадает с ключом сервиса. Перепроверьте поле «Ключ сервиса извлечения текста».
- «Сервис ответил, но не вернул содержимое тестового файла» — сервис на адресе отвечает, но это, скорее всего, не сервис извлечения текста, а что-то другое (например, веб-сервер по умолчанию). Перепроверьте адрес.
Совет
Перед нажатием «Проверить подключение» сначала запишите изменения настроек — кнопка работает с уже сохранёнными значениями. Если форма помечена как «Изменено», программа подскажет это сделать.
Как это работает в повседневной работе
После настройки сервиса извлечение текста начинает работать автоматически — никаких дополнительных действий не требуется.
Полнотекстовый поиск
После того, как файл прикреплён к заданию или комментарию, в течение нескольких минут (по расписанию регламентного задания «Извлечение текста») его содержимое попадает в индекс полнотекстового поиска. После этого задание можно найти по любому слову из прикреплённого документа через стандартный поиск конфигурации.
Анализ заданий ассистентом
Когда AI-ассистент анализирует задание (например, по нажатию кнопки «Анализировать» или через автоматизацию):
- Картинки (JPG, PNG, JPEG) отправляются в нейросеть как изображения — модель «видит» их напрямую (если выбрана мультимодальная модель).
- Документы (PDF, DOCX, XLSX, EML и т.д.) — программа извлекает из них текст через сервис и подкладывает его в текст запроса с разделителями вида
--- FILE: договор.pdf ---. Так нейросеть может анализировать содержимое документов, даже если выбранная модель не умеет работать с файлами напрямую. - Архивы распаковываются автоматичес ки — нейросеть увидит содержимое всех файлов внутри.
Извлечение делается по требованию: содержимое прикреплённого PDF реально читается только в тот момент, когда ассистент действительно запрашивает анализ задания. Если файл никому не понадобился — лишней работы не происходит.
Файлы в чатах ассистента
В чатах ассистента поведение немного отличается. Когда вы прикрепляете файл к сообщению, программа сразу начинает его обработку в фоне — не дожидаясь регламента и не дожидаясь следующего запроса к нейросети. К моменту, когда вы отправите сообщение, текст файла уже будет готов и автоматически включится в контекст переписки.
Если вы прикрепили файл и сразу же отправили запрос — программа в момент сборки контекста сделает это синхронно. Небольшая задержка возможна для крупных файлов (несколько МБ), но это исключение.
Подробнее о работе с файлами в чатах — в статье Работа с файлами в AI-ассистенте.
Если что-то не работает
«Подключение успешно», но текст из файлов не появляется в поиске
Полнотекстовый индекс обновляется регламентным заданием «Извлечение текста». По умолчанию оно запускается раз в несколько минут. Подождите 5–10 минут после прикрепления файла. Также проверьте, что в «Администрирование» → «Регламентные и фоновые задания» регламент «Извлечение текста» включён.
Сервис стал недоступен — что произойдёт?
Ассистент в момент анализа задания пропустит файлы, которые не успел обработать (в журнале регистрации появится запись с пометкой «Файлы.Извлечение текста»). Полнотекстовый поиск продолжит работать со старыми, ранее проиндексированными файлами. Уже извлечённые тексты остаются в базе и не теряются.
После восстановления сервиса извлечение возобновится автоматически на следующем тике регламента.
Хочу временно отключить сервис и вернуться к встроенному механизму
Очистите поле «Ад рес сервиса извлечения текста» в настройках и нажмите «Записать». Программа автоматически переключится на встроенный механизм Windows IFilter — никакая настройка регламента или дополнительные действия не требуются.
Файл с расширением .txt, .md или .log не извлекается, а сервис отключён
Для этих форматов программа читает содержимое напрямую, без HTTP-сервиса. Если извлечение не происходит, скорее всего, файл сохранён в неподдерживаемой кодировке (например, Windows-1251 или UTF-16). Пересохраните файл в UTF-8 — и он обработается автоматически.
Для дополнительной диагностики откройте журнал регистрации и отфильтруйте по событию «Файлы.Извлечение текста» — там будет подробное сообщение о причине.