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

Tài liệu tham khảo Engine AI

Gói @snapotter/ai kết nối Node.js với một sidecar Python thường trực cho mọi thao tác ML. Tiến trình dispatcher luôn chạy giữa các yêu cầu để đạt hiệu năng khởi động ấm nhanh. NVIDIA CUDA được tự động phát hiện khi khởi động và dùng khi có sẵn; nếu không, các công cụ AI chạy trên CPU.

Hiện chưa hỗ trợ tăng tốc iGPU Intel/AMD qua VA-API, Quick Sync hay OpenCL cho suy luận AI. Việc ánh xạ /dev/dri vào container không tăng tốc các công cụ sidecar Python này trừ khi có một GPU NVIDIA hỗ trợ CUDA.

19 công cụ AI sidecar Python trên bốn phương thức (ảnh, âm thanh, video, tài liệu), cộng thêm 2 công cụ có khả năng AI tùy chọn. Mọi mô hình đều chạy cục bộ, không cần internet sau khi tải mô hình lần đầu.

Kiến trúc

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)

Một hồ sơ dispatcher "docs" riêng thay thế danh sách cho phép AI bằng các script xử lý tài liệu (doc_pagecount, doc_health, doc_flatten, doc_redact, doc_text, doc_to_word, doc_metadata, doc_html_pdf) và bỏ qua việc import các thư viện ML nặng.

Thời gian chờ: mặc định 300 giây; OCR và xóa nền BiRefNet được cấp 600 giây.

Gói tính năng

Các mô hình AI được đóng gói theo ngăn xếp phụ thuộc dùng chung, không phải một kho lưu trữ cho mỗi công cụ. Một gói tính năng có thể bật nhiều công cụ khi chúng dùng cùng họ mô hình, wheel Python hoặc thư viện native. Điều này giúp image Docker phát hành nhỏ hơn và tránh lưu trữ các bản sao trùng lặp của cùng một mô hình matting nền, phát hiện khuôn mặt, OCR, phục chế và giọng nói.

Image Docker đi kèm ứng dụng cộng với runtime chung. Các kho lưu trữ mô hình lớn được tải theo yêu cầu vào volume /data/ai thường trực, rồi được tái sử dụng bởi mọi công cụ cần đến. Nếu một gói đã được cài vì công cụ khác cần, thì việc bật một công cụ phụ thuộc mới sẽ không tải lại gói đó.

Mỗi công cụ AI yêu cầu một hoặc nhiều gói tính năng trước khi có thể chạy. Giao diện quản trị cài đặt theo công cụ thông qua POST /api/v1/admin/tools/:toolId/features/install, giao diện này giải quyết toàn bộ danh sách gói, bỏ qua những gói đã cài và chỉ xếp hàng những phần tải còn thiếu. Ví dụ, bật Passport Photo trên một phiên bản mới sẽ xếp hàng background-removalface-detection; bật nó sau khi Background Removal đã được cài thì chỉ xếp hàng face-detection.

GóiKích thướcNhóm phụ thuộc dùng chungCông cụ sử dụng
background-removal4-5 GBmatting nền rembg / BiRefNetremove-background, passport-photo, transparency-fixer, background-replace, blur-background
face-detection200-300 MBphát hiện khuôn mặt và mốc điểm MediaPipeblur-faces, red-eye-removal, smart-crop
object-eraser-colorize1-2 GBinpainting/outpainting LaMa và DDColorerase-object, colorize, ai-canvas-expand
upscale-enhance5-6 GBRealESRGAN, GFPGAN / CodeFormer, khử nhiễuupscale, enhance-faces, noise-removal
photo-restoration4-5 GBquy trình sửa vết xước và phục chếrestore-photo
ocr5-6 GBngăn xếp OCR PaddleOCR / Tesseractocr, ocr-pdf
transcription~600 MBmô hình chuyển giọng nói thành văn bản faster-whispertranscribe-audio, auto-subtitles

Các công cụ có phụ thuộc chéo giữa nhiều gói:

Công cụGói yêu cầuLý do
passport-photobackground-removal, face-detectionXóa nền, rồi dùng mốc điểm khuôn mặt để căn khung cắt theo quy tắc ảnh hộ chiếu và ảnh thẻ.
enhance-facesupscale-enhance, face-detectionPhát hiện khuôn mặt trước khi chạy tăng cường GFPGAN hoặc CodeFormer trên các vùng khuôn mặt đã chọn.

Một công cụ chỉ khả dụng khi tất cả gói yêu cầu của nó đã được cài. Cài đặt một phần là hợp lệ và được xử lý tăng dần: các gói đã cài được tái sử dụng, các gói còn thiếu hiển thị dưới dạng cần tải, và các lượt cài đã xếp hàng chạy lần lượt từng lượt để môi trường Python dùng chung không bị sửa đổi đồng thời.


Xóa nền

Đường dẫn công cụ: remove-background
Mô hình: rembg với BiRefNet (mặc định) hoặc các biến thể U2-Net

Tham sốKiểuMặc địnhMô tả
modelstring-Biến thể mô hình (ghi đè tùy chọn)
backgroundTypestring"transparent"Một trong: transparent, color, gradient, blur, image
backgroundColorstring-Mã màu hex cho nền đơn sắc
gradientColor1string-Màu gradient thứ nhất
gradientColor2string-Màu gradient thứ hai
gradientAnglenumber-Góc gradient tính bằng độ
blurEnabledboolean-Bật hiệu ứng làm mờ nền
blurIntensitynumber (0-100)-Cường độ làm mờ
shadowEnabledboolean-Bật đổ bóng lên chủ thể
shadowOpacitynumber (0-100)-Độ mờ đục của bóng
outputFormatstring-Định dạng đầu ra: png, webp hoặc avif
edgeRefineinteger (0-3)-Mức độ tinh chỉnh cạnh
decontaminateboolean-Loại bỏ lem màu ở cạnh

Thay nền

Đường dẫn công cụ: background-replace
Mô hình: rembg / BiRefNet (dùng chung với remove-background)

Xóa nền và thay bằng màu đơn sắc hoặc gradient.

Tham sốKiểuMặc địnhMô tả
backgroundType"color" | "gradient""color"Chế độ nền
colorstring"#ffffff"Màu nền hex (khi backgroundTypecolor)
gradientColor1string-Màu hex gradient thứ nhất
gradientColor2string-Màu hex gradient thứ hai
gradientAngleinteger (0-360)180Góc gradient tính bằng độ
featherinteger (0-20)0Bán kính làm mềm cạnh
format"png" | "webp""png"Định dạng đầu ra

Làm mờ nền

Đường dẫn công cụ: blur-background
Mô hình: rembg / BiRefNet (dùng chung với remove-background)

Làm mờ nền trong khi giữ chủ thể sắc nét.

Tham sốKiểuMặc địnhMô tả
intensityinteger (1-100)50Cường độ làm mờ
featherinteger (0-20)0Bán kính làm mềm cạnh
format"png" | "webp""png"Định dạng đầu ra

Upscale ảnh

Đường dẫn công cụ: upscale
Mô hình: RealESRGAN (dự phòng Lanczos khi không có sẵn)

Tham sốKiểuMặc địnhMô tả
scalenumber2Hệ số upscale
modelstring"auto"Biến thể mô hình
faceEnhancebooleanfalseÁp dụng lượt tăng cường khuôn mặt GFPGAN
denoisenumber0Cường độ khử nhiễu
formatstring"auto"Ghi đè định dạng đầu ra
qualitynumber95Chất lượng đầu ra (1-100)

OCR / Trích xuất văn bản

Đường dẫn công cụ: ocr
Mô hình: Tesseract (nhanh), PaddleOCR PP-OCRv5 (cân bằng), PaddleOCR-VL 1.5 (tốt nhất)

Tham sốKiểuMặc địnhMô tả
quality"fast" | "balanced" | "best""balanced"Bậc xử lý
languagestring"auto"Ngôn ngữ: auto, en, de, fr, es, zh, ja, ko
enhancebooleantrueTiền xử lý ảnh để cải thiện độ chính xác OCR
enginestring-Không dùng nữa. Ánh xạ tesseract sang fast, paddleocr sang balanced

Trả về kết quả có cấu trúc với hộp giới hạn, điểm tin cậy và các khối văn bản đã trích xuất.

OCR PDF

Đường dẫn công cụ: ocr-pdf
Mô hình: Cùng hệ thống bậc như OCR ảnh

Trích xuất văn bản từ tài liệu PDF đã quét bằng OCR chạy trên AI, theo từng trang.

Tham sốKiểuMặc địnhMô tả
quality"fast" | "balanced" | "best""balanced"Bậc xử lý
languagestring"auto"Ngôn ngữ: auto, en, de, fr, es, zh, ja, ko
pagesstring"all"Chọn trang: "all", "1-3", "1,3,5"

Làm mờ khuôn mặt / PII

Đường dẫn công cụ: blur-faces
Mô hình: phát hiện khuôn mặt MediaPipe

Tham sốKiểuMặc địnhMô tả
blurRadiusnumber (1-100)30Bán kính làm mờ Gaussian
sensitivitynumber (0-1)0.5Ngưỡng tin cậy phát hiện

Tăng cường khuôn mặt

Đường dẫn công cụ: enhance-faces
Mô hình: GFPGAN, CodeFormer

Tham sốKiểuMặc địnhMô tả
model"auto" | "gfpgan" | "codeformer""auto"Mô hình tăng cường
strengthnumber (0-1)0.8Cường độ tăng cường
sensitivitynumber (0-1)0.5Ngưỡng phát hiện khuôn mặt
onlyCenterFacebooleanfalseChỉ tăng cường khuôn mặt ở trung tâm nhất

Tô màu bằng AI

Đường dẫn công cụ: colorize
Mô hình: DDColor (dự phòng OpenCV DNN)

Chuyển ảnh đen trắng hoặc thang xám thành ảnh màu đầy đủ.

Tham sốKiểuMặc địnhMô tả
intensitynumber (0-1)1.0Cường độ bão hòa màu
model"auto" | "ddcolor" | "opencv""auto"Biến thể mô hình

Khử nhiễu

Đường dẫn công cụ: noise-removal
Mô hình: SCUNet (quy trình khử nhiễu phân bậc)

Tham sốKiểuMặc địnhMô tả
tier"quick" | "balanced" | "quality" | "maximum""balanced"Bậc xử lý
strengthnumber (0-100)50Cường độ khử nhiễu
detailPreservationnumber (0-100)50Mức chi tiết cần giữ lại; cao hơn thì giữ nhiều kết cấu hơn
colorNoisenumber (0-100)30Cường độ giảm nhiễu màu
formatstring"original"Định dạng đầu ra: original, png, jpeg, webp, avif, jxl
qualitynumber (1-100)90Chất lượng mã hóa đầu ra

Xóa mắt đỏ

Đường dẫn công cụ: red-eye-removal

Phát hiện mốc điểm khuôn mặt, xác định vùng mắt và chỉnh việc kênh đỏ bị bão hòa quá mức.

Tham sốKiểuMặc địnhMô tả
sensitivitynumber (0-100)50Ngưỡng phát hiện điểm ảnh đỏ
strengthnumber (0-100)70Cường độ chỉnh sửa
formatstring-Ghi đè định dạng đầu ra (tùy chọn)
qualitynumber (1-100)90Chất lượng đầu ra

Phục chế ảnh

Đường dẫn công cụ: restore-photo

Quy trình nhiều bước cho ảnh cũ hoặc hư hỏng: phát hiện và sửa vết xước/rách, tăng cường khuôn mặt, khử nhiễu và tô màu tùy chọn.

Tham sốKiểuMặc địnhMô tả
scratchRemovalbooleantruePhát hiện và sửa vết xước, vết rách
faceEnhancementbooleantrueÁp dụng lượt tăng cường khuôn mặt
fidelitynumber (0-1)0.7Cường độ tăng cường khuôn mặt (cao hơn = thận trọng hơn)
denoisebooleantrueÁp dụng lượt khử nhiễu
denoiseStrengthnumber (0-100)25Cường độ khử nhiễu
colorizebooleanfalseTô màu sau khi phục chế
colorizeStrengthnumber (0-100)85Cường độ tô màu

Ảnh hộ chiếu

Đường dẫn công cụ: passport-photo
Mô hình: mốc điểm khuôn mặt MediaPipe + xóa nền BiRefNet

Quy trình hai giai đoạn: phân tích (phát hiện khuôn mặt + xóa nền) rồi tạo (cắt, đổi kích thước, xếp lưới). Hỗ trợ hơn 37 quốc gia trên 6 khu vực.

Giai đoạn 1: Phân tích

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

Nhận một tệp ảnh (multipart). Trả về dữ liệu mốc điểm khuôn mặt, bản xem trước base64 và kích thước ảnh.

Giai đoạn 2: Tạo

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

Nhận một body JSON gồm kết quả Giai đoạn 1 cộng với các thiết lập tạo:

Tham sốKiểuMặc địnhMô tả
jobIdstring(bắt buộc)ID công việc từ Giai đoạn 1
filenamestring(bắt buộc)Tên tệp gốc từ Giai đoạn 1
countryCodestring(bắt buộc)Mã quốc gia ISO (ví dụ US, GB, IN)
documentTypestring"passport"Loại giấy tờ
bgColorstring"#FFFFFF"Mã hex màu nền
printLayoutstring"none"Bố cục in: none, 4x6, a4, letter
maxFileSizeKbnumber0Kích thước tệp tối đa tính bằng KB (0 = không giới hạn)
dpinumber (72-1200)300DPI đầu ra
customWidthMmnumber-Chiều rộng tùy chỉnh tính bằng mm (ghi đè thông số quốc gia)
customHeightMmnumber-Chiều cao tùy chỉnh tính bằng mm (ghi đè thông số quốc gia)
zoomnumber (0.5-3)1Hệ số thu phóng
adjustXnumber0Điều chỉnh vị trí ngang
adjustYnumber0Điều chỉnh vị trí dọc
landmarksobject(bắt buộc)Mốc điểm từ Giai đoạn 1
imageWidthnumber(bắt buộc)Chiều rộng ảnh từ Giai đoạn 1
imageHeightnumber(bắt buộc)Chiều cao ảnh từ Giai đoạn 1

Xóa vật thể (Inpainting)

Đường dẫn công cụ: erase-object
Mô hình: LaMa qua ONNX Runtime

Mask được gửi dưới dạng phần tệp thứ hai (tên trường mask), không phải base64. Điểm ảnh trắng trong mask cho biết vùng cần xóa. Các thiết lập formatquality được gửi dưới dạng trường form cấp trên cùng.

Tham sốKiểuMặc địnhMô tả
filefile(bắt buộc)Ảnh nguồn (multipart)
maskfile(bắt buộc)Ảnh mask (multipart, tên trường mask, trắng = xóa)
formatstring"auto"Định dạng đầu ra: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Chất lượng đầu ra

Tăng tốc CUDA khi có GPU NVIDIA.

Mở rộng khung ảnh bằng AI

Đường dẫn công cụ: ai-canvas-expand
Mô hình: outpainting dựa trên LaMa

Mở rộng khung của một ảnh theo bất kỳ hướng nào và điền vào các vùng mới bằng nội dung do AI tạo ra khớp với ảnh hiện có.

Tham sốKiểuMặc địnhMô tả
extendTopinteger0Số điểm ảnh mở rộng ở phía trên
extendRightinteger0Số điểm ảnh mở rộng ở phía phải
extendBottominteger0Số điểm ảnh mở rộng ở phía dưới
extendLeftinteger0Số điểm ảnh mở rộng ở phía trái
tier"fast" | "balanced" | "high""balanced"Bậc chất lượng
formatstring"auto"Định dạng đầu ra: auto, png, jpg, jpeg, webp, tiff, gif, avif, heic, heif, jxl
qualityinteger (1-100)95Chất lượng đầu ra

Ít nhất một hướng mở rộng phải lớn hơn 0.

Cắt thông minh

Đường dẫn công cụ: smart-crop
Mô hình: phát hiện khuôn mặt MediaPipe (chỉ ở chế độ khuôn mặt)

Tham sốKiểuMặc địnhMô tả
modestring"subject"Chiến lược cắt: subject, face, trim
strategy"attention" | "entropy""attention"Chiến lược cho chế độ chủ thể
widthinteger-Chiều rộng đầu ra
heightinteger-Chiều cao đầu ra
paddinginteger (0-50)0Phần trăm đệm quanh chủ thể
facePresetstring"head-shoulders"Khung định sẵn khi mode=face
sensitivitynumber (0-1)0.5Ngưỡng phát hiện khuôn mặt
thresholdinteger (0-255)30Ngưỡng phát hiện nền (chế độ cắt viền)
padToSquarebooleanfalseĐệm kết quả đã cắt viền thành hình vuông
padColorstring"#ffffff"Màu nền cho phần đệm vuông
targetSizeinteger-Kích thước đích cho đầu ra đã đệm (điểm ảnh)
qualityinteger (1-100)-Chất lượng đầu ra

Các giá trị modeattentioncontent vẫn được chấp nhận và ánh xạ lần lượt sang subjecttrim.

Khung định sẵn cho khuôn mặt:

Định sẵnPhù hợp nhất cho
closeupẢnh chân dung cận
head-shouldersẢnh hồ sơ
upper-bodyLinkedIn / trang trọng
half-bodyToàn bộ nửa thân trên

Chuyển âm thanh thành văn bản

Đường dẫn công cụ: transcribe-audio
Mô hình: faster-whisper

Chuyển giọng nói thành văn bản. Hỗ trợ định dạng đầu ra văn bản thuần, SRT và VTT.

Tham sốKiểuMặc địnhMô tả
languagestring"auto"Ngôn ngữ: auto, en, de, fr, es, zh, ja, ko, id, th, vi
outputFormat"txt" | "srt" | "vtt""txt"Định dạng đầu ra

Phụ đề tự động

Đường dẫn công cụ: auto-subtitles
Mô hình: faster-whisper (trích âm thanh từ video, rồi chuyển thành văn bản)

Tạo tệp phụ đề từ track âm thanh của video.

Tham sốKiểuMặc địnhMô tả
languagestring"auto"Ngôn ngữ: auto, en, de, fr, es, zh, ja, ko, id, th, vi
format"srt" | "vtt""srt"Định dạng phụ đề đầu ra

Sửa độ trong suốt PNG

Đường dẫn công cụ: transparency-fixer
Mô hình: BiRefNet HR-matting (độ phân giải 2048x2048)

Sửa các PNG "trong suốt giả", nơi nền đã được xóa nhưng để lại viền tua, quầng sáng hoặc phần dư bán trong suốt. Dùng mô hình matting độ phân giải cao của BiRefNet để tạo kênh alpha sạch, rồi áp dụng xử lý khử viền có thể cấu hình để loại bỏ nhiễm màu dọc theo cạnh.

Chuỗi dự phòng khi hết bộ nhớ: Nếu BiRefNet HR-matting vượt quá bộ nhớ khả dụng, công cụ tự động chuyển sang dự phòng birefnet-general, rồi đến u2net.

Tham sốKiểuMặc địnhMô tả
defringenumber (0-100)30Cường độ khử viền để loại bỏ nhiễm màu ở cạnh
outputFormat"png" | "webp""png"Định dạng ảnh đầu ra
removeWatermarkbooleanfalseÁp dụng tiền xử lý xóa hình mờ (bộ lọc trung vị)
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"}'

Công cụ có khả năng AI tùy chọn

Các công cụ sau không phải công cụ sidecar Python nhưng dùng tính năng AI khi bật một số tùy chọn.

Tăng cường ảnh

Đường dẫn công cụ: image-enhancement
Engine: Dựa trên phân tích (biểu đồ histogram và thống kê Sharp)

Phân tích ảnh và áp dụng chỉnh sửa tự động cho phơi sáng, tương phản, cân bằng trắng, độ bão hòa, độ nét và nhiễu. Hỗ trợ các chế độ theo cảnh cụ thể.

Tham sốKiểuMặc địnhMô tả
mode"auto" | "portrait" | "landscape" | "low-light" | "food" | "document""auto"Chế độ cảnh để tinh chỉnh việc chỉnh sửa
intensitynumber (0-100)50Cường độ chỉnh sửa tổng thể
corrections.exposurebooleantrueÁp dụng chỉnh phơi sáng
corrections.contrastbooleantrueÁp dụng chỉnh tương phản
corrections.whiteBalancebooleantrueÁp dụng chỉnh cân bằng trắng
corrections.saturationbooleantrueÁp dụng chỉnh độ bão hòa
corrections.sharpnessbooleantrueÁp dụng chỉnh độ nét
corrections.denoisebooleantrueÁp dụng khử nhiễu
deepEnhancebooleanfalseBật khử nhiễu AI qua SCUNet (yêu cầu gói upscale-enhance)

Một endpoint phân tích bổ sung có tại POST /api/v1/tools/image/image-enhancement/analyze, trả về các chỉnh sửa được phát hiện mà không áp dụng chúng.

Đổi kích thước theo nội dung (Seam Carving)

Đường dẫn công cụ: content-aware-resize
Engine: binary Go caire (không phải Python, không hưởng lợi từ GPU)

Đổi kích thước ảnh một cách thông minh bằng cách loại bỏ các đường nối năng lượng thấp, giữ lại nội dung quan trọng.

Tham sốKiểuMặc địnhMô tả
widthnumber-Chiều rộng đích
heightnumber-Chiều cao đích
protectFacesbooleanfalseBảo vệ vùng khuôn mặt đã phát hiện (yêu cầu gói face-detection)
blurRadiusnumber (0-20)4Làm mờ trước để tính năng lượng
sobelThresholdnumber (1-20)2Ngưỡng độ nhạy cạnh
squarebooleanfalseBuộc đầu ra vuông