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

AI-engine-referentie

Het @snapotter/ai-pakket verbindt Node.js met een persistente Python-sidecar voor alle ML-bewerkingen. Het dispatcher-proces blijft actief tussen aanvragen door voor snelle warm-start-prestaties. NVIDIA CUDA wordt bij het opstarten automatisch gedetecteerd en gebruikt wanneer beschikbaar; anders draaien de AI-tools op de CPU.

Intel/AMD iGPU-versnelling via VA-API, Quick Sync of OpenCL wordt vandaag niet ondersteund voor AI-inferentie. Het toewijzen van /dev/dri aan een container versnelt deze Python-sidecar-tools niet, tenzij er een CUDA-compatibele NVIDIA-GPU beschikbaar is.

19 Python-sidecar-AI-tools verdeeld over vier modaliteiten (afbeelding, audio, video, document), plus 2 tools met optionele AI-mogelijkheden. Alle modellen draaien lokaal: na de eerste modeldownload is er geen internet vereist.

Architectuur

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)

Een apart "docs"-dispatcher-profiel vervangt de AI-allowlist door scripts voor documentverwerking (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) en slaat zware ML-imports over.

Time-outs: 300 s standaard; OCR en BiRefNet-achtergrondverwijdering krijgen 600 s.

Feature-bundels

AI-modellen worden per gedeelde dependency-stack gebundeld, niet één archief per tool. Een feature-bundel kan meerdere tools inschakelen wanneer ze dezelfde modelfamilie, Python-wheels of native libraries gebruiken. Dit houdt de release-Docker-image kleiner en voorkomt het opslaan van dubbele kopieën van dezelfde achtergrondmatting-, gezichtsdetectie-, OCR-, restauratie- en spraakmodellen.

De Docker-image levert de applicatie plus de gedeelde runtime. Grote modelarchieven worden op aanvraag gedownload naar het persistente /data/ai-volume en vervolgens hergebruikt door elke tool die ze nodig heeft. Als een bundel al geïnstalleerd is omdat een andere tool deze nodig had, downloadt het inschakelen van een nieuwe afhankelijke tool die bundel niet opnieuw.

Elke AI-tool vereist een of meer feature-bundels voordat deze kan draaien. De beheerder-UI installeert per tool via POST /api/v1/admin/tools/:toolId/features/install, die de volledige bundellijst oplost, bundels overslaat die al geïnstalleerd zijn en alleen de ontbrekende downloads in de wachtrij zet. Zo zet het inschakelen van Pasfoto op een nieuwe instantie background-removal en face-detection in de wachtrij; wanneer je het inschakelt nadat Achtergrondverwijdering al geïnstalleerd is, wordt alleen face-detection in de wachtrij gezet.

BundelGrootteGedeelde dependency-groepTools die het gebruiken
background-removal4-5 GBrembg / BiRefNet-achtergrondmattingremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBMediaPipe-gezichtsdetectie en -landmarksblur-faces, red-eye-removal, smart-crop
object-eraser-colorize1-2 GBLaMa inpainting/outpainting en DDColorerase-object, colorize, ai-canvas-expand
upscale-enhance5-6 GBRealESRGAN, GFPGAN / CodeFormer, denoisingupscale, enhance-faces, noise-removal
photo-restoration4-5 GBkrasreparatie- en restauratiepijplijnrestore-photo
ocr5-6 GBPaddleOCR / Tesseract OCR-stackocr, ocr-pdf
transcription~600 MBfaster-whisper spraak-naar-tekst-modellentranscribe-audio, auto-subtitles

Tools met bundeloverschrijdende afhankelijkheden:

ToolVereiste bundelsWaarom
passport-photobackground-removal, face-detectionVerwijdert de achtergrond en gebruikt vervolgens gezichtslandmarks om de uitsnede te kaderen volgens de regels voor pasfoto's en ID-foto's.
enhance-facesupscale-enhance, face-detectionDetecteert gezichten voordat GFPGAN- of CodeFormer-verbetering op de geselecteerde gezichtsregio's wordt uitgevoerd.

Een tool is alleen beschikbaar wanneer al zijn vereiste bundels geïnstalleerd zijn. Gedeeltelijke installaties zijn geldig en worden incrementeel afgehandeld: geïnstalleerde bundels worden hergebruikt, ontbrekende bundels worden als downloads getoond, en in de wachtrij gezette installaties draaien één voor één, zodat de gedeelde Python-omgeving niet gelijktijdig wordt gewijzigd.


Achtergrondverwijdering

Toolroute: remove-background
Model: rembg met BiRefNet (standaard) of U2-Net-varianten

ParameterTypeStandaardBeschrijving
modelstring-Modelvariant (optionele override)
backgroundTypestring"transparent"Een van: transparent, color, gradient, blur, image
backgroundColorstring-Hex-kleur voor effen achtergrond
gradientColor1string-Eerste verloopkleur
gradientColor2string-Tweede verloopkleur
gradientAnglenumber-Verloophoek in graden
blurEnabledboolean-Achtergrondvervaging inschakelen
blurIntensitynumber (0-100)-Vervagingsintensiteit
shadowEnabledboolean-Slagschaduw op onderwerp inschakelen
shadowOpacitynumber (0-100)-Schaduwdekking
outputFormatstring-Uitvoerformaat: png, webp, of avif
edgeRefineinteger (0-3)-Niveau van randverfijning
decontaminateboolean-Kleurdoorloop van randen verwijderen

Achtergrond vervangen

Toolroute: background-replace
Model: rembg / BiRefNet (gedeeld met remove-background)

Verwijdert de achtergrond en vervangt deze door een effen kleur of verloop.

ParameterTypeStandaardBeschrijving
backgroundType"color" | "gradient""color"Achtergrondmodus
colorstring"#ffffff"Hex-achtergrondkleur (wanneer backgroundType color is)
gradientColor1string-Eerste hex-verloopkleur
gradientColor2string-Tweede hex-verloopkleur
gradientAngleinteger (0-360)180Verloophoek in graden
featherinteger (0-20)0Straal van randvervaging
format"png" | "webp""png"Uitvoerformaat

Achtergrond vervagen

Toolroute: blur-background
Model: rembg / BiRefNet (gedeeld met remove-background)

Vervaagt de achtergrond terwijl het onderwerp scherp blijft.

ParameterTypeStandaardBeschrijving
intensityinteger (1-100)50Vervagingsintensiteit
featherinteger (0-20)0Straal van randvervaging
format"png" | "webp""png"Uitvoerformaat

Afbeelding upscalen

Toolroute: upscale
Model: RealESRGAN (met Lanczos-fallback wanneer niet beschikbaar)

ParameterTypeStandaardBeschrijving
scalenumber2Upscale-factor
modelstring"auto"Modelvariant
faceEnhancebooleanfalseGFPGAN-gezichtsverbeteringspas toepassen
denoisenumber0Denoising-sterkte
formatstring"auto"Override van uitvoerformaat
qualitynumber95Uitvoerkwaliteit (1-100)

OCR / Tekstextractie

Toolroute: ocr
Modellen: Tesseract (snel), PaddleOCR PP-OCRv5 (gebalanceerd), PaddleOCR-VL 1.5 (beste)

ParameterTypeStandaardBeschrijving
quality"fast" | "balanced" | "best""balanced"Verwerkingsniveau
languagestring"auto"Taal: auto, en, de, fr, es, zh, ja, ko
enhancebooleantrueAfbeelding voorbewerken om OCR-nauwkeurigheid te verbeteren
enginestring-Verouderd. Wijst tesseract toe aan fast, paddleocr aan balanced

Retourneert gestructureerde resultaten met bounding boxes, betrouwbaarheidsscores en geëxtraheerde tekstblokken.

PDF-OCR

Toolroute: ocr-pdf
Modellen: Hetzelfde niveausysteem als afbeeldings-OCR

Extraheert tekst uit gescande PDF-documenten met AI-gestuurde OCR, pagina voor pagina.

ParameterTypeStandaardBeschrijving
quality"fast" | "balanced" | "best""balanced"Verwerkingsniveau
languagestring"auto"Taal: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Paginaselectie: "all", "1-3", "1,3,5"

Gezicht / PII vervagen

Toolroute: blur-faces
Model: MediaPipe-gezichtsdetectie

ParameterTypeStandaardBeschrijving
blurRadiusnumber (1-100)30Straal van gaussische vervaging
sensitivitynumber (0-1)0.5Drempel voor detectiebetrouwbaarheid

Gezichtsverbetering

Toolroute: enhance-faces
Modellen: GFPGAN, CodeFormer

ParameterTypeStandaardBeschrijving
model"auto" | "gfpgan" | "codeformer""auto"Verbeteringsmodel
strengthnumber (0-1)0.8Verbeteringssterkte
sensitivitynumber (0-1)0.5Gezichtsdetectiedrempel
onlyCenterFacebooleanfalseAlleen het meest centrale gezicht verbeteren

AI-inkleuring

Toolroute: colorize
Model: DDColor (met OpenCV DNN-fallback)

Zet zwart-wit- of grijswaardenfoto's om naar volledige kleur.

ParameterTypeStandaardBeschrijving
intensitynumber (0-1)1.0Sterkte van kleurverzadiging
model"auto" | "ddcolor" | "opencv""auto"Modelvariant

Ruisverwijdering

Toolroute: noise-removal
Model: SCUNet (getrapte denoising-pijplijn)

ParameterTypeStandaardBeschrijving
tier"quick" | "balanced" | "quality" | "maximum""balanced"Verwerkingsniveau
strengthnumber (0-100)50Denoising-sterkte
detailPreservationnumber (0-100)50Hoeveel detail behouden blijft; hoger behoudt meer textuur
colorNoisenumber (0-100)30Sterkte van kleurruisreductie
formatstring"original"Uitvoerformaat: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Kwaliteit van uitvoercodering

Rode-ogenverwijdering

Toolroute: red-eye-removal

Detecteert gezichtslandmarks, lokaliseert oogregio's en corrigeert oververzadiging van het rode kanaal.

ParameterTypeStandaardBeschrijving
sensitivitynumber (0-100)50Detectiedrempel voor rode pixels
strengthnumber (0-100)70Correctiesterkte
formatstring-Override van uitvoerformaat (optioneel)
qualitynumber (1-100)90Uitvoerkwaliteit

Fotorestauratie

Toolroute: restore-photo

Meerstaps-pijplijn voor oude of beschadigde foto's: detectie en reparatie van krassen/scheuren, gezichtsverbetering, denoising en optionele inkleuring.

ParameterTypeStandaardBeschrijving
scratchRemovalbooleantrueKrassen en scheuren detecteren en repareren
faceEnhancementbooleantrueGezichtsverbeteringspas toepassen
fidelitynumber (0-1)0.7Sterkte van gezichtsverbetering (hoger = behoudender)
denoisebooleantrueDenoising-pas toepassen
denoiseStrengthnumber (0-100)25Denoising-sterkte
colorizebooleanfalseInkleuren na restauratie
colorizeStrengthnumber (0-100)85Inkleurintensiteit

Pasfoto

Toolroute: passport-photo
Modellen: MediaPipe-gezichtslandmarks + BiRefNet-achtergrondverwijdering

Workflow in twee fasen: analyseren (gezicht detecteren + achtergrond verwijderen) en vervolgens genereren (uitsnijden, formaat wijzigen, tegelen). Ondersteunt meer dan 37 landen in 6 regio's.

Fase 1: Analyseren

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

Accepteert een afbeeldingsbestand (multipart). Retourneert gezichtslandmark-gegevens, een base64-voorbeeld en afbeeldingsafmetingen.

Fase 2: Genereren

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

Accepteert een JSON-body met de resultaten van fase 1 plus generatie-instellingen:

ParameterTypeStandaardBeschrijving
jobIdstring(vereist)Job-ID uit fase 1
filenamestring(vereist)Oorspronkelijke bestandsnaam uit fase 1
countryCodestring(vereist)ISO-landcode (bijv. US, GB, IN)
documentTypestring"passport"Documenttype
bgColorstring"#FFFFFF"Hex-achtergrondkleur
printLayoutstring"none"Afdruklay-out: none, 4x6, a4, letter
maxFileSizeKbnumber0Max. bestandsgrootte in KB (0 = geen limiet)
dpinumber (72-1200)300Uitvoer-DPI
customWidthMmnumber-Aangepaste breedte in mm (overschrijft landspecificatie)
customHeightMmnumber-Aangepaste hoogte in mm (overschrijft landspecificatie)
zoomnumber (0.5-3)1Zoomfactor
adjustXnumber0Horizontale positieaanpassing
adjustYnumber0Verticale positieaanpassing
landmarksobject(vereist)Landmarks uit fase 1
imageWidthnumber(vereist)Afbeeldingsbreedte uit fase 1
imageHeightnumber(vereist)Afbeeldingshoogte uit fase 1

Objecten wissen (Inpainting)

Toolroute: erase-object
Model: LaMa via ONNX Runtime

Het masker wordt verzonden als een tweede bestandsdeel (fieldname mask), niet als base64. Witte pixels in het masker geven gebieden aan die gewist moeten worden. De instellingen format en quality worden verzonden als velden op het hoogste niveau van het formulier.

ParameterTypeStandaardBeschrijving
filefile(vereist)Bronafbeelding (multipart)
maskfile(vereist)Maskerafbeelding (multipart, fieldname mask, wit = wissen)
formatstring"auto"Uitvoerformaat: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Uitvoerkwaliteit

CUDA-versneld wanneer een NVIDIA-GPU beschikbaar is.

AI-canvas uitbreiden

Toolroute: ai-canvas-expand
Model: LaMa-gebaseerde outpainting

Breidt het canvas van een afbeelding in elke richting uit en vult nieuwe gebieden met door AI gegenereerde inhoud die aansluit op de bestaande afbeelding.

ParameterTypeStandaardBeschrijving
extendTopinteger0Aantal pixels om bovenaan uit te breiden
extendRightinteger0Aantal pixels om rechts uit te breiden
extendBottominteger0Aantal pixels om onderaan uit te breiden
extendLeftinteger0Aantal pixels om links uit te breiden
tier"fast" | "balanced" | "high""balanced"Kwaliteitsniveau
formatstring"auto"Uitvoerformaat: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Uitvoerkwaliteit

Ten minste één uitbreidingsrichting moet groter zijn dan 0.

Slim uitsnijden

Toolroute: smart-crop
Model: MediaPipe-gezichtsdetectie (alleen gezichtsmodus)

ParameterTypeStandaardBeschrijving
modestring"subject"Uitsnijstrategie: subject, face, trim
strategy"attention" | "entropy""attention"Strategie voor onderwerpmodus
widthinteger-Uitvoerbreedte
heightinteger-Uitvoerhoogte
paddinginteger (0-50)0Percentage opvulling rond onderwerp
facePresetstring"head-shoulders"Vaste kadering wanneer mode=face
sensitivitynumber (0-1)0.5Gezichtsdetectiedrempel
thresholdinteger (0-255)30Achtergronddetectiedrempel (trimmodus)
padToSquarebooleanfalseGetrimd resultaat opvullen tot een vierkant
padColorstring"#ffffff"Achtergrondkleur voor vierkante opvulling
targetSizeinteger-Doelgrootte voor opgevulde uitvoer (pixels)
qualityinteger (1-100)-Uitvoerkwaliteit

Verouderde mode-waarden attention en content worden geaccepteerd en respectievelijk toegewezen aan subject en trim.

Gezichtspresets:

PresetBest voor
closeupPortretfoto's
head-shouldersProfielfoto's
upper-bodyLinkedIn / formeel
half-bodyVolledig bovenlichaam

Audio transcriberen

Toolroute: transcribe-audio
Model: faster-whisper

Zet spraak om naar tekst. Ondersteunt platte tekst, SRT en VTT als uitvoerformaten.

ParameterTypeStandaardBeschrijving
languagestring"auto"Taal: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Uitvoerformaat

Automatische ondertiteling

Toolroute: auto-subtitles
Model: faster-whisper (extraheert audio uit video en transcribeert vervolgens)

Genereert ondertitelbestanden op basis van het audiospoor van een video.

ParameterTypeStandaardBeschrijving
languagestring"auto"Taal: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Uitvoerformaat voor ondertitels

PNG-transparantiehersteller

Toolroute: transparency-fixer
Model: BiRefNet HR-matting (2048x2048-resolutie)

Herstelt "nep-transparante" PNG's waarbij de achtergrond werd verwijderd maar fringing, halo's of semi-transparante artefacten achterbleven. Gebruikt het hoge-resolutie-mattingmodel van BiRefNet om een schoon alfakanaal te produceren en past vervolgens configureerbare defringe-verwerking toe om kleurverontreiniging langs randen te verwijderen.

OOM-fallbackketen: Als BiRefNet HR-matting het beschikbare geheugen overschrijdt, valt de tool automatisch terug op birefnet-general en vervolgens op u2net.

ParameterTypeStandaardBeschrijving
defringenumber (0-100)30Sterkte van rand-defringe om kleurverontreiniging te verwijderen
outputFormat"png" | "webp""png"Uitvoerformaat voor afbeelding
removeWatermarkbooleanfalseVoorbewerking voor watermerkverwijdering toepassen (mediaanfilter)
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"}'

Tools met optionele AI-mogelijkheden

De volgende tools zijn geen Python-sidecar-tools, maar gebruiken AI-functies wanneer bepaalde opties zijn ingeschakeld.

Afbeeldingsverbetering

Toolroute: image-enhancement
Engine: Analysegebaseerd (Sharp-histogram en -statistieken)

Analyseert de afbeelding en past automatische correcties toe voor belichting, contrast, witbalans, verzadiging, scherpte en ruis. Ondersteunt scènespecifieke modi.

ParameterTypeStandaardBeschrijving
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Scènemodus voor het afstemmen van correcties
intensitynumber (0-100)50Algehele correctiesterkte
corrections.exposurebooleantrueBelichtingscorrectie toepassen
corrections.contrastbooleantrueContrastcorrectie toepassen
corrections.whiteBalancebooleantrueWitbalanscorrectie toepassen
corrections.saturationbooleantrueVerzadigingscorrectie toepassen
corrections.sharpnessbooleantrueScherptecorrectie toepassen
corrections.denoisebooleantrueDenoising toepassen
deepEnhancebooleanfalseAI-ruisverwijdering via SCUNet inschakelen (vereist upscale-enhance-bundel)

Er is een aanvullend analyse-endpoint beschikbaar op POST /api/v1/tools/image/image-enhancement/analyze dat de gedetecteerde correcties retourneert zonder ze toe te passen.

Inhoudsbewuste vergroting/verkleining (Seam Carving)

Toolroute: content-aware-resize
Engine: Go caire-binary (geen Python: geen GPU-voordeel)

Wijzigt op intelligente wijze het formaat van afbeeldingen door naden met lage energie te verwijderen, met behoud van belangrijke inhoud.

ParameterTypeStandaardBeschrijving
widthnumber-Doelbreedte
heightnumber-Doelhoogte
protectFacesbooleanfalseGedetecteerde gezichtsregio's beschermen (vereist face-detection-bundel)
blurRadiusnumber (0-20)4Voorvervaging voor energieberekening
sobelThresholdnumber (1-20)2Drempel voor randgevoeligheid
squarebooleanfalseVierkante uitvoer forceren