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

Referência do Motor de IA

O pacote @snapotter/ai conecta o Node.js a um sidecar Python persistente para todas as operações de ML. O processo despachante permanece ativo entre as requisições para um desempenho rápido com início a quente. O NVIDIA CUDA é detectado automaticamente na inicialização e usado quando disponível; caso contrário, as ferramentas de IA rodam na CPU.

A aceleração por iGPU Intel/AMD via VA-API, Quick Sync ou OpenCL não é suportada para inferência de IA hoje. Mapear /dev/dri em um contêiner não acelera essas ferramentas do sidecar Python a menos que uma GPU NVIDIA compatível com CUDA esteja disponível.

19 ferramentas de IA no sidecar Python em quatro modalidades (imagem, áudio, vídeo, documento), mais 2 ferramentas com capacidades opcionais de IA. Todos os modelos rodam localmente - nenhuma conexão com a internet é necessária após o download inicial do modelo.

Arquitetura

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)

Um perfil de despachante "docs" separado substitui a lista de permissões de IA por scripts de processamento de documentos (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) e pula as importações pesadas de ML.

Tempos limite: 300 s por padrão; OCR e remoção de fundo com BiRefNet recebem 600 s.

Pacotes de Recursos

Os modelos de IA são empacotados por pilha de dependências compartilhada, e não um arquivo por ferramenta. Um pacote de recursos pode habilitar várias ferramentas quando elas usam a mesma família de modelos, os mesmos wheels Python ou as mesmas bibliotecas nativas. Isso mantém a imagem Docker de lançamento menor e evita armazenar cópias duplicadas dos mesmos modelos de matting de fundo, detecção de rostos, OCR, restauração e fala.

A imagem Docker inclui a aplicação mais o runtime comum. Arquivos grandes de modelos são baixados sob demanda para o volume persistente /data/ai, e depois reutilizados por todas as ferramentas que precisam deles. Se um pacote já estiver instalado porque outra ferramenta precisou dele, habilitar uma nova ferramenta dependente não baixa esse pacote novamente.

Cada ferramenta de IA requer um ou mais pacotes de recursos antes de poder rodar. A interface de administração instala por ferramenta através de POST /api/v1/admin/tools/:toolId/features/install, que resolve a lista completa de pacotes, pula os pacotes já instalados e enfileira apenas os downloads que faltam. Por exemplo, habilitar Foto para Passaporte em uma instância nova enfileira background-removal e face-detection; habilitá-la depois que a Remoção de Fundo já estiver instalada enfileira apenas face-detection.

PacoteTamanhoGrupo de dependências compartilhadoFerramentas que o usam
background-removal4-5 GBmatting de fundo rembg / BiRefNetremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBdetecção de rostos e marcos faciais do MediaPipeblur-faces, red-eye-removal, smart-crop
object-eraser-colorize1-2 GBinpainting/outpainting LaMa e DDColorerase-object, colorize, ai-canvas-expand
upscale-enhance5-6 GBRealESRGAN, GFPGAN / CodeFormer, remoção de ruídoupscale, enhance-faces, noise-removal
photo-restoration4-5 GBreparo de arranhões e pipeline de restauraçãorestore-photo
ocr5-6 GBpilha de OCR PaddleOCR / Tesseractocr, ocr-pdf
transcription~600 MBmodelos de fala para texto faster-whispertranscribe-audio, auto-subtitles

Ferramentas com dependências entre pacotes:

FerramentaPacotes necessáriosPor quê
passport-photobackground-removal, face-detectionRemove o fundo e depois usa marcos faciais para enquadrar o recorte conforme as regras de fotos de passaporte e documentos de identidade.
enhance-facesupscale-enhance, face-detectionDetecta rostos antes de rodar o realce GFPGAN ou CodeFormer nas regiões de rosto selecionadas.

Uma ferramenta fica disponível apenas quando todos os seus pacotes necessários estão instalados. Instalações parciais são válidas e tratadas de forma incremental: pacotes instalados são reutilizados, pacotes que faltam são mostrados como downloads e as instalações enfileiradas rodam uma de cada vez para que o ambiente Python compartilhado não seja modificado simultaneamente.


Remoção de Fundo

Rota da ferramenta: remove-background
Modelo: rembg com BiRefNet (padrão) ou variantes U2-Net

ParâmetroTipoPadrãoDescrição
modelstring-Variante do modelo (substituição opcional)
backgroundTypestring"transparent"Um de: transparent, color, gradient, blur, image
backgroundColorstring-Cor hex para fundo sólido
gradientColor1string-Primeira cor do gradiente
gradientColor2string-Segunda cor do gradiente
gradientAnglenumber-Ângulo do gradiente em graus
blurEnabledboolean-Ativar efeito de desfoque de fundo
blurIntensitynumber (0-100)-Intensidade do desfoque
shadowEnabledboolean-Ativar sombra projetada no sujeito
shadowOpacitynumber (0-100)-Opacidade da sombra
outputFormatstring-Formato de saída: png, webp ou avif
edgeRefineinteger (0-3)-Nível de refinamento das bordas
decontaminateboolean-Remover sangramento de cor das bordas

Substituir Fundo

Rota da ferramenta: background-replace
Modelo: rembg / BiRefNet (compartilhado com remove-background)

Remove o fundo e o substitui por uma cor sólida ou gradiente.

ParâmetroTipoPadrãoDescrição
backgroundType"color" | "gradient""color"Modo de fundo
colorstring"#ffffff"Cor hex do fundo (quando backgroundType é color)
gradientColor1string-Primeira cor hex do gradiente
gradientColor2string-Segunda cor hex do gradiente
gradientAngleinteger (0-360)180Ângulo do gradiente em graus
featherinteger (0-20)0Raio de suavização das bordas
format"png" | "webp""png"Formato de saída

Desfocar Fundo

Rota da ferramenta: blur-background
Modelo: rembg / BiRefNet (compartilhado com remove-background)

Desfoca o fundo mantendo o sujeito nítido.

ParâmetroTipoPadrãoDescrição
intensityinteger (1-100)50Intensidade do desfoque
featherinteger (0-20)0Raio de suavização das bordas
format"png" | "webp""png"Formato de saída

Ampliação de Imagem

Rota da ferramenta: upscale
Modelo: RealESRGAN (com fallback Lanczos quando indisponível)

ParâmetroTipoPadrãoDescrição
scalenumber2Fator de ampliação
modelstring"auto"Variante do modelo
faceEnhancebooleanfalseAplicar passada de realce de rosto GFPGAN
denoisenumber0Força da remoção de ruído
formatstring"auto"Substituição do formato de saída
qualitynumber95Qualidade de saída (1-100)

OCR / Extração de Texto

Rota da ferramenta: ocr
Modelos: Tesseract (rápido), PaddleOCR PP-OCRv5 (equilibrado), PaddleOCR-VL 1.5 (melhor)

ParâmetroTipoPadrãoDescrição
quality"fast" | "balanced" | "best""balanced"Nível de processamento
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko
enhancebooleantruePré-processar a imagem para melhorar a precisão do OCR
enginestring-Obsoleto. Mapeia tesseract para fast, paddleocr para balanced

Retorna resultados estruturados com caixas delimitadoras, pontuações de confiança e blocos de texto extraídos.

OCR de PDF

Rota da ferramenta: ocr-pdf
Modelos: Mesmo sistema de níveis do OCR de imagem

Extrai texto de documentos PDF digitalizados usando OCR com IA, página por página.

ParâmetroTipoPadrãoDescrição
quality"fast" | "balanced" | "best""balanced"Nível de processamento
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Seleção de páginas: "all", "1-3", "1,3,5"

Desfoque de Rosto / PII

Rota da ferramenta: blur-faces
Modelo: detecção de rostos do MediaPipe

ParâmetroTipoPadrãoDescrição
blurRadiusnumber (1-100)30Raio do desfoque gaussiano
sensitivitynumber (0-1)0.5Limiar de confiança da detecção

Realce de Rosto

Rota da ferramenta: enhance-faces
Modelos: GFPGAN, CodeFormer

ParâmetroTipoPadrãoDescrição
model"auto" | "gfpgan" | "codeformer""auto"Modelo de realce
strengthnumber (0-1)0.8Força do realce
sensitivitynumber (0-1)0.5Limiar de detecção de rosto
onlyCenterFacebooleanfalseRealçar apenas o rosto mais central

Colorização por IA

Rota da ferramenta: colorize
Modelo: DDColor (com fallback OpenCV DNN)

Converte fotos em preto e branco ou tons de cinza para cores completas.

ParâmetroTipoPadrãoDescrição
intensitynumber (0-1)1.0Força da saturação de cor
model"auto" | "ddcolor" | "opencv""auto"Variante do modelo

Remoção de Ruído

Rota da ferramenta: noise-removal
Modelo: SCUNet (pipeline de remoção de ruído por níveis)

ParâmetroTipoPadrãoDescrição
tier"quick" | "balanced" | "quality" | "maximum""balanced"Nível de processamento
strengthnumber (0-100)50Força da remoção de ruído
detailPreservationnumber (0-100)50Quanto detalhe preservar; valores maiores mantêm mais textura
colorNoisenumber (0-100)30Força da redução de ruído de cor
formatstring"original"Formato de saída: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Qualidade de codificação da saída

Remoção de Olhos Vermelhos

Rota da ferramenta: red-eye-removal

Detecta marcos faciais, localiza as regiões dos olhos e corrige a saturação excessiva no canal vermelho.

ParâmetroTipoPadrãoDescrição
sensitivitynumber (0-100)50Limiar de detecção de pixels vermelhos
strengthnumber (0-100)70Força da correção
formatstring-Substituição do formato de saída (opcional)
qualitynumber (1-100)90Qualidade de saída

Restauração de Fotos

Rota da ferramenta: restore-photo

Pipeline de múltiplas etapas para fotos antigas ou danificadas: detecção e reparo de arranhões/rasgos, realce de rosto, remoção de ruído e colorização opcional.

ParâmetroTipoPadrãoDescrição
scratchRemovalbooleantrueDetectar e reparar arranhões e rasgos
faceEnhancementbooleantrueAplicar passada de realce de rosto
fidelitynumber (0-1)0.7Força do realce de rosto (maior = mais conservador)
denoisebooleantrueAplicar passada de remoção de ruído
denoiseStrengthnumber (0-100)25Força da remoção de ruído
colorizebooleanfalseColorir após a restauração
colorizeStrengthnumber (0-100)85Intensidade da colorização

Foto para Passaporte

Rota da ferramenta: passport-photo
Modelos: marcos faciais do MediaPipe + remoção de fundo com BiRefNet

Fluxo de trabalho em duas fases: analisar (detectar rosto + remover fundo) e depois gerar (recortar, redimensionar, distribuir em grade). Suporta mais de 37 países em 6 regiões.

Fase 1: Analisar

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

Aceita um arquivo de imagem (multipart). Retorna os dados dos marcos faciais, uma pré-visualização em base64 e as dimensões da imagem.

Fase 2: Gerar

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

Aceita um corpo JSON com os resultados da Fase 1 mais as configurações de geração:

ParâmetroTipoPadrãoDescrição
jobIdstring(obrigatório)ID do job da Fase 1
filenamestring(obrigatório)Nome do arquivo original da Fase 1
countryCodestring(obrigatório)Código de país ISO (ex.: US, GB, IN)
documentTypestring"passport"Tipo de documento
bgColorstring"#FFFFFF"Cor de fundo em hex
printLayoutstring"none"Layout de impressão: none, 4x6, a4, letter
maxFileSizeKbnumber0Tamanho máximo do arquivo em KB (0 = sem limite)
dpinumber (72-1200)300DPI de saída
customWidthMmnumber-Largura personalizada em mm (substitui a especificação do país)
customHeightMmnumber-Altura personalizada em mm (substitui a especificação do país)
zoomnumber (0.5-3)1Fator de zoom
adjustXnumber0Ajuste de posição horizontal
adjustYnumber0Ajuste de posição vertical
landmarksobject(obrigatório)Marcos faciais da Fase 1
imageWidthnumber(obrigatório)Largura da imagem da Fase 1
imageHeightnumber(obrigatório)Altura da imagem da Fase 1

Apagar Objetos (Inpainting)

Rota da ferramenta: erase-object
Modelo: LaMa via ONNX Runtime

A máscara é enviada como uma segunda parte de arquivo (nome do campo mask), não como base64. Pixels brancos na máscara indicam áreas a apagar. As configurações format e quality são enviadas como campos de formulário de nível superior.

ParâmetroTipoPadrãoDescrição
filefile(obrigatório)Imagem de origem (multipart)
maskfile(obrigatório)Imagem da máscara (multipart, nome do campo mask, branco = apagar)
formatstring"auto"Formato de saída: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Qualidade de saída

Acelerado por CUDA quando uma GPU NVIDIA está disponível.

Expansão de Tela por IA

Rota da ferramenta: ai-canvas-expand
Modelo: outpainting baseado em LaMa

Expande a tela de uma imagem em qualquer direção e preenche as novas áreas com conteúdo gerado por IA que combina com a imagem existente.

ParâmetroTipoPadrãoDescrição
extendTopinteger0Pixels a estender no topo
extendRightinteger0Pixels a estender à direita
extendBottominteger0Pixels a estender na parte inferior
extendLeftinteger0Pixels a estender à esquerda
tier"fast" | "balanced" | "high""balanced"Nível de qualidade
formatstring"auto"Formato de saída: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Qualidade de saída

Pelo menos uma direção de extensão deve ser maior que 0.

Recorte Inteligente

Rota da ferramenta: smart-crop
Modelo: detecção de rostos do MediaPipe (apenas no modo de rosto)

ParâmetroTipoPadrãoDescrição
modestring"subject"Estratégia de recorte: subject, face, trim
strategy"attention" | "entropy""attention"Estratégia para o modo de sujeito
widthinteger-Largura de saída
heightinteger-Altura de saída
paddinginteger (0-50)0Porcentagem de preenchimento ao redor do sujeito
facePresetstring"head-shoulders"Enquadramento predefinido quando mode=face
sensitivitynumber (0-1)0.5Limiar de detecção de rosto
thresholdinteger (0-255)30Limiar de detecção de fundo (modo de recorte de bordas)
padToSquarebooleanfalsePreencher o resultado recortado até um quadrado
padColorstring"#ffffff"Cor de fundo para o preenchimento quadrado
targetSizeinteger-Tamanho alvo para a saída preenchida (pixels)
qualityinteger (1-100)-Qualidade de saída

Os valores legados de mode, attention e content, são aceitos e mapeados para subject e trim respectivamente.

Predefinições de rosto:

PredefiniçãoMelhor para
closeupRetratos de rosto
head-shouldersFotos de perfil
upper-bodyLinkedIn / formal
half-bodyParte superior do corpo completa

Transcrever Áudio

Rota da ferramenta: transcribe-audio
Modelo: faster-whisper

Converte fala em texto. Suporta os formatos de saída texto simples, SRT e VTT.

ParâmetroTipoPadrãoDescrição
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Formato de saída

Legendas Automáticas

Rota da ferramenta: auto-subtitles
Modelo: faster-whisper (extrai o áudio do vídeo e depois transcreve)

Gera arquivos de legenda a partir da trilha de áudio de um vídeo.

ParâmetroTipoPadrãoDescrição
languagestring"auto"Idioma: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Formato de saída da legenda

Corretor de Transparência PNG

Rota da ferramenta: transparency-fixer
Modelo: matting HR do BiRefNet (resolução 2048x2048)

Corrige PNGs de "falsa transparência" onde o fundo foi removido, mas deixou franjas, halos ou artefatos semitransparentes. Usa o modelo de matting de alta resolução do BiRefNet para produzir um canal alfa limpo e depois aplica um processamento de remoção de franjas configurável para eliminar a contaminação de cor ao longo das bordas.

Cadeia de fallback em caso de OOM: Se o matting HR do BiRefNet exceder a memória disponível, a ferramenta recorre automaticamente a birefnet-general e depois a u2net.

ParâmetroTipoPadrãoDescrição
defringenumber (0-100)30Força da remoção de franjas nas bordas para eliminar contaminação de cor
outputFormat"png" | "webp""png"Formato da imagem de saída
removeWatermarkbooleanfalseAplicar pré-processamento de remoção de marca d'água (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"}'

Ferramentas com Capacidades Opcionais de IA

As ferramentas a seguir não são ferramentas do sidecar Python, mas usam recursos de IA quando certas opções estão habilitadas.

Realce de Imagem

Rota da ferramenta: image-enhancement
Motor: baseado em análise (histograma e estatísticas do Sharp)

Analisa a imagem e aplica correções automáticas de exposição, contraste, balanço de branco, saturação, nitidez e ruído. Suporta modos específicos de cena.

ParâmetroTipoPadrãoDescrição
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Modo de cena para ajustar as correções
intensitynumber (0-100)50Força geral da correção
corrections.exposurebooleantrueAplicar correção de exposição
corrections.contrastbooleantrueAplicar correção de contraste
corrections.whiteBalancebooleantrueAplicar correção de balanço de branco
corrections.saturationbooleantrueAplicar correção de saturação
corrections.sharpnessbooleantrueAplicar correção de nitidez
corrections.denoisebooleantrueAplicar remoção de ruído
deepEnhancebooleanfalseAtivar remoção de ruído por IA via SCUNet (requer o pacote upscale-enhance)

Um endpoint de análise adicional está disponível em POST /api/v1/tools/image/image-enhancement/analyze, que retorna as correções detectadas sem aplicá-las.

Redimensionamento com Reconhecimento de Conteúdo (Seam Carving)

Rota da ferramenta: content-aware-resize
Motor: binário Go caire (não Python - sem benefício de GPU)

Redimensiona imagens de forma inteligente removendo costuras de baixa energia, preservando o conteúdo importante.

ParâmetroTipoPadrãoDescrição
widthnumber-Largura alvo
heightnumber-Altura alvo
protectFacesbooleanfalseProteger as regiões de rosto detectadas (requer o pacote face-detection)
blurRadiusnumber (0-20)4Desfoque prévio para o cálculo de energia
sobelThresholdnumber (1-20)2Limiar de sensibilidade das bordas
squarebooleanfalseForçar saída quadrada