This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Справочник по AI-движку

Пакет @snapotter/ai связывает Node.js с постоянным Python-сайдкаром для всех ML-операций. Процесс диспетчера остаётся активным между запросами, обеспечивая быстрый тёплый старт. NVIDIA CUDA автоматически определяется при запуске и используется, если доступна; иначе AI-инструменты работают на CPU.

Ускорение через iGPU Intel/AMD посредством VA-API, Quick Sync или OpenCL сегодня не поддерживается для AI-инференса. Проброс /dev/dri в контейнер не ускоряет эти инструменты Python-сайдкара, если не доступна NVIDIA GPU с поддержкой CUDA.

19 AI-инструментов Python-сайдкара в четырёх модальностях (изображение, аудио, видео, документ) плюс 2 инструмента с опциональными AI-возможностями. Все модели работают локально: после первоначальной загрузки моделей интернет не требуется.

Архитектура

Node.js Tool Route
      |
      v
 @snapotter/ai bridge.ts
      | (stdin/stdout JSON + stderr progress events)
      v
 Python dispatcher (persistent process, "ai" profile)
      |
      |-- remove_bg.py        (rembg / BiRefNet)
      |-- upscale.py          (RealESRGAN)
      |-- inpaint.py          (LaMa ONNX)
      |-- outpaint.py         (LaMa canvas expansion)
      |-- ocr.py              (PaddleOCR / Tesseract)
      |-- ocr_pdf.py          (page-by-page document OCR)
      |-- ocr_preprocess.py   (image enhancement for OCR)
      |-- detect_faces.py     (MediaPipe)
      |-- face_landmarks.py   (MediaPipe landmarks)
      |-- enhance_faces.py    (GFPGAN / CodeFormer)
      |-- colorize.py         (DDColor)
      |-- noise_removal.py    (SCUNet / tiered denoising)
      |-- red_eye_removal.py  (landmark + color analysis)
      |-- restore.py          (scratch repair + enhancement + denoising)
      |-- transcribe.py       (faster-whisper speech-to-text)
      +-- install_feature.py  (on-demand bundle installer)

Отдельный профиль диспетчера «docs» заменяет AI-список разрешённых скриптов на скрипты обработки документов (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) и пропускает тяжёлые ML-импорты.

Таймауты: 300 с по умолчанию; для OCR и удаления фона BiRefNet отводится 600 с.

Пакеты возможностей

AI-модели упакованы по общему стеку зависимостей, а не по одному архиву на инструмент. Один пакет возможностей может включать несколько инструментов, если они используют одно семейство моделей, одни Python-колёса (wheels) или одни нативные библиотеки. Это позволяет держать релизный Docker-образ меньше и избегать хранения дубликатов одних и тех же моделей матирования фона, распознавания лиц, OCR, реставрации и речи.

Docker-образ поставляется вместе с приложением и общей средой выполнения. Крупные архивы моделей загружаются по требованию в постоянный том /data/ai, а затем повторно используются каждым инструментом, которому они нужны. Если пакет уже установлен, потому что его затребовал другой инструмент, включение нового зависимого инструмента не приводит к повторной загрузке этого пакета.

Каждому AI-инструменту требуется один или несколько пакетов возможностей, прежде чем он сможет работать. Админ-интерфейс устанавливает пакеты по инструменту через POST /api/v1/admin/tools/:toolId/features/install, который определяет полный список пакетов, пропускает уже установленные и ставит в очередь только недостающие загрузки. Например, включение «Фото на паспорт» на новом экземпляре ставит в очередь background-removal и face-detection; включение того же инструмента после того, как уже установлено «Удаление фона», ставит в очередь только face-detection.

ПакетРазмерОбщая группа зависимостейИнструменты, использующие его
background-removal4-5 GBматирование фона rembg / BiRefNetremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBраспознавание лиц и ключевых точек MediaPipeblur-faces, red-eye-removal, smart-crop
object-eraser-colorize1-2 GBинпейнтинг/аутпейнтинг LaMa и DDColorerase-object, colorize, ai-canvas-expand
upscale-enhance5-6 GBRealESRGAN, GFPGAN / CodeFormer, шумоподавлениеupscale, enhance-faces, noise-removal
photo-restoration4-5 GBконвейер устранения царапин и реставрацииrestore-photo
ocr5-6 GBOCR-стек PaddleOCR / Tesseractocr, ocr-pdf
transcription~600 MBмодели преобразования речи в текст faster-whispertranscribe-audio, auto-subtitles

Инструменты с межпакетными зависимостями:

ИнструментТребуемые пакетыПричина
passport-photobackground-removal, face-detectionУдаляет фон, затем использует ключевые точки лица, чтобы обрезать кадр под правила для фото на паспорт и удостоверение личности.
enhance-facesupscale-enhance, face-detectionРаспознаёт лица перед применением улучшения GFPGAN или CodeFormer к выбранным областям лица.

Инструмент доступен только тогда, когда установлены все его требуемые пакеты. Частичная установка допустима и обрабатывается инкрементально: установленные пакеты используются повторно, недостающие пакеты показываются как загрузки, а поставленные в очередь установки выполняются по одной, чтобы общая среда Python не изменялась одновременно.


Удаление фона

Маршрут инструмента: remove-background
Модель: rembg с BiRefNet (по умолчанию) или варианты U2-Net

ПараметрТипПо умолчаниюОписание
modelstring-Вариант модели (опциональное переопределение)
backgroundTypestring"transparent"Одно из: transparent, color, gradient, blur, image
backgroundColorstring-Hex-цвет для сплошного фона
gradientColor1string-Первый цвет градиента
gradientColor2string-Второй цвет градиента
gradientAnglenumber-Угол градиента в градусах
blurEnabledboolean-Включить эффект размытия фона
blurIntensitynumber (0-100)-Интенсивность размытия
shadowEnabledboolean-Включить падающую тень от объекта
shadowOpacitynumber (0-100)-Непрозрачность тени
outputFormatstring-Формат вывода: png, webp или avif
edgeRefineinteger (0-3)-Уровень уточнения краёв
decontaminateboolean-Убрать растекание цвета с краёв

Замена фона

Маршрут инструмента: background-replace
Модель: rembg / BiRefNet (общая с remove-background)

Удаляет фон и заменяет его сплошным цветом или градиентом.

ПараметрТипПо умолчаниюОписание
backgroundType"color" | "gradient""color"Режим фона
colorstring"#ffffff"Hex-цвет фона (когда backgroundType равно color)
gradientColor1string-Первый hex-цвет градиента
gradientColor2string-Второй hex-цвет градиента
gradientAngleinteger (0-360)180Угол градиента в градусах
featherinteger (0-20)0Радиус растушёвки краёв
format"png" | "webp""png"Формат вывода

Размытие фона

Маршрут инструмента: blur-background
Модель: rembg / BiRefNet (общая с remove-background)

Размывает фон, сохраняя объект резким.

ПараметрТипПо умолчаниюОписание
intensityinteger (1-100)50Интенсивность размытия
featherinteger (0-20)0Радиус растушёвки краёв
format"png" | "webp""png"Формат вывода

Апскейлинг изображений

Маршрут инструмента: upscale
Модель: RealESRGAN (с запасным вариантом Lanczos при недоступности)

ПараметрТипПо умолчаниюОписание
scalenumber2Коэффициент увеличения
modelstring"auto"Вариант модели
faceEnhancebooleanfalseПрименить проход улучшения лиц GFPGAN
denoisenumber0Сила шумоподавления
formatstring"auto"Переопределение формата вывода
qualitynumber95Качество вывода (1-100)

OCR / извлечение текста

Маршрут инструмента: ocr
Модели: Tesseract (быстро), PaddleOCR PP-OCRv5 (сбалансированно), PaddleOCR-VL 1.5 (лучшее качество)

ПараметрТипПо умолчаниюОписание
quality"fast" | "balanced" | "best""balanced"Уровень обработки
languagestring"auto"Язык: auto, en, de, fr, es, zh, ja, ko
enhancebooleantrueПредобработка изображения для повышения точности OCR
enginestring-Устарело. Сопоставляет tesseract с fast, paddleocr с balanced

Возвращает структурированные результаты с ограничивающими рамками, оценками достоверности и извлечёнными блоками текста.

OCR для PDF

Маршрут инструмента: ocr-pdf
Модели: Та же система уровней, что и у OCR изображений

Извлекает текст из отсканированных PDF-документов с помощью AI-OCR, страница за страницей.

ПараметрТипПо умолчаниюОписание
quality"fast" | "balanced" | "best""balanced"Уровень обработки
languagestring"auto"Язык: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Выбор страниц: "all", "1-3", "1,3,5"

Размытие лиц / персональных данных

Маршрут инструмента: blur-faces
Модель: распознавание лиц MediaPipe

ПараметрТипПо умолчаниюОписание
blurRadiusnumber (1-100)30Радиус гауссова размытия
sensitivitynumber (0-1)0.5Порог достоверности распознавания

Улучшение лиц

Маршрут инструмента: enhance-faces
Модели: GFPGAN, CodeFormer

ПараметрТипПо умолчаниюОписание
model"auto" | "gfpgan" | "codeformer""auto"Модель улучшения
strengthnumber (0-1)0.8Сила улучшения
sensitivitynumber (0-1)0.5Порог распознавания лиц
onlyCenterFacebooleanfalseУлучшать только самое центральное лицо

AI-раскрашивание

Маршрут инструмента: colorize
Модель: DDColor (с запасным вариантом OpenCV DNN)

Преобразует чёрно-белые или полутоновые фотографии в полноцветные.

ПараметрТипПо умолчаниюОписание
intensitynumber (0-1)1.0Сила насыщенности цвета
model"auto" | "ddcolor" | "opencv""auto"Вариант модели

Удаление шума

Маршрут инструмента: noise-removal
Модель: SCUNet (многоуровневый конвейер шумоподавления)

ПараметрТипПо умолчаниюОписание
tier"quick" | "balanced" | "quality" | "maximum""balanced"Уровень обработки
strengthnumber (0-100)50Сила шумоподавления
detailPreservationnumber (0-100)50Сколько деталей сохранять; выше значение сохраняет больше текстуры
colorNoisenumber (0-100)30Сила подавления цветового шума
formatstring"original"Формат вывода: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Качество кодирования вывода

Удаление эффекта красных глаз

Маршрут инструмента: red-eye-removal

Распознаёт ключевые точки лица, находит области глаз и корректирует перенасыщенность красного канала.

ПараметрТипПо умолчаниюОписание
sensitivitynumber (0-100)50Порог обнаружения красных пикселей
strengthnumber (0-100)70Сила коррекции
formatstring-Переопределение формата вывода (опционально)
qualitynumber (1-100)90Качество вывода

Реставрация фотографий

Маршрут инструмента: restore-photo

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

ПараметрТипПо умолчаниюОписание
scratchRemovalbooleantrueОбнаруживать и устранять царапины, разрывы
faceEnhancementbooleantrueПрименить проход улучшения лиц
fidelitynumber (0-1)0.7Сила улучшения лиц (выше = более консервативно)
denoisebooleantrueПрименить проход шумоподавления
denoiseStrengthnumber (0-100)25Сила шумоподавления
colorizebooleanfalseРаскрасить после реставрации
colorizeStrengthnumber (0-100)85Интенсивность раскрашивания

Фото на паспорт

Маршрут инструмента: passport-photo
Модели: ключевые точки лица MediaPipe + удаление фона BiRefNet

Двухфазный рабочий процесс: анализ (распознать лицо + удалить фон), затем генерация (обрезка, изменение размера, замощение). Поддерживает 37+ стран в 6 регионах.

Фаза 1: анализ

POST /api/v1/tools/image/passport-photo/analyze

Принимает файл изображения (multipart). Возвращает данные ключевых точек лица, base64-превью и размеры изображения.

Фаза 2: генерация

POST /api/v1/tools/image/passport-photo/generate

Принимает JSON-тело с результатами фазы 1 плюс настройки генерации:

ПараметрТипПо умолчаниюОписание
jobIdstring(обязательно)Идентификатор задания из фазы 1
filenamestring(обязательно)Исходное имя файла из фазы 1
countryCodestring(обязательно)ISO-код страны (например, US, GB, IN)
documentTypestring"passport"Тип документа
bgColorstring"#FFFFFF"Hex-цвет фона
printLayoutstring"none"Макет печати: none, 4x6, a4, letter
maxFileSizeKbnumber0Максимальный размер файла в KB (0 = без ограничения)
dpinumber (72-1200)300DPI вывода
customWidthMmnumber-Пользовательская ширина в мм (переопределяет спецификацию страны)
customHeightMmnumber-Пользовательская высота в мм (переопределяет спецификацию страны)
zoomnumber (0.5-3)1Коэффициент масштабирования
adjustXnumber0Регулировка горизонтального положения
adjustYnumber0Регулировка вертикального положения
landmarksobject(обязательно)Ключевые точки из фазы 1
imageWidthnumber(обязательно)Ширина изображения из фазы 1
imageHeightnumber(обязательно)Высота изображения из фазы 1

Удаление объектов (инпейнтинг)

Маршрут инструмента: erase-object
Модель: LaMa через ONNX Runtime

Маска отправляется как вторая файловая часть (имя поля mask), а не как base64. Белые пиксели в маске обозначают области для удаления. Настройки format и quality отправляются как поля формы верхнего уровня.

ПараметрТипПо умолчаниюОписание
filefile(обязательно)Исходное изображение (multipart)
maskfile(обязательно)Изображение маски (multipart, имя поля mask, белое = удалить)
formatstring"auto"Формат вывода: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Качество вывода

Ускоряется через CUDA при наличии NVIDIA GPU.

AI-расширение холста

Маршрут инструмента: ai-canvas-expand
Модель: аутпейнтинг на базе LaMa

Расширяет холст изображения в любом направлении и заполняет новые области сгенерированным AI-содержимым, совпадающим с существующим изображением.

ПараметрТипПо умолчаниюОписание
extendTopinteger0Пикселей для расширения сверху
extendRightinteger0Пикселей для расширения справа
extendBottominteger0Пикселей для расширения снизу
extendLeftinteger0Пикселей для расширения слева
tier"fast" | "balanced" | "high""balanced"Уровень качества
formatstring"auto"Формат вывода: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Качество вывода

Хотя бы одно направление расширения должно быть больше 0.

Умная обрезка

Маршрут инструмента: smart-crop
Модель: распознавание лиц MediaPipe (только режим лиц)

ПараметрТипПо умолчаниюОписание
modestring"subject"Стратегия обрезки: subject, face, trim
strategy"attention" | "entropy""attention"Стратегия для режима объекта
widthinteger-Ширина вывода
heightinteger-Высота вывода
paddinginteger (0-50)0Процент отступа вокруг объекта
facePresetstring"head-shoulders"Предустановка кадрирования, когда mode=face
sensitivitynumber (0-1)0.5Порог распознавания лиц
thresholdinteger (0-255)30Порог определения фона (режим обрезки)
padToSquarebooleanfalseДополнить обрезанный результат до квадрата
padColorstring"#ffffff"Цвет фона для квадратного дополнения
targetSizeinteger-Целевой размер для дополненного вывода (пиксели)
qualityinteger (1-100)-Качество вывода

Устаревшие значения mode attention и content принимаются и сопоставляются с subject и trim соответственно.

Предустановки для лиц:

ПредустановкаЛучше всего для
closeupПортретные фото
head-shouldersФото профиля
upper-bodyLinkedIn / официальные
half-bodyВся верхняя часть тела

Транскрибирование аудио

Маршрут инструмента: transcribe-audio
Модель: faster-whisper

Преобразует речь в текст. Поддерживает вывод в форматах простого текста, SRT и VTT.

ПараметрТипПо умолчаниюОписание
languagestring"auto"Язык: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Формат вывода

Автоматические субтитры

Маршрут инструмента: auto-subtitles
Модель: faster-whisper (извлекает аудио из видео, затем транскрибирует)

Генерирует файлы субтитров из звуковой дорожки видео.

ПараметрТипПо умолчаниюОписание
languagestring"auto"Язык: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Формат вывода субтитров

Исправление прозрачности PNG

Маршрут инструмента: transparency-fixer
Модель: BiRefNet HR-matting (разрешение 2048x2048)

Исправляет «псевдопрозрачные» PNG, где фон был удалён, но остались бахрома, ореолы или полупрозрачные артефакты. Использует высокоразрешающую модель матирования BiRefNet для создания чистого альфа-канала, затем применяет настраиваемую обработку удаления бахромы для устранения цветового загрязнения вдоль краёв.

Цепочка запасных вариантов при нехватке памяти (OOM): Если BiRefNet HR-matting превышает доступную память, инструмент автоматически переходит на birefnet-general, затем на u2net.

ПараметрТипПо умолчаниюОписание
defringenumber (0-100)30Сила удаления бахромы по краям для устранения цветового загрязнения
outputFormat"png" | "webp""png"Формат выходного изображения
removeWatermarkbooleanfalseПрименить предобработку удаления водяных знаков (медианный фильтр)
bash
curl -X POST http://localhost:1349/api/v1/tools/image/transparency-fixer \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F 'settings={"defringe":30,"outputFormat":"png"}'

Инструменты с опциональными AI-возможностями

Следующие инструменты не являются инструментами Python-сайдкара, но используют AI-возможности, когда включены определённые опции.

Улучшение изображений

Маршрут инструмента: image-enhancement
Движок: на основе анализа (гистограмма и статистика Sharp)

Анализирует изображение и применяет автоматические коррекции экспозиции, контраста, баланса белого, насыщенности, резкости и шума. Поддерживает режимы под конкретные сцены.

ПараметрТипПо умолчаниюОписание
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Режим сцены для настройки коррекций
intensitynumber (0-100)50Общая сила коррекции
corrections.exposurebooleantrueПрименить коррекцию экспозиции
corrections.contrastbooleantrueПрименить коррекцию контраста
corrections.whiteBalancebooleantrueПрименить коррекцию баланса белого
corrections.saturationbooleantrueПрименить коррекцию насыщенности
corrections.sharpnessbooleantrueПрименить коррекцию резкости
corrections.denoisebooleantrueПрименить шумоподавление
deepEnhancebooleanfalseВключить AI-удаление шума через SCUNet (требует пакет upscale-enhance)

Дополнительная конечная точка анализа доступна по адресу POST /api/v1/tools/image/image-enhancement/analyze, которая возвращает обнаруженные коррекции без их применения.

Контентно-зависимое изменение размера (Seam Carving)

Маршрут инструмента: content-aware-resize
Движок: бинарник Go caire (не Python, без выгоды от GPU)

Интеллектуально изменяет размер изображений, удаляя низкоэнергетические швы и сохраняя важное содержимое.

ПараметрТипПо умолчаниюОписание
widthnumber-Целевая ширина
heightnumber-Целевая высота
protectFacesbooleanfalseЗащищать обнаруженные области лиц (требует пакет face-detection)
blurRadiusnumber (0-20)4Предварительное размытие для расчёта энергии
sobelThresholdnumber (1-20)2Порог чувствительности к краям
squarebooleanfalseПринудительный квадратный вывод