Справочник / Архив и интеграции
Локальное распознавание текста (OCR) и транскрипция
Распознавайте захваченные изображения и аудио с помощью локального рабочего процесса; сохраняйте полученный текст с привязкой к исходному файлу.
Текущая версия: используйте репозиторий исходного кода; в портативной предварительной версии 0.7.0 эта функция ещё не реализована.
Руководство по рабочему процессу · Вики
Откройте запись журнала media.saved, выберите «Распознать вложение», затем выберите
«OCR» или «транскрипция» в разделе «Запросить у архива». Обработка осуществляется вручную и локально.
Режим облачного хранения медиафайлов или автоматическая загрузка отсутствуют. Исходные байты вложения и файл
media_sha256 остаются неизменными; распознанный текст явно помечается как результат машинного
распознавания и хранится отдельно с указанием исходного хеша, версии движка/модели,
языка, параметров и времени завершения. В транскрипциях сохраняются возвращённые временные метки.
Выполняйте поиск по этим результатам с помощью функции «Поиск по распознанному тексту» и фильтра «OCR/транскрипт». Это отдельный поиск по производным данным; он не преобразует результаты машинного распознавания в исходный текст Telegram и не добавляет их к подписанным событиям.
Настройте дополнительный рабочий процесс#
Версия 1 требует хоста под управлением Linux с локальным демоном Docker. При установке в Windows TgWitness можно запускать в виртуальной машине Linux или среде WSL с собственным локальным демоном. Панель никогда не декодирует недоверенные вложения самостоятельно.
docker build -f deploy/media-worker/Dockerfile -t tgwitness-media:local .
export TGWITNESS_MEDIA_IMAGE=tgwitness-media:local
Установите эти переменные в среде службы TgWitness и перезапустите её. По умолчанию
сокет демона — /var/run/docker.sock; при развёртывании без прав root можно установить
TGWITNESS_DOCKER_SOCKET. Рабочий процесс явно использует этот сокет Unix, а
не удалённый контекст Docker. Не предоставляйте доступ к API Docker пользователям панели управления и не монтируйте
его сокет внутри контейнера распознавания.
Для транскрипции необходимо отдельно установить модель Whisper, совместимую с CTranslate2,
а затем указать TGWITNESS_WHISPER_MODEL_DIR в качестве её каталога. Рабочий процесс загружает её с помощью
local_files_only=True; выбранная модель и входные данные монтируются в режиме «только для чтения».
См. документацию по загрузке моделей движка.
Поставляемое OCR-образа содержит обучающие данные на английском и русском языках. При необходимости добавьте другой
язык в ваше образа; коды языков соответствуют
CLI Tesseract.
При обработке модели не загружаются. Процесс сборки/загрузки установочного пакета может использовать сеть;
в каждом контейнере фактического распознавания сетевые функции отключены. Установите образ
перед его включением; в процессе выполнения используется --pull=never.
Ограничения и восстановление#
Контейнер запускается от имени пользователя без привилегий с корневым каталогом, доступным только для чтения,
ограниченными возможностями, режимом no-new-privileges
, одним процессором, 2 GiB памяти, ограничением PID и ограниченной
временной файловой системой. Монтируются только проверенная копия выбранного файла и, по желанию,
каталог модели. База данных, хранилище и сессия сборщика
не монтируются. Флаги среды выполнения
Docker
обеспечивают соблюдение этих ограничений; это остается границей контейнера, а не аппаратным анклавом.
Размер файлов ограничен 50 MiB, изображений — 20 миллионами пикселей, аудиозаписей — 30 минутами при известной продолжительности, а время обработки — пятью минутами. Одновременно работает один рабочий процесс, при этом в очереди или в процессе выполнения может находиться не более 20 заданий, а в рабочей области сохраняется не более 100 заданий. Команда «Cancel» останавливает контейнер; «Retry» создаёт новое задание, связанное с предыдущей попыткой. Прерванные задания помечаются после перезапуска. Обработка может завершиться сбоем, если модель не укладывается в заданные ограничения; без изоляции она не выполняется в фоновом режиме.