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

Dokumentacja silnika AI

Pakiet @snapotter/ai łączy Node.js z trwałym procesem pomocniczym Pythona (sidecar) dla wszystkich operacji ML. Proces dyspozytora pozostaje aktywny między żądaniami, co zapewnia szybkie działanie z rozgrzanego startu. NVIDIA CUDA jest automatycznie wykrywana przy uruchomieniu i używana, gdy jest dostępna; w przeciwnym razie narzędzia AI działają na CPU.

Przyspieszenie iGPU Intel/AMD za pośrednictwem VA-API, Quick Sync lub OpenCL nie jest obecnie obsługiwane dla wnioskowania AI. Mapowanie /dev/dri do kontenera nie przyspiesza tych narzędzi procesu pomocniczego Pythona, chyba że dostępny jest GPU NVIDIA obsługujący CUDA.

19 narzędzi AI procesu pomocniczego Pythona w czterech modalnościach (obraz, dźwięk, wideo, dokument), plus 2 narzędzia z opcjonalnymi funkcjami AI. Wszystkie modele działają lokalnie - po początkowym pobraniu modeli internet nie jest wymagany.

Architektura

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)

Oddzielny profil dyspozytora "docs" zastępuje listę dozwolonych AI skryptami do przetwarzania dokumentów (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) i pomija ciężkie importy ML.

Limity czasu: 300 s domyślnie; OCR i usuwanie tła BiRefNet otrzymują 600 s.

Pakiety funkcji

Modele AI są pakowane według współdzielonego stosu zależności, a nie jako jedno archiwum na narzędzie. Pakiet funkcji może włączyć kilka narzędzi, gdy używają tej samej rodziny modeli, tych samych pakietów wheel Pythona lub natywnych bibliotek. Utrzymuje to mniejszy rozmiar wydania obrazu Docker i pozwala uniknąć przechowywania zduplikowanych kopii tych samych modeli mattingu tła, wykrywania twarzy, OCR, renowacji i mowy.

Obraz Docker dostarcza aplikację oraz wspólne środowisko uruchomieniowe. Duże archiwa modeli są pobierane na żądanie do trwałego woluminu /data/ai, a następnie ponownie wykorzystywane przez każde narzędzie, które ich potrzebuje. Jeśli pakiet jest już zainstalowany, ponieważ inne narzędzie go potrzebowało, włączenie nowego zależnego narzędzia nie powoduje ponownego pobrania tego pakietu.

Każde narzędzie AI wymaga jednego lub więcej pakietów funkcji, zanim będzie mogło działać. Interfejs administratora instaluje według narzędzia poprzez POST /api/v1/admin/tools/:toolId/features/install, które rozwiązuje pełną listę pakietów, pomija pakiety już zainstalowane i kolejkuje tylko brakujące pobrania. Na przykład włączenie Zdjęcia paszportowego na świeżej instancji kolejkuje background-removal i face-detection; włączenie go po zainstalowaniu już Usuwania tła kolejkuje tylko face-detection.

PakietRozmiarWspółdzielona grupa zależnościNarzędzia, które go używają
background-removal4-5 GBmatting tła rembg / BiRefNetremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBwykrywanie twarzy i punktów charakterystycznych MediaPipeblur-faces, red-eye-removal, smart-crop
object-eraser-colorize1-2 GBinpainting/outpainting LaMa oraz DDColorerase-object, colorize, ai-canvas-expand
upscale-enhance5-6 GBRealESRGAN, GFPGAN / CodeFormer, odszumianieupscale, enhance-faces, noise-removal
photo-restoration4-5 GBnaprawa rys i potok renowacjirestore-photo
ocr5-6 GBstos OCR PaddleOCR / Tesseractocr, ocr-pdf
transcription~600 MBmodele mowy na tekst faster-whispertranscribe-audio, auto-subtitles

Narzędzia z zależnościami międzypakietowymi:

NarzędzieWymagane pakietyDlaczego
passport-photobackground-removal, face-detectionUsuwa tło, a następnie używa punktów charakterystycznych twarzy do wykadrowania zgodnie z zasadami zdjęć paszportowych i dowodowych.
enhance-facesupscale-enhance, face-detectionWykrywa twarze przed uruchomieniem ulepszenia GFPGAN lub CodeFormer na wybranych obszarach twarzy.

Narzędzie jest dostępne tylko wtedy, gdy zainstalowane są wszystkie jego wymagane pakiety. Częściowe instalacje są prawidłowe i obsługiwane przyrostowo: zainstalowane pakiety są ponownie wykorzystywane, brakujące pakiety są pokazywane jako pobrania, a zakolejkowane instalacje uruchamiają się pojedynczo, aby współdzielone środowisko Pythona nie było modyfikowane równocześnie.


Usuwanie tła

Trasa narzędzia: remove-background
Model: rembg z BiRefNet (domyślnie) lub warianty U2-Net

ParametrTypDomyślnieOpis
modelstring-Wariant modelu (opcjonalne nadpisanie)
backgroundTypestring"transparent"Jeden z: transparent, color, gradient, blur, image
backgroundColorstring-Kolor hex dla jednolitego tła
gradientColor1string-Pierwszy kolor gradientu
gradientColor2string-Drugi kolor gradientu
gradientAnglenumber-Kąt gradientu w stopniach
blurEnabledboolean-Włącz efekt rozmycia tła
blurIntensitynumber (0-100)-Intensywność rozmycia
shadowEnabledboolean-Włącz cień pod obiektem
shadowOpacitynumber (0-100)-Krycie cienia
outputFormatstring-Format wyjściowy: png, webp lub avif
edgeRefineinteger (0-3)-Poziom wygładzania krawędzi
decontaminateboolean-Usuń przenikanie koloru z krawędzi

Zamiana tła

Trasa narzędzia: background-replace
Model: rembg / BiRefNet (współdzielony z remove-background)

Usuwa tło i zastępuje je jednolitym kolorem lub gradientem.

ParametrTypDomyślnieOpis
backgroundType"color" | "gradient""color"Tryb tła
colorstring"#ffffff"Kolor hex tła (gdy backgroundType to color)
gradientColor1string-Pierwszy kolor hex gradientu
gradientColor2string-Drugi kolor hex gradientu
gradientAngleinteger (0-360)180Kąt gradientu w stopniach
featherinteger (0-20)0Promień wtapiania krawędzi
format"png" | "webp""png"Format wyjściowy

Rozmycie tła

Trasa narzędzia: blur-background
Model: rembg / BiRefNet (współdzielony z remove-background)

Rozmywa tło, zachowując ostrość obiektu.

ParametrTypDomyślnieOpis
intensityinteger (1-100)50Intensywność rozmycia
featherinteger (0-20)0Promień wtapiania krawędzi
format"png" | "webp""png"Format wyjściowy

Powiększanie obrazu

Trasa narzędzia: upscale
Model: RealESRGAN (z rezerwowym Lanczos, gdy niedostępny)

ParametrTypDomyślnieOpis
scalenumber2Współczynnik powiększenia
modelstring"auto"Wariant modelu
faceEnhancebooleanfalseZastosuj przebieg ulepszania twarzy GFPGAN
denoisenumber0Siła odszumiania
formatstring"auto"Nadpisanie formatu wyjściowego
qualitynumber95Jakość wyjściowa (1-100)

OCR / Wyodrębnianie tekstu

Trasa narzędzia: ocr
Modele: Tesseract (szybki), PaddleOCR PP-OCRv5 (zrównoważony), PaddleOCR-VL 1.5 (najlepszy)

ParametrTypDomyślnieOpis
quality"fast" | "balanced" | "best""balanced"Poziom przetwarzania
languagestring"auto"Język: auto, en, de, fr, es, zh, ja, ko
enhancebooleantrueWstępnie przetwórz obraz, aby poprawić dokładność OCR
enginestring-Przestarzałe. Mapuje tesseract na fast, paddleocr na balanced

Zwraca uporządkowane wyniki z ramkami ograniczającymi, wynikami pewności i wyodrębnionymi blokami tekstu.

OCR PDF

Trasa narzędzia: ocr-pdf
Modele: Ten sam system poziomów co OCR obrazu

Wyodrębnia tekst ze skanowanych dokumentów PDF przy użyciu OCR wspieranego przez AI, strona po stronie.

ParametrTypDomyślnieOpis
quality"fast" | "balanced" | "best""balanced"Poziom przetwarzania
languagestring"auto"Język: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Wybór stron: "all", "1-3", "1,3,5"

Rozmycie twarzy / danych osobowych

Trasa narzędzia: blur-faces
Model: wykrywanie twarzy MediaPipe

ParametrTypDomyślnieOpis
blurRadiusnumber (1-100)30Promień rozmycia gaussowskiego
sensitivitynumber (0-1)0.5Próg pewności wykrywania

Ulepszanie twarzy

Trasa narzędzia: enhance-faces
Modele: GFPGAN, CodeFormer

ParametrTypDomyślnieOpis
model"auto" | "gfpgan" | "codeformer""auto"Model ulepszania
strengthnumber (0-1)0.8Siła ulepszania
sensitivitynumber (0-1)0.5Próg wykrywania twarzy
onlyCenterFacebooleanfalseUlepsz tylko najbardziej centralną twarz

Koloryzacja AI

Trasa narzędzia: colorize
Model: DDColor (z rezerwowym OpenCV DNN)

Przekształca zdjęcia czarno-białe lub w skali szarości na pełny kolor.

ParametrTypDomyślnieOpis
intensitynumber (0-1)1.0Siła nasycenia kolorów
model"auto" | "ddcolor" | "opencv""auto"Wariant modelu

Usuwanie szumu

Trasa narzędzia: noise-removal
Model: SCUNet (wielopoziomowy potok odszumiania)

ParametrTypDomyślnieOpis
tier"quick" | "balanced" | "quality" | "maximum""balanced"Poziom przetwarzania
strengthnumber (0-100)50Siła odszumiania
detailPreservationnumber (0-100)50Ile detali zachować; wyższa wartość zachowuje więcej tekstury
colorNoisenumber (0-100)30Siła redukcji szumu kolorów
formatstring"original"Format wyjściowy: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Jakość kodowania wyjścia

Usuwanie czerwonych oczu

Trasa narzędzia: red-eye-removal

Wykrywa punkty charakterystyczne twarzy, lokalizuje obszary oczu i koryguje nadmierne nasycenie kanału czerwonego.

ParametrTypDomyślnieOpis
sensitivitynumber (0-100)50Próg wykrywania czerwonych pikseli
strengthnumber (0-100)70Siła korekcji
formatstring-Nadpisanie formatu wyjściowego (opcjonalne)
qualitynumber (1-100)90Jakość wyjściowa

Renowacja zdjęć

Trasa narzędzia: restore-photo

Wieloetapowy potok dla starych lub uszkodzonych zdjęć: wykrywanie i naprawa rys/rozdarć, ulepszanie twarzy, odszumianie oraz opcjonalna koloryzacja.

ParametrTypDomyślnieOpis
scratchRemovalbooleantrueWykryj i napraw rysy, rozdarcia
faceEnhancementbooleantrueZastosuj przebieg ulepszania twarzy
fidelitynumber (0-1)0.7Siła ulepszania twarzy (wyższa = bardziej zachowawcza)
denoisebooleantrueZastosuj przebieg odszumiania
denoiseStrengthnumber (0-100)25Siła odszumiania
colorizebooleanfalseKoloryzuj po renowacji
colorizeStrengthnumber (0-100)85Intensywność koloryzacji

Zdjęcie paszportowe

Trasa narzędzia: passport-photo
Modele: punkty charakterystyczne twarzy MediaPipe + usuwanie tła BiRefNet

Dwufazowy przepływ pracy: analiza (wykryj twarz + usuń tło), a następnie generowanie (kadrowanie, zmiana rozmiaru, kafelkowanie). Obsługuje ponad 37 krajów w 6 regionach.

Faza 1: Analiza

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

Przyjmuje plik obrazu (multipart). Zwraca dane punktów charakterystycznych twarzy, podgląd base64 oraz wymiary obrazu.

Faza 2: Generowanie

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

Przyjmuje treść JSON z wynikami Fazy 1 oraz ustawieniami generowania:

ParametrTypDomyślnieOpis
jobIdstring(wymagane)Identyfikator zadania z Fazy 1
filenamestring(wymagane)Oryginalna nazwa pliku z Fazy 1
countryCodestring(wymagane)Kod kraju ISO (np. US, GB, IN)
documentTypestring"passport"Typ dokumentu
bgColorstring"#FFFFFF"Kolor tła hex
printLayoutstring"none"Układ wydruku: none, 4x6, a4, letter
maxFileSizeKbnumber0Maksymalny rozmiar pliku w KB (0 = brak limitu)
dpinumber (72-1200)300DPI wyjścia
customWidthMmnumber-Niestandardowa szerokość w mm (nadpisuje specyfikację kraju)
customHeightMmnumber-Niestandardowa wysokość w mm (nadpisuje specyfikację kraju)
zoomnumber (0.5-3)1Współczynnik przybliżenia
adjustXnumber0Korekta położenia w poziomie
adjustYnumber0Korekta położenia w pionie
landmarksobject(wymagane)Punkty charakterystyczne z Fazy 1
imageWidthnumber(wymagane)Szerokość obrazu z Fazy 1
imageHeightnumber(wymagane)Wysokość obrazu z Fazy 1

Usuwanie obiektów (Inpainting)

Trasa narzędzia: erase-object
Model: LaMa przez ONNX Runtime

Maska jest wysyłana jako druga część pliku (nazwa pola mask), a nie jako base64. Białe piksele w masce wskazują obszary do usunięcia. Ustawienia format i quality są wysyłane jako pola formularza najwyższego poziomu.

ParametrTypDomyślnieOpis
filefile(wymagane)Obraz źródłowy (multipart)
maskfile(wymagane)Obraz maski (multipart, nazwa pola mask, biały = usuń)
formatstring"auto"Format wyjściowy: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Jakość wyjściowa

Przyspieszane przez CUDA, gdy dostępny jest GPU NVIDIA.

Rozszerzanie kadru AI

Trasa narzędzia: ai-canvas-expand
Model: outpainting oparty na LaMa

Rozszerza kadr obrazu w dowolnym kierunku i wypełnia nowe obszary treścią wygenerowaną przez AI, która pasuje do istniejącego obrazu.

ParametrTypDomyślnieOpis
extendTopinteger0Piksele do rozszerzenia u góry
extendRightinteger0Piksele do rozszerzenia po prawej
extendBottominteger0Piksele do rozszerzenia u dołu
extendLeftinteger0Piksele do rozszerzenia po lewej
tier"fast" | "balanced" | "high""balanced"Poziom jakości
formatstring"auto"Format wyjściowy: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Jakość wyjściowa

Co najmniej jeden kierunek rozszerzenia musi być większy niż 0.

Inteligentne kadrowanie

Trasa narzędzia: smart-crop
Model: wykrywanie twarzy MediaPipe (tylko tryb twarzy)

ParametrTypDomyślnieOpis
modestring"subject"Strategia kadrowania: subject, face, trim
strategy"attention" | "entropy""attention"Strategia dla trybu obiektu
widthinteger-Szerokość wyjścia
heightinteger-Wysokość wyjścia
paddinginteger (0-50)0Procent marginesu wokół obiektu
facePresetstring"head-shoulders"Predefiniowane kadrowanie, gdy mode=face
sensitivitynumber (0-1)0.5Próg wykrywania twarzy
thresholdinteger (0-255)30Próg wykrywania tła (tryb przycinania)
padToSquarebooleanfalseDopełnij przycięty wynik do kwadratu
padColorstring"#ffffff"Kolor tła dla dopełnienia kwadratowego
targetSizeinteger-Docelowy rozmiar dla dopełnionego wyjścia (piksele)
qualityinteger (1-100)-Jakość wyjściowa

Starsze wartości mode attention i content są akceptowane i mapowane odpowiednio na subject i trim.

Predefiniowane ustawienia twarzy:

PredefiniowaneNajlepsze do
closeupZdjęcia portretowe
head-shouldersZdjęcia profilowe
upper-bodyLinkedIn / formalne
half-bodyPełna górna część ciała

Transkrypcja dźwięku

Trasa narzędzia: transcribe-audio
Model: faster-whisper

Przekształca mowę na tekst. Obsługuje formaty wyjściowe zwykły tekst, SRT i VTT.

ParametrTypDomyślnieOpis
languagestring"auto"Język: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Format wyjściowy

Automatyczne napisy

Trasa narzędzia: auto-subtitles
Model: faster-whisper (wyodrębnia dźwięk z wideo, a następnie transkrybuje)

Generuje pliki napisów ze ścieżki dźwiękowej wideo.

ParametrTypDomyślnieOpis
languagestring"auto"Język: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Format wyjściowy napisów

Naprawa przezroczystości PNG

Trasa narzędzia: transparency-fixer
Model: BiRefNet HR-matting (rozdzielczość 2048x2048)

Naprawia "fałszywie przezroczyste" pliki PNG, w których tło zostało usunięte, ale pozostawiło obwódki, aureole lub półprzezroczyste artefakty. Używa modelu mattingu wysokiej rozdzielczości BiRefNet, aby uzyskać czysty kanał alfa, a następnie stosuje konfigurowalne przetwarzanie usuwające przebarwienia w celu usunięcia zanieczyszczenia kolorem wzdłuż krawędzi.

Łańcuch rezerwowy OOM: Jeśli BiRefNet HR-matting przekroczy dostępną pamięć, narzędzie automatycznie przechodzi na birefnet-general, a następnie na u2net.

ParametrTypDomyślnieOpis
defringenumber (0-100)30Siła usuwania obwódek krawędzi w celu usunięcia zanieczyszczenia kolorem
outputFormat"png" | "webp""png"Format obrazu wyjściowego
removeWatermarkbooleanfalseZastosuj wstępne przetwarzanie usuwania znaku wodnego (filtr medianowy)
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"}'

Narzędzia z opcjonalnymi funkcjami AI

Poniższe narzędzia nie są narzędziami procesu pomocniczego Pythona, ale używają funkcji AI, gdy włączone są określone opcje.

Ulepszanie obrazu

Trasa narzędzia: image-enhancement
Silnik: oparty na analizie (histogram i statystyki Sharp)

Analizuje obraz i stosuje automatyczne korekcje ekspozycji, kontrastu, balansu bieli, nasycenia, ostrości i szumu. Obsługuje tryby dostosowane do sceny.

ParametrTypDomyślnieOpis
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Tryb sceny do dostrajania korekcji
intensitynumber (0-100)50Ogólna siła korekcji
corrections.exposurebooleantrueZastosuj korekcję ekspozycji
corrections.contrastbooleantrueZastosuj korekcję kontrastu
corrections.whiteBalancebooleantrueZastosuj korekcję balansu bieli
corrections.saturationbooleantrueZastosuj korekcję nasycenia
corrections.sharpnessbooleantrueZastosuj korekcję ostrości
corrections.denoisebooleantrueZastosuj odszumianie
deepEnhancebooleanfalseWłącz usuwanie szumu AI przez SCUNet (wymaga pakietu upscale-enhance)

Dodatkowy punkt końcowy analizy jest dostępny pod POST /api/v1/tools/image/image-enhancement/analyze, który zwraca wykryte korekcje bez ich stosowania.

Zmiana rozmiaru z uwzględnieniem treści (Seam Carving)

Trasa narzędzia: content-aware-resize
Silnik: binarka Go caire (nie Python - brak korzyści z GPU)

Inteligentnie zmienia rozmiar obrazów, usuwając szwy o niskiej energii i zachowując ważną treść.

ParametrTypDomyślnieOpis
widthnumber-Docelowa szerokość
heightnumber-Docelowa wysokość
protectFacesbooleanfalseChroń wykryte obszary twarzy (wymaga pakietu face-detection)
blurRadiusnumber (0-20)4Wstępne rozmycie do obliczania energii
sobelThresholdnumber (1-20)2Próg czułości krawędzi
squarebooleanfalseWymuś kwadratowe wyjście