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

Riferimento del motore AI

Il pacchetto @snapotter/ai fa da ponte tra Node.js e un sidecar Python persistente per tutte le operazioni ML. Il processo dispatcher resta attivo tra una richiesta e l'altra per garantire prestazioni rapide con avvio a caldo. NVIDIA CUDA viene rilevata automaticamente all'avvio e usata quando disponibile; in caso contrario gli strumenti AI vengono eseguiti su CPU.

Oggi l'accelerazione tramite iGPU Intel/AMD con VA-API, Quick Sync o OpenCL non è supportata per l'inferenza AI. Mappare /dev/dri in un container non accelera questi strumenti del sidecar Python a meno che non sia disponibile una GPU NVIDIA compatibile con CUDA.

19 strumenti AI del sidecar Python distribuiti su quattro modalità (immagine, audio, video, documento), più 2 strumenti con funzionalità AI opzionali. Tutti i modelli vengono eseguiti in locale, senza bisogno di connessione a internet dopo il download iniziale del modello.

Architettura

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 profilo dispatcher "docs" separato sostituisce l'allowlist AI con script per l'elaborazione dei documenti (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) e salta gli import ML pesanti.

Timeout: 300 s di default; OCR e rimozione dello sfondo con BiRefNet ottengono 600 s.

Bundle di funzionalità

I modelli AI sono raggruppati per stack di dipendenze condivise, non con un archivio per ogni strumento. Un bundle di funzionalità può abilitare più strumenti quando questi usano la stessa famiglia di modelli, gli stessi wheel Python o le stesse librerie native. Questo mantiene più piccola l'immagine Docker di rilascio ed evita di conservare copie duplicate degli stessi modelli di matting dello sfondo, rilevamento dei volti, OCR, restauro e riconoscimento vocale.

L'immagine Docker include l'applicazione più il runtime comune. Gli archivi di modelli di grandi dimensioni vengono scaricati su richiesta nel volume persistente /data/ai, poi riutilizzati da ogni strumento che ne ha bisogno. Se un bundle è già installato perché un altro strumento ne aveva bisogno, abilitare un nuovo strumento dipendente non scarica di nuovo quel bundle.

Ogni strumento AI richiede uno o più bundle di funzionalità prima di poter essere eseguito. La UI di amministrazione installa per strumento tramite POST /api/v1/admin/tools/:toolId/features/install, che risolve l'elenco completo dei bundle, salta quelli già installati e mette in coda solo i download mancanti. Ad esempio, abilitare Passport Photo su un'istanza nuova mette in coda background-removal e face-detection; abilitarlo dopo che Background Removal è già installato mette in coda solo face-detection.

BundleDimensioneGruppo di dipendenze condiviseStrumenti che lo usano
background-removal4-5 GBrembg / matting dello sfondo BiRefNetremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBrilevamento dei volti e landmark 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, denoisingupscale, enhance-faces, noise-removal
photo-restoration4-5 GBpipeline di riparazione dei graffi e restaurorestore-photo
ocr5-6 GBstack OCR PaddleOCR / Tesseractocr, ocr-pdf
transcription~600 MBmodelli speech-to-text faster-whispertranscribe-audio, auto-subtitles

Strumenti con dipendenze tra più bundle:

StrumentoBundle richiestiPerché
passport-photobackground-removal, face-detectionRimuove lo sfondo, poi usa i landmark del volto per inquadrare il ritaglio secondo le regole delle foto per passaporto e documenti di identità.
enhance-facesupscale-enhance, face-detectionRileva i volti prima di eseguire il miglioramento GFPGAN o CodeFormer sulle regioni facciali selezionate.

Uno strumento è disponibile solo quando tutti i bundle richiesti sono installati. Le installazioni parziali sono valide e vengono gestite in modo incrementale: i bundle installati vengono riutilizzati, quelli mancanti vengono mostrati come download e le installazioni in coda vengono eseguite una alla volta, così l'ambiente Python condiviso non viene modificato in modo concorrente.


Rimozione dello sfondo

Route dello strumento: remove-background
Modello: rembg con BiRefNet (predefinito) o varianti U2-Net

ParametroTipoPredefinitoDescrizione
modelstring-Variante del modello (override opzionale)
backgroundTypestring"transparent"Uno tra: transparent, color, gradient, blur, image
backgroundColorstring-Colore esadecimale per lo sfondo pieno
gradientColor1string-Primo colore del gradiente
gradientColor2string-Secondo colore del gradiente
gradientAnglenumber-Angolo del gradiente in gradi
blurEnabledboolean-Abilita l'effetto sfocatura dello sfondo
blurIntensitynumber (0-100)-Intensità della sfocatura
shadowEnabledboolean-Abilita l'ombra proiettata sul soggetto
shadowOpacitynumber (0-100)-Opacità dell'ombra
outputFormatstring-Formato di output: png, webp o avif
edgeRefineinteger (0-3)-Livello di rifinitura dei bordi
decontaminateboolean-Rimuove le sbavature di colore dai bordi

Sostituzione dello sfondo

Route dello strumento: background-replace
Modello: rembg / BiRefNet (condiviso con remove-background)

Rimuove lo sfondo e lo sostituisce con un colore pieno o un gradiente.

ParametroTipoPredefinitoDescrizione
backgroundType"color" | "gradient""color"Modalità sfondo
colorstring"#ffffff"Colore esadecimale dello sfondo (quando backgroundType è color)
gradientColor1string-Primo colore esadecimale del gradiente
gradientColor2string-Secondo colore esadecimale del gradiente
gradientAngleinteger (0-360)180Angolo del gradiente in gradi
featherinteger (0-20)0Raggio di sfumatura dei bordi
format"png" | "webp""png"Formato di output

Sfocatura dello sfondo

Route dello strumento: blur-background
Modello: rembg / BiRefNet (condiviso con remove-background)

Sfoca lo sfondo mantenendo nitido il soggetto.

ParametroTipoPredefinitoDescrizione
intensityinteger (1-100)50Intensità della sfocatura
featherinteger (0-20)0Raggio di sfumatura dei bordi
format"png" | "webp""png"Formato di output

Upscaling delle immagini

Route dello strumento: upscale
Modello: RealESRGAN (con fallback Lanczos quando non disponibile)

ParametroTipoPredefinitoDescrizione
scalenumber2Fattore di upscaling
modelstring"auto"Variante del modello
faceEnhancebooleanfalseApplica un passaggio di miglioramento dei volti GFPGAN
denoisenumber0Intensità del denoising
formatstring"auto"Override del formato di output
qualitynumber95Qualità di output (1-100)

OCR / Estrazione del testo

Route dello strumento: ocr
Modelli: Tesseract (veloce), PaddleOCR PP-OCRv5 (bilanciato), PaddleOCR-VL 1.5 (migliore)

ParametroTipoPredefinitoDescrizione
quality"fast" | "balanced" | "best""balanced"Livello di elaborazione
languagestring"auto"Lingua: auto, en, de, fr, es, zh, ja, ko
enhancebooleantruePre-elabora l'immagine per migliorare la precisione dell'OCR
enginestring-Deprecato. Mappa tesseract su fast, paddleocr su balanced

Restituisce risultati strutturati con riquadri di delimitazione, punteggi di confidenza e blocchi di testo estratti.

OCR di PDF

Route dello strumento: ocr-pdf
Modelli: Stesso sistema a livelli dell'OCR delle immagini

Estrae il testo dai documenti PDF scansionati usando l'OCR basato su AI, pagina per pagina.

ParametroTipoPredefinitoDescrizione
quality"fast" | "balanced" | "best""balanced"Livello di elaborazione
languagestring"auto"Lingua: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Selezione delle pagine: "all", "1-3", "1,3,5"

Sfocatura di volti / PII

Route dello strumento: blur-faces
Modello: rilevamento dei volti MediaPipe

ParametroTipoPredefinitoDescrizione
blurRadiusnumber (1-100)30Raggio della sfocatura gaussiana
sensitivitynumber (0-1)0.5Soglia di confidenza del rilevamento

Miglioramento dei volti

Route dello strumento: enhance-faces
Modelli: GFPGAN, CodeFormer

ParametroTipoPredefinitoDescrizione
model"auto" | "gfpgan" | "codeformer""auto"Modello di miglioramento
strengthnumber (0-1)0.8Intensità del miglioramento
sensitivitynumber (0-1)0.5Soglia di rilevamento dei volti
onlyCenterFacebooleanfalseMigliora solo il volto più centrale

Colorizzazione AI

Route dello strumento: colorize
Modello: DDColor (con fallback DNN OpenCV)

Converte in pieno colore le foto in bianco e nero o in scala di grigi.

ParametroTipoPredefinitoDescrizione
intensitynumber (0-1)1.0Intensità della saturazione del colore
model"auto" | "ddcolor" | "opencv""auto"Variante del modello

Rimozione del rumore

Route dello strumento: noise-removal
Modello: SCUNet (pipeline di denoising a livelli)

ParametroTipoPredefinitoDescrizione
tier"quick" | "balanced" | "quality" | "maximum""balanced"Livello di elaborazione
strengthnumber (0-100)50Intensità del denoising
detailPreservationnumber (0-100)50Quanto dettaglio preservare; valori più alti mantengono più texture
colorNoisenumber (0-100)30Intensità della riduzione del rumore cromatico
formatstring"original"Formato di output: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Qualità di codifica dell'output

Rimozione degli occhi rossi

Route dello strumento: red-eye-removal

Rileva i landmark del volto, individua le regioni degli occhi e corregge la sovrasaturazione del canale rosso.

ParametroTipoPredefinitoDescrizione
sensitivitynumber (0-100)50Soglia di rilevamento dei pixel rossi
strengthnumber (0-100)70Intensità della correzione
formatstring-Override del formato di output (opzionale)
qualitynumber (1-100)90Qualità di output

Restauro fotografico

Route dello strumento: restore-photo

Pipeline multi-step per foto vecchie o danneggiate: rilevamento e riparazione di graffi/strappi, miglioramento dei volti, denoising e colorizzazione opzionale.

ParametroTipoPredefinitoDescrizione
scratchRemovalbooleantrueRileva e ripara graffi e strappi
faceEnhancementbooleantrueApplica un passaggio di miglioramento dei volti
fidelitynumber (0-1)0.7Intensità del miglioramento dei volti (più alto = più conservativo)
denoisebooleantrueApplica un passaggio di denoising
denoiseStrengthnumber (0-100)25Intensità del denoising
colorizebooleanfalseColorizza dopo il restauro
colorizeStrengthnumber (0-100)85Intensità della colorizzazione

Foto per passaporto

Route dello strumento: passport-photo
Modelli: landmark del volto MediaPipe + rimozione dello sfondo BiRefNet

Flusso di lavoro in due fasi: analisi (rilevamento del volto + rimozione dello sfondo) poi generazione (ritaglio, ridimensionamento, disposizione a griglia). Supporta oltre 37 paesi in 6 regioni.

Fase 1: Analisi

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

Accetta un file immagine (multipart). Restituisce i dati dei landmark del volto, un'anteprima base64 e le dimensioni dell'immagine.

Fase 2: Generazione

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

Accetta un corpo JSON con i risultati della Fase 1 più le impostazioni di generazione:

ParametroTipoPredefinitoDescrizione
jobIdstring(obbligatorio)ID del job dalla Fase 1
filenamestring(obbligatorio)Nome file originale dalla Fase 1
countryCodestring(obbligatorio)Codice paese ISO (es. US, GB, IN)
documentTypestring"passport"Tipo di documento
bgColorstring"#FFFFFF"Colore esadecimale dello sfondo
printLayoutstring"none"Layout di stampa: none, 4x6, a4, letter
maxFileSizeKbnumber0Dimensione massima del file in KB (0 = nessun limite)
dpinumber (72-1200)300DPI di output
customWidthMmnumber-Larghezza personalizzata in mm (sovrascrive le specifiche del paese)
customHeightMmnumber-Altezza personalizzata in mm (sovrascrive le specifiche del paese)
zoomnumber (0.5-3)1Fattore di zoom
adjustXnumber0Regolazione della posizione orizzontale
adjustYnumber0Regolazione della posizione verticale
landmarksobject(obbligatorio)Landmark dalla Fase 1
imageWidthnumber(obbligatorio)Larghezza dell'immagine dalla Fase 1
imageHeightnumber(obbligatorio)Altezza dell'immagine dalla Fase 1

Cancellazione di oggetti (Inpainting)

Route dello strumento: erase-object
Modello: LaMa tramite ONNX Runtime

La maschera viene inviata come seconda parte del file (fieldname mask), non come base64. I pixel bianchi nella maschera indicano le aree da cancellare. Le impostazioni format e quality vengono inviate come campi form di primo livello.

ParametroTipoPredefinitoDescrizione
filefile(obbligatorio)Immagine sorgente (multipart)
maskfile(obbligatorio)Immagine della maschera (multipart, fieldname mask, bianco = cancella)
formatstring"auto"Formato di output: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Qualità di output

Accelerato con CUDA quando è disponibile una GPU NVIDIA.

Espansione AI della tela

Route dello strumento: ai-canvas-expand
Modello: outpainting basato su LaMa

Espande la tela di un'immagine in qualsiasi direzione e riempie le nuove aree con contenuti generati dall'AI che corrispondono all'immagine esistente.

ParametroTipoPredefinitoDescrizione
extendTopinteger0Pixel da estendere in alto
extendRightinteger0Pixel da estendere a destra
extendBottominteger0Pixel da estendere in basso
extendLeftinteger0Pixel da estendere a sinistra
tier"fast" | "balanced" | "high""balanced"Livello di qualità
formatstring"auto"Formato di output: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Qualità di output

Almeno una direzione di estensione deve essere maggiore di 0.

Ritaglio intelligente

Route dello strumento: smart-crop
Modello: rilevamento dei volti MediaPipe (solo modalità volto)

ParametroTipoPredefinitoDescrizione
modestring"subject"Strategia di ritaglio: subject, face, trim
strategy"attention" | "entropy""attention"Strategia per la modalità soggetto
widthinteger-Larghezza di output
heightinteger-Altezza di output
paddinginteger (0-50)0Percentuale di margine attorno al soggetto
facePresetstring"head-shoulders"Inquadratura predefinita quando mode=face
sensitivitynumber (0-1)0.5Soglia di rilevamento dei volti
thresholdinteger (0-255)30Soglia di rilevamento dello sfondo (modalità di rifilatura)
padToSquarebooleanfalseRiempi il risultato rifilato fino a formare un quadrato
padColorstring"#ffffff"Colore di sfondo per il riempimento quadrato
targetSizeinteger-Dimensione target per l'output con riempimento (pixel)
qualityinteger (1-100)-Qualità di output

I valori legacy di mode attention e content sono accettati e mappati rispettivamente su subject e trim.

Preset per i volti:

PresetIdeale per
closeupRitratti in primo piano
head-shouldersFoto profilo
upper-bodyLinkedIn / formale
half-bodyBusto completo

Trascrizione dell'audio

Route dello strumento: transcribe-audio
Modello: faster-whisper

Converte il parlato in testo. Supporta i formati di output testo semplice, SRT e VTT.

ParametroTipoPredefinitoDescrizione
languagestring"auto"Lingua: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Formato di output

Sottotitoli automatici

Route dello strumento: auto-subtitles
Modello: faster-whisper (estrae l'audio dal video, poi lo trascrive)

Genera file di sottotitoli dalla traccia audio di un video.

ParametroTipoPredefinitoDescrizione
languagestring"auto"Lingua: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Formato dei sottotitoli di output

Correttore di trasparenza PNG

Route dello strumento: transparency-fixer
Modello: matting HR BiRefNet (risoluzione 2048x2048)

Corregge i PNG "a falsa trasparenza" in cui lo sfondo è stato rimosso ma ha lasciato bordi frastagliati, aloni o artefatti semi-trasparenti. Usa il modello di matting ad alta risoluzione di BiRefNet per produrre un canale alfa pulito, poi applica un'elaborazione di defringe configurabile per rimuovere la contaminazione cromatica lungo i bordi.

Catena di fallback OOM: Se il matting HR BiRefNet supera la memoria disponibile, lo strumento ricade automaticamente su birefnet-general, poi su u2net.

ParametroTipoPredefinitoDescrizione
defringenumber (0-100)30Intensità del defringe dei bordi per rimuovere la contaminazione cromatica
outputFormat"png" | "webp""png"Formato dell'immagine di output
removeWatermarkbooleanfalseApplica la pre-elaborazione di rimozione della filigrana (filtro mediano)
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"}'

Strumenti con funzionalità AI opzionali

I seguenti strumenti non sono strumenti del sidecar Python ma usano funzionalità AI quando determinate opzioni sono abilitate.

Miglioramento delle immagini

Route dello strumento: image-enhancement
Motore: basato su analisi (istogramma e statistiche di Sharp)

Analizza l'immagine e applica correzioni automatiche per esposizione, contrasto, bilanciamento del bianco, saturazione, nitidezza e rumore. Supporta modalità specifiche per scena.

ParametroTipoPredefinitoDescrizione
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Modalità scena per la messa a punto delle correzioni
intensitynumber (0-100)50Intensità complessiva della correzione
corrections.exposurebooleantrueApplica la correzione dell'esposizione
corrections.contrastbooleantrueApplica la correzione del contrasto
corrections.whiteBalancebooleantrueApplica la correzione del bilanciamento del bianco
corrections.saturationbooleantrueApplica la correzione della saturazione
corrections.sharpnessbooleantrueApplica la correzione della nitidezza
corrections.denoisebooleantrueApplica il denoising
deepEnhancebooleanfalseAbilita la rimozione AI del rumore tramite SCUNet (richiede il bundle upscale-enhance)

Un endpoint di analisi aggiuntivo è disponibile su POST /api/v1/tools/image/image-enhancement/analyze che restituisce le correzioni rilevate senza applicarle.

Ridimensionamento content-aware (Seam Carving)

Route dello strumento: content-aware-resize
Motore: binario Go caire (non Python, nessun beneficio dalla GPU)

Ridimensiona in modo intelligente le immagini rimuovendo le cuciture a bassa energia, preservando i contenuti importanti.

ParametroTipoPredefinitoDescrizione
widthnumber-Larghezza target
heightnumber-Altezza target
protectFacesbooleanfalseProtegge le regioni facciali rilevate (richiede il bundle face-detection)
blurRadiusnumber (0-20)4Pre-sfocatura per il calcolo dell'energia
sobelThresholdnumber (1-20)2Soglia di sensibilità dei bordi
squarebooleanfalseForza l'output quadrato