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

Referencia del motor de IA

El paquete @snapotter/ai conecta Node.js con un sidecar de Python persistente para todas las operaciones de ML. El proceso despachador permanece activo entre solicitudes para lograr un arranque en caliente rápido. NVIDIA CUDA se detecta automáticamente al inicio y se usa cuando está disponible; de lo contrario, las herramientas de IA se ejecutan en la CPU.

La aceleración con iGPU de Intel/AMD a través de VA-API, Quick Sync u OpenCL no es compatible hoy con la inferencia de IA. Mapear /dev/dri dentro de un contenedor no acelera estas herramientas del sidecar de Python a menos que haya disponible una GPU NVIDIA compatible con CUDA.

19 herramientas de IA del sidecar de Python en cuatro modalidades (imagen, audio, video, documento), más 2 herramientas con capacidades de IA opcionales. Todos los modelos se ejecutan localmente: no se requiere internet tras la descarga inicial del modelo.

Arquitectura

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)

Un perfil de despachador "docs" independiente reemplaza la lista de permitidos de IA con scripts de procesamiento de documentos (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) y omite las importaciones pesadas de ML.

Tiempos de espera: 300 s por defecto; OCR y la eliminación de fondo con BiRefNet obtienen 600 s.

Paquetes de funciones

Los modelos de IA se empaquetan por pila de dependencias compartida, no un archivo por herramienta. Un paquete de funciones puede habilitar varias herramientas cuando estas usan la misma familia de modelos, los mismos wheels de Python o las mismas librerías nativas. Esto mantiene la imagen Docker de la versión más pequeña y evita almacenar copias duplicadas de los mismos modelos de matting de fondo, detección de rostros, OCR, restauración y voz.

La imagen Docker incluye la aplicación más el entorno de ejecución común. Los archivos de modelos grandes se descargan bajo demanda en el volumen persistente /data/ai, y luego los reutiliza cada herramienta que los necesite. Si un paquete ya está instalado porque otra herramienta lo necesitó, habilitar una nueva herramienta dependiente no vuelve a descargar ese paquete.

Cada herramienta de IA requiere uno o más paquetes de funciones antes de poder ejecutarse. La interfaz de administración instala por herramienta a través de POST /api/v1/admin/tools/:toolId/features/install, que resuelve la lista completa de paquetes, omite los paquetes que ya están instalados y encola solo las descargas faltantes. Por ejemplo, habilitar Foto de pasaporte en una instancia nueva encola background-removal y face-detection; habilitarla después de que Eliminación de fondo ya está instalado encola solo face-detection.

PaqueteTamañoGrupo de dependencias compartidasHerramientas que lo usan
background-removal4-5 GBmatting de fondo rembg / BiRefNetremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBdetección de rostros y puntos de referencia de MediaPipeblur-faces, red-eye-removal, smart-crop
object-eraser-colorize1-2 GBinpainting/outpainting con LaMa y DDColorerase-object, colorize, ai-canvas-expand
upscale-enhance5-6 GBRealESRGAN, GFPGAN / CodeFormer, reducción de ruidoupscale, enhance-faces, noise-removal
photo-restoration4-5 GBreparación de arañazos y pipeline de restauraciónrestore-photo
ocr5-6 GBpila de OCR PaddleOCR / Tesseractocr, ocr-pdf
transcription~600 MBmodelos de voz a texto faster-whispertranscribe-audio, auto-subtitles

Herramientas con dependencias entre paquetes:

HerramientaPaquetes requeridosMotivo
passport-photobackground-removal, face-detectionElimina el fondo y luego usa los puntos de referencia del rostro para encuadrar el recorte según las reglas de fotos de pasaporte y de identificación.
enhance-facesupscale-enhance, face-detectionDetecta rostros antes de ejecutar la mejora con GFPGAN o CodeFormer en las regiones de rostro seleccionadas.

Una herramienta está disponible solo cuando todos sus paquetes requeridos están instalados. Las instalaciones parciales son válidas y se manejan de forma incremental: los paquetes instalados se reutilizan, los paquetes faltantes se muestran como descargas y las instalaciones en cola se ejecutan una a la vez para que el entorno de Python compartido no se modifique de forma concurrente.


Eliminación de fondo

Ruta de la herramienta: remove-background
Modelo: rembg con BiRefNet (por defecto) o variantes de U2-Net

ParámetroTipoPor defectoDescripción
modelstring-Variante del modelo (anulación opcional)
backgroundTypestring"transparent"Uno de: transparent, color, gradient, blur, image
backgroundColorstring-Color hexadecimal para fondo sólido
gradientColor1string-Primer color del degradado
gradientColor2string-Segundo color del degradado
gradientAnglenumber-Ángulo del degradado en grados
blurEnabledboolean-Activar el efecto de desenfoque de fondo
blurIntensitynumber (0-100)-Intensidad del desenfoque
shadowEnabledboolean-Activar la sombra proyectada sobre el sujeto
shadowOpacitynumber (0-100)-Opacidad de la sombra
outputFormatstring-Formato de salida: png, webp o avif
edgeRefineinteger (0-3)-Nivel de refinamiento de bordes
decontaminateboolean-Eliminar la contaminación de color de los bordes

Reemplazo de fondo

Ruta de la herramienta: background-replace
Modelo: rembg / BiRefNet (compartido con remove-background)

Elimina el fondo y lo reemplaza por un color sólido o un degradado.

ParámetroTipoPor defectoDescripción
backgroundType"color" | "gradient""color"Modo de fondo
colorstring"#ffffff"Color hexadecimal del fondo (cuando backgroundType es color)
gradientColor1string-Primer color hexadecimal del degradado
gradientColor2string-Segundo color hexadecimal del degradado
gradientAngleinteger (0-360)180Ángulo del degradado en grados
featherinteger (0-20)0Radio de difuminado de bordes
format"png" | "webp""png"Formato de salida

Desenfocar fondo

Ruta de la herramienta: blur-background
Modelo: rembg / BiRefNet (compartido con remove-background)

Desenfoca el fondo mientras mantiene nítido al sujeto.

ParámetroTipoPor defectoDescripción
intensityinteger (1-100)50Intensidad del desenfoque
featherinteger (0-20)0Radio de difuminado de bordes
format"png" | "webp""png"Formato de salida

Escalado de imagen

Ruta de la herramienta: upscale
Modelo: RealESRGAN (con respaldo Lanczos cuando no está disponible)

ParámetroTipoPor defectoDescripción
scalenumber2Factor de escalado
modelstring"auto"Variante del modelo
faceEnhancebooleanfalseAplicar una pasada de mejora de rostros con GFPGAN
denoisenumber0Intensidad de la reducción de ruido
formatstring"auto"Anulación del formato de salida
qualitynumber95Calidad de salida (1-100)

OCR / Extracción de texto

Ruta de la herramienta: ocr
Modelos: Tesseract (rápido), PaddleOCR PP-OCRv5 (equilibrado), PaddleOCR-VL 1.5 (mejor)

ParámetroTipoPor defectoDescripción
quality"fast" | "balanced" | "best""balanced"Nivel de procesamiento
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko
enhancebooleantruePreprocesar la imagen para mejorar la precisión del OCR
enginestring-Obsoleto. Asigna tesseract a fast, y paddleocr a balanced

Devuelve resultados estructurados con cuadros delimitadores, puntuaciones de confianza y bloques de texto extraídos.

OCR de PDF

Ruta de la herramienta: ocr-pdf
Modelos: El mismo sistema de niveles que el OCR de imágenes

Extrae texto de documentos PDF escaneados usando OCR con IA, página por página.

ParámetroTipoPor defectoDescripción
quality"fast" | "balanced" | "best""balanced"Nivel de procesamiento
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Selección de páginas: "all", "1-3", "1,3,5"

Desenfoque de rostros / PII

Ruta de la herramienta: blur-faces
Modelo: detección de rostros de MediaPipe

ParámetroTipoPor defectoDescripción
blurRadiusnumber (1-100)30Radio del desenfoque gaussiano
sensitivitynumber (0-1)0.5Umbral de confianza de detección

Mejora de rostros

Ruta de la herramienta: enhance-faces
Modelos: GFPGAN, CodeFormer

ParámetroTipoPor defectoDescripción
model"auto" | "gfpgan" | "codeformer""auto"Modelo de mejora
strengthnumber (0-1)0.8Intensidad de la mejora
sensitivitynumber (0-1)0.5Umbral de detección de rostros
onlyCenterFacebooleanfalseMejorar solo el rostro más central

Coloración con IA

Ruta de la herramienta: colorize
Modelo: DDColor (con respaldo OpenCV DNN)

Convierte fotos en blanco y negro o en escala de grises a color completo.

ParámetroTipoPor defectoDescripción
intensitynumber (0-1)1.0Intensidad de la saturación de color
model"auto" | "ddcolor" | "opencv""auto"Variante del modelo

Eliminación de ruido

Ruta de la herramienta: noise-removal
Modelo: SCUNet (pipeline de reducción de ruido por niveles)

ParámetroTipoPor defectoDescripción
tier"quick" | "balanced" | "quality" | "maximum""balanced"Nivel de procesamiento
strengthnumber (0-100)50Intensidad de la reducción de ruido
detailPreservationnumber (0-100)50Cuánto detalle preservar; un valor más alto conserva más textura
colorNoisenumber (0-100)30Intensidad de la reducción de ruido de color
formatstring"original"Formato de salida: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Calidad de codificación de salida

Eliminación de ojos rojos

Ruta de la herramienta: red-eye-removal

Detecta los puntos de referencia del rostro, localiza las regiones de los ojos y corrige la sobresaturación del canal rojo.

ParámetroTipoPor defectoDescripción
sensitivitynumber (0-100)50Umbral de detección de píxeles rojos
strengthnumber (0-100)70Intensidad de la corrección
formatstring-Anulación del formato de salida (opcional)
qualitynumber (1-100)90Calidad de salida

Restauración de fotos

Ruta de la herramienta: restore-photo

Pipeline de varios pasos para fotos antiguas o dañadas: detección y reparación de arañazos/roturas, mejora de rostros, reducción de ruido y coloración opcional.

ParámetroTipoPor defectoDescripción
scratchRemovalbooleantrueDetectar y reparar arañazos, roturas
faceEnhancementbooleantrueAplicar una pasada de mejora de rostros
fidelitynumber (0-1)0.7Intensidad de la mejora de rostros (mayor = más conservador)
denoisebooleantrueAplicar una pasada de reducción de ruido
denoiseStrengthnumber (0-100)25Intensidad de la reducción de ruido
colorizebooleanfalseColorizar tras la restauración
colorizeStrengthnumber (0-100)85Intensidad de la coloración

Foto de pasaporte

Ruta de la herramienta: passport-photo
Modelos: puntos de referencia del rostro de MediaPipe + eliminación de fondo con BiRefNet

Flujo de trabajo en dos fases: analizar (detectar rostro + eliminar fondo) y luego generar (recortar, redimensionar, mosaico). Admite más de 37 países en 6 regiones.

Fase 1: Analizar

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

Acepta un archivo de imagen (multipart). Devuelve los datos de puntos de referencia del rostro, una vista previa en base64 y las dimensiones de la imagen.

Fase 2: Generar

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

Acepta un cuerpo JSON con los resultados de la Fase 1 más los ajustes de generación:

ParámetroTipoPor defectoDescripción
jobIdstring(requerido)ID del trabajo de la Fase 1
filenamestring(requerido)Nombre de archivo original de la Fase 1
countryCodestring(requerido)Código de país ISO (p. ej., US, GB, IN)
documentTypestring"passport"Tipo de documento
bgColorstring"#FFFFFF"Color de fondo hexadecimal
printLayoutstring"none"Diseño de impresión: none, 4x6, a4, letter
maxFileSizeKbnumber0Tamaño máximo de archivo en KB (0 = sin límite)
dpinumber (72-1200)300DPI de salida
customWidthMmnumber-Ancho personalizado en mm (anula la especificación del país)
customHeightMmnumber-Alto personalizado en mm (anula la especificación del país)
zoomnumber (0.5-3)1Factor de zoom
adjustXnumber0Ajuste de la posición horizontal
adjustYnumber0Ajuste de la posición vertical
landmarksobject(requerido)Puntos de referencia de la Fase 1
imageWidthnumber(requerido)Ancho de imagen de la Fase 1
imageHeightnumber(requerido)Alto de imagen de la Fase 1

Borrado de objetos (inpainting)

Ruta de la herramienta: erase-object
Modelo: LaMa vía ONNX Runtime

La máscara se envía como una segunda parte de archivo (nombre de campo mask), no como base64. Los píxeles blancos en la máscara indican las áreas a borrar. Los ajustes format y quality se envían como campos de formulario de nivel superior.

ParámetroTipoPor defectoDescripción
filefile(requerido)Imagen de origen (multipart)
maskfile(requerido)Imagen de máscara (multipart, nombre de campo mask, blanco = borrar)
formatstring"auto"Formato de salida: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Calidad de salida

Acelerado por CUDA cuando hay disponible una GPU NVIDIA.

Expansión de lienzo con IA

Ruta de la herramienta: ai-canvas-expand
Modelo: outpainting basado en LaMa

Expande el lienzo de una imagen en cualquier dirección y rellena las áreas nuevas con contenido generado por IA que coincide con la imagen existente.

ParámetroTipoPor defectoDescripción
extendTopinteger0Píxeles a extender por arriba
extendRightinteger0Píxeles a extender por la derecha
extendBottominteger0Píxeles a extender por abajo
extendLeftinteger0Píxeles a extender por la izquierda
tier"fast" | "balanced" | "high""balanced"Nivel de calidad
formatstring"auto"Formato de salida: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Calidad de salida

Al menos una dirección de extensión debe ser mayor que 0.

Recorte inteligente

Ruta de la herramienta: smart-crop
Modelo: detección de rostros de MediaPipe (solo en modo rostro)

ParámetroTipoPor defectoDescripción
modestring"subject"Estrategia de recorte: subject, face, trim
strategy"attention" | "entropy""attention"Estrategia para el modo sujeto
widthinteger-Ancho de salida
heightinteger-Alto de salida
paddinginteger (0-50)0Porcentaje de relleno alrededor del sujeto
facePresetstring"head-shoulders"Encuadre predefinido cuando mode=face
sensitivitynumber (0-1)0.5Umbral de detección de rostros
thresholdinteger (0-255)30Umbral de detección de fondo (modo recorte)
padToSquarebooleanfalseRellenar el resultado recortado hasta un cuadrado
padColorstring"#ffffff"Color de fondo para el relleno cuadrado
targetSizeinteger-Tamaño objetivo para la salida rellenada (píxeles)
qualityinteger (1-100)-Calidad de salida

Los valores heredados de mode, attention y content, se aceptan y se asignan a subject y trim respectivamente.

Ajustes predefinidos de rostro:

Ajuste predefinidoMejor para
closeupRetratos de cabeza
head-shouldersFotos de perfil
upper-bodyLinkedIn / formal
half-bodyParte superior completa del cuerpo

Transcribir audio

Ruta de la herramienta: transcribe-audio
Modelo: faster-whisper

Convierte voz en texto. Admite formatos de salida de texto plano, SRT y VTT.

ParámetroTipoPor defectoDescripción
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Formato de salida

Subtítulos automáticos

Ruta de la herramienta: auto-subtitles
Modelo: faster-whisper (extrae el audio del video y luego lo transcribe)

Genera archivos de subtítulos a partir de la pista de audio de un video.

ParámetroTipoPor defectoDescripción
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Formato de subtítulos de salida

Corrector de transparencia PNG

Ruta de la herramienta: transparency-fixer
Modelo: matting HR de BiRefNet (resolución 2048x2048)

Corrige los PNG con "falsa transparencia", donde se eliminó el fondo pero quedaron bordes irregulares, halos o artefactos semitransparentes. Usa el modelo de matting de alta resolución de BiRefNet para producir un canal alfa limpio y luego aplica un procesamiento de eliminación de bordes configurable para quitar la contaminación de color a lo largo de los bordes.

Cadena de respaldo ante OOM: Si el matting HR de BiRefNet supera la memoria disponible, la herramienta recurre automáticamente a birefnet-general, y luego a u2net.

ParámetroTipoPor defectoDescripción
defringenumber (0-100)30Intensidad de la eliminación de bordes para quitar la contaminación de color
outputFormat"png" | "webp""png"Formato de imagen de salida
removeWatermarkbooleanfalseAplicar preprocesamiento de eliminación de marca de agua (filtro de mediana)
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"}'

Herramientas con capacidades de IA opcionales

Las siguientes herramientas no son herramientas del sidecar de Python, pero usan funciones de IA cuando se activan ciertas opciones.

Mejora de imagen

Ruta de la herramienta: image-enhancement
Motor: Basado en análisis (histograma y estadísticas de Sharp)

Analiza la imagen y aplica correcciones automáticas de exposición, contraste, balance de blancos, saturación, nitidez y ruido. Admite modos específicos de escena.

ParámetroTipoPor defectoDescripción
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Modo de escena para ajustar las correcciones
intensitynumber (0-100)50Intensidad general de la corrección
corrections.exposurebooleantrueAplicar corrección de exposición
corrections.contrastbooleantrueAplicar corrección de contraste
corrections.whiteBalancebooleantrueAplicar corrección de balance de blancos
corrections.saturationbooleantrueAplicar corrección de saturación
corrections.sharpnessbooleantrueAplicar corrección de nitidez
corrections.denoisebooleantrueAplicar reducción de ruido
deepEnhancebooleanfalseActivar la eliminación de ruido con IA vía SCUNet (requiere el paquete upscale-enhance)

Hay disponible un endpoint de análisis adicional en POST /api/v1/tools/image/image-enhancement/analyze que devuelve las correcciones detectadas sin aplicarlas.

Redimensionado con reconocimiento de contenido (seam carving)

Ruta de la herramienta: content-aware-resize
Motor: binario caire de Go (no Python: sin beneficio de GPU)

Redimensiona imágenes de forma inteligente eliminando costuras de baja energía, preservando el contenido importante.

ParámetroTipoPor defectoDescripción
widthnumber-Ancho objetivo
heightnumber-Alto objetivo
protectFacesbooleanfalseProteger las regiones de rostro detectadas (requiere el paquete face-detection)
blurRadiusnumber (0-20)4Predesenfoque para el cálculo de energía
sobelThresholdnumber (1-20)2Umbral de sensibilidad de bordes
squarebooleanfalseForzar salida cuadrada