Files
SnapOtter/apps/docs/hi/api/ai.md
T

463 lines
48 KiB
Markdown
Raw Normal View History

---
description: "सभी लोकल ML टूल के साथ AI इंजन संदर्भ। बैकग्राउंड हटाना, अपस्केलिंग, OCR, फेस डिटेक्शन, फोटो रिस्टोरेशन, और बहुत कुछ।"
i18n_output_hash: 2ed3bda381fa
i18n_source_hash: aa9a56cdddc7
i18n_provenance: human
---
# AI इंजन संदर्भ {#ai-engine-reference}
`@snapotter/ai` पैकेज स्थानीय ML संचालन के लिए मूल उपकरण और Python रनटाइम का समन्वय करता है। अधिकांश ML उपकरण तेज़ वार्म स्टार्ट के लिए लगातार Python sidecar का उपयोग करते हैं। OCR जानबूझकर अलग है: `fast` मूल Tesseract बाइनरी को आमंत्रित करता है, जबकि `balanced` और `best` एक समर्पित निरंतर JSONL dispatcher का उपयोग करते हैं जो सक्रिय अपरिवर्तनीय RapidOCR पीढ़ी के अंतर्गत पिन किया गया है। `/data/ai/v3`. प्रत्येक अनुरोध में एक generation lease होता है। अपग्रेड के दौरान, SnapOtter सक्रियण से पहले उम्मीदवार पर एक smoke test चलाता है, परमाणु रूप से नए dispatcher पर स्विच करता है, फिर garbage collection से पहले पुरानी पीढ़ी को हटा देता है।
NVIDIA CUDA का स्वत: पता लगाया जाता है और इसका समर्थन करने वाले रनटाइम द्वारा उपयोग किया जाता है। OCR प्रत्येक होस्ट पर CPU का उपयोग करता है, जिसमें NVIDIA GPU वाले सिस्टम भी शामिल हैं, इस टूल के लिए CUDA और ड्राइवर कपलिंग से बचा जाता है।
VA-API, Quick Sync, या OpenCL के माध्यम से Intel/AMD iGPU त्वरण आज AI इन्फेरेंस के लिए समर्थित नहीं है। किसी कंटेनर में `/dev/dri` को मैप करना इन Python साइडकार टूल को तेज़ नहीं करता जब तक कोई CUDA-सक्षम NVIDIA GPU उपलब्ध न हो।
चार मोडैलिटी (image, audio, video, document) में 19 Python साइडकार AI टूल, साथ ही वैकल्पिक AI क्षमताओं वाले 2 टूल। सभी मॉडल लोकल रूप से चलते हैं; प्रारंभिक मॉडल डाउनलोड के बाद इंटरनेट की आवश्यकता नहीं।
<!-- korean-ocr-contract:start -->
::: info कोरियाई OCR संगतता
तेज़ OCR `auto`, `en`, `de`, `es`, `fr`, `zh` और `ja` का समर्थन करता है, लेकिन कोरियाई (`ko`) का नहीं। कोरियाई के लिए सटीक OCR पैक और `balanced` या `best` आवश्यक है। पैक आधिकारिक Linux amd64 और arm64 कंटेनरों पर चलता है; NVIDIA होस्ट पर भी OCR CPU पर ही चलता है। असमर्थित सिस्टम स्पष्ट संगतता त्रुटि लौटाते हैं और चुपचाप `fast` पर वापस नहीं जाते। कोरियाई के साथ `fast` या पुराने `tesseract` नाम को कतार में डालने से पहले `FEATURE_INCOMPATIBLE` और `fast-korean-unsupported` के साथ अस्वीकार किया जाता है।
:::
<!-- korean-ocr-contract:end -->
## आर्किटेक्चर {#architecture}
```
Node.js Tool Route
|
v
@snapotter/ai bridge.ts
| (stdin/stdout JSON + stderr progress events)
v
+-- Native Tesseract + Ghostscript (fast image/PDF OCR)
|
+-- Isolated OCR runtime (persistent JSONL dispatcher)
| `-- RapidOCR + ONNX Runtime CPU + pinned PP-OCR models
|
`-- Python dispatcher (persistent process, "ai" profile)
|
|-- remove_bg.py (rembg / BiRefNet)
|-- upscale.py (RealESRGAN)
|-- inpaint.py (LaMa ONNX)
|-- outpaint.py (LaMa canvas expansion)
|-- 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)
```
एक अलग "docs" डिस्पैचर प्रोफ़ाइल AI अनुमति सूची को दस्तावेज़-प्रसंस्करण स्क्रिप्ट (`doc_pagecount`, `doc_health`, `doc_flatten`, `doc_redact`, `doc_text`, `doc_to_word`, `doc_metadata`, `doc_html_pdf`) से बदल देती है और भारी ML आयातों को छोड़ देती है।
**टाइमआउट:** 300 s डिफ़ॉल्ट; OCR और BiRefNet बैकग्राउंड हटाने को 600 s मिलते हैं।
## फ़ीचर बंडल {#feature-bundles}
AI मॉडल साझा डिपेंडेंसी स्टैक द्वारा पैकेज किए जाते हैं, प्रति टूल एक आर्काइव नहीं। एक फ़ीचर बंडल कई टूल को सक्षम कर सकता है जब वे एक ही मॉडल परिवार, Python wheels, या नेटिव लाइब्रेरी का उपयोग करते हैं। इससे रिलीज़ Docker इमेज छोटी रहती है और एक ही बैकग्राउंड मैटिंग, फेस डिटेक्शन, OCR, रिस्टोरेशन, और स्पीच मॉडल की डुप्लिकेट प्रतियाँ संग्रहीत करने से बचा जाता है।
Docker इमेज एप्लिकेशन के साथ-साथ सामान्य रनटाइम भेजती है। बड़े मॉडल आर्काइव माँग पर स्थायी `/data/ai` वॉल्यूम में डाउनलोड किए जाते हैं, फिर हर उस टूल द्वारा पुनः उपयोग किए जाते हैं जिसे उनकी आवश्यकता होती है। यदि कोई बंडल पहले से इंस्टॉल है क्योंकि किसी अन्य टूल को उसकी आवश्यकता थी, तो एक नया आश्रित टूल सक्षम करना उस बंडल को दोबारा डाउनलोड नहीं करता।
अधिकांश एआई टूल को चलने से पहले एक या अधिक फीचर बंडलों की आवश्यकता होती है। व्यवस्थापक यूआई उन्हें `POST /api/v1/admin/tools/:toolId/features/install` के माध्यम से टूल द्वारा इंस्टॉल करता है, जो पूर्ण बंडल सूची को हल करता है, पहले से इंस्टॉल किए गए बंडलों को छोड़ देता है, और केवल लापता डाउनलोड को कतार में रखता है। उदाहरण के लिए, पासपोर्ट फोटो को ताजा इंस्टेंस कतारों `background-removal` और `face-detection` पर सक्षम करना; बैकग्राउंड रिमूवल के बाद इसे सक्षम करने से केवल `face-detection` कतारें पहले से ही स्थापित हैं। OCR अपवाद है क्योंकि `fast` को किसी पैक की आवश्यकता नहीं है; UI या `POST /api/v1/admin/features/ocr/install` के माध्यम से इसका वैकल्पिक सटीक रनटाइम स्थापित करें।
| बंडल | आकार | साझा डिपेंडेंसी समूह | इसका उपयोग करने वाले टूल |
|--------|------|-------------------------|-------------------|
| `background-removal` | 4-5 GB | rembg / BiRefNet बैकग्राउंड मैटिंग | remove-background, passport-photo, transparency-fixer, background-replace, blur-background |
| `face-detection` | 200-300 MB | MediaPipe फेस डिटेक्शन और लैंडमार्क | blur-faces, red-eye-removal, smart-crop |
| `object-eraser-colorize` | 1-2 GB | LaMa इनपेंटिंग/आउटपेंटिंग और DDColor | erase-object, colorize, ai-canvas-expand |
| `upscale-enhance` | 5-6 GB | RealESRGAN, GFPGAN / CodeFormer, डीनॉइज़िंग | upscale, enhance-faces, noise-removal |
| `photo-restoration` | 4-5 GB | स्क्रैच रिपेयर और रिस्टोरेशन पाइपलाइन | restore-photo |
| `ocr` | ~208-234 MiB डाउनलोड / ~409-488 MiB स्थापित | वैकल्पिक RapidOCR 3.9.1, ONNX Runtime 1.20.1, और पिन किए गए PP-OCR मॉडल | ओसीआर, ओसीआर-पीडीएफ (केवल `balanced` और `best`) |
| `transcription` | ~600 MB | faster-whisper स्पीच-टू-टेक्स्ट मॉडल | transcribe-audio, auto-subtitles |
क्रॉस-बंडल डिपेंडेंसी वाले टूल:
| टूल | आवश्यक बंडल | क्यों |
|------|------------------|-----|
| `passport-photo` | `background-removal`, `face-detection` | बैकग्राउंड हटाता है, फिर पासपोर्ट और ID फोटो नियमों के अनुसार क्रॉप को फ्रेम करने के लिए फेस लैंडमार्क का उपयोग करता है। |
| `enhance-faces` | `upscale-enhance`, `face-detection` | चयनित फेस क्षेत्रों पर GFPGAN या CodeFormer एन्हांसमेंट चलाने से पहले फेस का पता लगाता है। |
एक उपकरण तभी उपलब्ध होता है जब OCR को छोड़कर उसके सभी आवश्यक बंडल इंस्टॉल हो जाते हैं: इसका अंतर्निहित `fast` टियर वैकल्पिक OCR पैक के बिना उपलब्ध रहता है। आंशिक इंस्टॉल मान्य हैं और इन्हें क्रमिक रूप से प्रबंधित किया जाता है: इंस्टॉल किए गए बंडलों का पुन: उपयोग किया जाता है, लापता बंडलों को डाउनलोड के रूप में दिखाया जाता है, और कतारबद्ध इंस्टॉल एक समय में एक चलते हैं इसलिए साझा Python वातावरण को समवर्ती रूप से संशोधित नहीं किया जाता है।
### सटीक OCR रनटाइम इंस्टॉलेशन {#accurate-ocr-runtime-installation}
सटीक OCR पैक आधिकारिक Linux amd64 या Linux arm64 कंटेनर के लिए एक प्लेटफ़ॉर्म-विशिष्ट रनटाइम है। amd64 बिल्ड Python 3.12 का उपयोग करता है; arm64 बिल्ड Python 3.11 का उपयोग करता है। दोनों बिल्ड RapidOCR को ONNX Runtime के `CPUExecutionProvider` के माध्यम से चलाते हैं, तो वही पैक केवल CPU और NVIDIA Docker होस्ट पर काम करता है। सटीक रनटाइम के लिए कम से कम 4 GiB प्रभावी मेमोरी की आवश्यकता होती है: कॉन्फ़िगर कंटेनर cgroup सीमा, अन्यथा होस्ट मेमोरी। उस हस्ताक्षरित अनुकूलता न्यूनतम से नीचे की प्रणाली को डाउनलोड से पहले अस्वीकार कर दिया जाता है। यह आवश्यकता बिल्ट-इन फास्ट OCR पर लागू नहीं होती है। Bare-metal बिल्ड को अस्वीकार कर दिया गया है क्योंकि उनके libc और Python ABI का सुरक्षित रूप से अनुमान नहीं लगाया जा सकता है; जब होस्ट Tesseract और Ghostscript प्रदान करता है तो तेज़ OCR उपलब्ध रहता है।
आर्किटेक्चर के आधार पर वैकल्पिक आर्टिफैक्ट लगभग 208-234 MiB संपीड़ित और 409-488 MiB निकाला गया है। हस्ताक्षरित सूचकांक इंस्टॉलर द्वारा लागू सटीक संपीड़ित और निकाले गए बाइट गिनती को बांधता है। अंतर्निहित Tesseract आधिकारिक छवि में लगभग 25 MiB जोड़ता है और `/data/ai` में किसी फ़ाइल की आवश्यकता नहीं है।
ऑनलाइन इंस्टॉलेशन एक हस्ताक्षरित रिलीज़ इंडेक्स और वर्तमान प्लेटफ़ॉर्म के लिए सटीक सामग्री-संबोधित आर्टिफैक्ट लाता है। SnapOtter नई पीढ़ी को परमाणु रूप से सक्रिय करने से पहले Ed25519 इंडेक्स हस्ताक्षर, आर्टिफैक्ट आकार, SHA-256 डाइजेस्ट, मॉडल डाइजेस्ट, पथ, फ़ाइल मोड और चरणबद्ध smoke test को सत्यापित करता है। एक असफल इंस्टालेशन पूर्व स्वस्थ पीढ़ी को सक्रिय छोड़ देता है।
एयर-गैप्ड इंस्टॉलेशन के लिए, `index` और `archive` नामक मल्टीपार्ट फ़ील्ड का उपयोग करके रिलीज़ के `ocr-runtime-index.json` और मिलान वाले OCR रनटाइम संग्रह को `POST /api/v1/admin/features/import` पर अपलोड करें। ऑफ़लाइन आयात ऑनलाइन इंस्टॉलेशन के समान ही हस्ताक्षर, हैश, निष्कर्षण, संगतता और धुआं-परीक्षण जांच लागू करता है; विश्वसनीय हस्ताक्षरित अनुक्रमणिका के बिना एक संग्रह अस्वीकार कर दिया जाता है।
---
## बैकग्राउंड हटाना {#background-removal}
**टूल रूट:** `remove-background`
**मॉडल:** BiRefNet (डिफ़ॉल्ट) या U2-Net वेरिएंट के साथ rembg
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `model` | string | - | मॉडल वेरिएंट (वैकल्पिक ओवरराइड) |
| `backgroundType` | string | `"transparent"` | इनमें से एक: `transparent`, `color`, `gradient`, `blur`, `image` |
| `backgroundColor` | string | - | ठोस बैकग्राउंड के लिए Hex रंग |
| `gradientColor1` | string | - | पहला ग्रेडिएंट रंग |
| `gradientColor2` | string | - | दूसरा ग्रेडिएंट रंग |
| `gradientAngle` | number | - | डिग्री में ग्रेडिएंट कोण |
| `blurEnabled` | boolean | - | बैकग्राउंड ब्लर प्रभाव सक्षम करें |
| `blurIntensity` | number (0-100) | - | ब्लर तीव्रता |
| `shadowEnabled` | boolean | - | विषय पर ड्रॉप शैडो सक्षम करें |
| `shadowOpacity` | number (0-100) | - | शैडो अपारदर्शिता |
| `outputFormat` | string | - | आउटपुट प्रारूप: `png`, `webp`, या `avif` |
| `edgeRefine` | integer (0-3) | - | एज रिफाइनमेंट स्तर |
| `decontaminate` | boolean | - | किनारों से रंग रिसाव हटाएँ |
## बैकग्राउंड बदलना {#background-replace}
**टूल रूट:** `background-replace`
**मॉडल:** rembg / BiRefNet (remove-background के साथ साझा)
बैकग्राउंड हटाता है और उसे ठोस रंग या ग्रेडिएंट से बदल देता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `backgroundType` | `"color"` \| `"gradient"` | `"color"` | बैकग्राउंड मोड |
| `color` | string | `"#ffffff"` | बैकग्राउंड hex रंग (जब `backgroundType` `color` हो) |
| `gradientColor1` | string | - | पहला ग्रेडिएंट hex रंग |
| `gradientColor2` | string | - | दूसरा ग्रेडिएंट hex रंग |
| `gradientAngle` | integer (0-360) | `180` | डिग्री में ग्रेडिएंट कोण |
| `feather` | integer (0-20) | `0` | एज फेदरिंग त्रिज्या |
| `format` | `"png"` \| `"webp"` | `"png"` | आउटपुट प्रारूप |
## बैकग्राउंड ब्लर {#blur-background}
**टूल रूट:** `blur-background`
**मॉडल:** rembg / BiRefNet (remove-background के साथ साझा)
विषय को शार्प रखते हुए बैकग्राउंड को ब्लर करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `intensity` | integer (1-100) | `50` | ब्लर तीव्रता |
| `feather` | integer (0-20) | `0` | एज फेदरिंग त्रिज्या |
| `format` | `"png"` \| `"webp"` | `"png"` | आउटपुट प्रारूप |
## इमेज अपस्केलिंग {#image-upscaling}
**टूल रूट:** `upscale`
**मॉडल:** RealESRGAN (अनुपलब्ध होने पर Lanczos फ़ॉलबैक के साथ)
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `scale` | number | `2` | अपस्केल कारक |
| `model` | string | `"auto"` | मॉडल वेरिएंट |
| `faceEnhance` | boolean | `false` | GFPGAN फेस एन्हांसमेंट पास लागू करें |
| `denoise` | number | `0` | डीनॉइज़िंग शक्ति |
| `format` | string | `"auto"` | आउटपुट प्रारूप ओवरराइड |
| `quality` | number | `95` | आउटपुट गुणवत्ता (1-100) |
## OCR / टेक्स्ट निष्कर्षण {#ocr-text-extraction}
**टूल रूट:** `ocr`
**मॉडल:** Tesseract (`fast`); RapidOCR PP-OCRv6 छोटे मॉडल (`balanced`) के साथ; कैलिब्रेटेड वैरिएंट स्कोरिंग के साथ PP-OCRv6 मध्यम मॉडल (`best`)
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `quality` | `"fast"` \| `"balanced"` \| `"best"` | गतिशील | जब `quality` और `engine` नहीं दिए जाते, SnapOtter इस क्रम में सर्वोत्तम उपलब्ध टियर चुनता है: `best`, `balanced`, `fast`। कोरियाई के लिए `fast` कभी नहीं चुना जाता; `best`, फिर `balanced` उपयोग होता है, अन्यथा सटीक रनटाइम का इंस्टॉलेशन या संगतता त्रुटि लौटती है। |
| `language` | string | `"auto"` | भाषा: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
| `enhance` | बूलियन | स्तर पर निर्भर | स्थानीय कंट्रास्ट में सुधार करें. फास्ट इसे सीधे लागू करता है; सटीक स्तर केवल तभी भिन्न होते हैं जब कैलिब्रेटेड स्कोरिंग OCR में सुधार करती है। सर्वश्रेष्ठ के लिए डिफ़ॉल्ट चालू |
| `engine` | डोरी | - | अस्वीकृत अनुकूलता उपनाम. `tesseract` को `fast` और पुराने `paddleocr` मान को `balanced` में मैप करें; यह PaddlePaddle लोड नहीं करता है |
निकाले गए पाठ और उद्गम मेटाडेटा को लौटाता है: इंजन, अनुरोधित और वास्तविक गुणवत्ता, उपकरण, प्रदाता, गिरावट की स्थिति, चेतावनियां, और लागू होने पर सटीक-रनटाइम/मॉडल संस्करण। स्पष्ट गुणवत्ता अनुरोध कभी भी दूसरे स्तर पर नहीं आते। यदि `balanced` या `best` अनुपलब्ध है, तो API चुपचाप `fast` चलाने के बजाय `FEATURE_NOT_INSTALLED` या `FEATURE_INCOMPATIBLE` लौटाता है।
## PDF OCR {#pdf-ocr}
**टूल रूट:** `ocr-pdf`
**मॉडल:** इमेज OCR जैसी ही स्तर प्रणाली
AI-संचालित OCR का उपयोग करके स्कैन किए गए PDF दस्तावेज़ों से पृष्ठ दर पृष्ठ टेक्स्ट निकालता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `quality` | `"fast"` \| `"balanced"` \| `"best"` | गतिशील | जब `quality` और `engine` नहीं दिए जाते, SnapOtter इस क्रम में सर्वोत्तम उपलब्ध टियर चुनता है: `best`, `balanced`, `fast`। कोरियाई के लिए `fast` कभी नहीं चुना जाता; `best`, फिर `balanced` उपयोग होता है, अन्यथा सटीक रनटाइम का इंस्टॉलेशन या संगतता त्रुटि लौटती है। |
| `language` | string | `"auto"` | भाषा: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
| `pages` | string | `"all"` | पृष्ठ चयन: `"all"`, `"1-3"`, `"1,3,5"` |
| `enhance` | बूलियन | स्तर पर निर्भर | स्थानीय कंट्रास्ट में सुधार करें. फास्ट इसे सीधे लागू करता है; सटीक स्तर केवल तभी भिन्न होते हैं जब कैलिब्रेटेड स्कोरिंग OCR में सुधार करती है। सर्वश्रेष्ठ के लिए डिफ़ॉल्ट चालू |
| `engine` | डोरी | - | अस्वीकृत अनुकूलता उपनाम. `tesseract` को `fast` और पुराने `paddleocr` मान को `balanced` में मैप करें; यह PaddlePaddle लोड नहीं करता है |
वही नो-डाउनग्रेड नियम PDF OCR पर लागू होता है। PDF पृष्ठों को पहचान से पहले रैस्टराइज़ किया जाता है, और एक अनुरोध अधिकतम 50 पृष्ठों का चयन कर सकता है।
## फेस / PII ब्लर {#face-pii-blur}
**टूल रूट:** `blur-faces`
**मॉडल:** MediaPipe फेस डिटेक्शन
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `blurRadius` | number (1-100) | `30` | गॉसियन ब्लर त्रिज्या |
| `sensitivity` | number (0-1) | `0.5` | डिटेक्शन कॉन्फ़िडेंस थ्रेशोल्ड |
## फेस एन्हांसमेंट {#face-enhancement}
**टूल रूट:** `enhance-faces`
**मॉडल:** GFPGAN, CodeFormer
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `model` | `"auto"` \| `"gfpgan"` \| `"codeformer"` | `"auto"` | एन्हांसमेंट मॉडल |
| `strength` | number (0-1) | `0.8` | एन्हांसमेंट शक्ति |
| `sensitivity` | number (0-1) | `0.5` | फेस डिटेक्शन थ्रेशोल्ड |
| `onlyCenterFace` | boolean | `false` | केवल सबसे केंद्रीय फेस को एन्हांस करें |
## AI कलराइज़ेशन {#ai-colorization}
**टूल रूट:** `colorize`
**मॉडल:** DDColor (OpenCV DNN फ़ॉलबैक के साथ)
ब्लैक-एंड-व्हाइट या ग्रेस्केल फोटो को पूर्ण रंग में बदलता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `intensity` | number (0-1) | `1.0` | रंग संतृप्ति शक्ति |
| `model` | `"auto"` \| `"ddcolor"` \| `"opencv"` | `"auto"` | मॉडल वेरिएंट |
## नॉइज़ हटाना {#noise-removal}
**टूल रूट:** `noise-removal`
**मॉडल:** SCUNet (स्तरीय डीनॉइज़िंग पाइपलाइन)
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `tier` | `"quick"` \| `"balanced"` \| `"quality"` \| `"maximum"` | `"balanced"` | प्रसंस्करण स्तर |
| `strength` | number (0-100) | `50` | डीनॉइज़िंग शक्ति |
| `detailPreservation` | number (0-100) | `50` | कितना विवरण संरक्षित करना है; अधिक होने पर अधिक टेक्सचर बना रहता है |
| `colorNoise` | number (0-100) | `30` | कलर नॉइज़ कमी शक्ति |
| `format` | string | `"original"` | आउटपुट प्रारूप: `original`, `png`, `jpeg`, `webp`, `avif`, `jxl` |
| `quality` | number (1-100) | `90` | आउटपुट एन्कोडिंग गुणवत्ता |
## रेड आई हटाना {#red-eye-removal}
**टूल रूट:** `red-eye-removal`
फेस लैंडमार्क का पता लगाता है, आँख क्षेत्रों को खोजता है, और रेड-चैनल ओवरसैचुरेशन को ठीक करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `sensitivity` | number (0-100) | `50` | रेड पिक्सेल डिटेक्शन थ्रेशोल्ड |
| `strength` | number (0-100) | `70` | सुधार शक्ति |
| `format` | string | - | आउटपुट प्रारूप ओवरराइड (वैकल्पिक) |
| `quality` | number (1-100) | `90` | आउटपुट गुणवत्ता |
## फोटो रिस्टोरेशन {#photo-restoration}
**टूल रूट:** `restore-photo`
पुरानी या क्षतिग्रस्त फोटो के लिए बहु-चरण पाइपलाइन: स्क्रैच/फटने का पता लगाना और मरम्मत, फेस एन्हांसमेंट, डीनॉइज़िंग, और वैकल्पिक कलराइज़ेशन।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `scratchRemoval` | boolean | `true` | स्क्रैच, फटने का पता लगाएँ और मरम्मत करें |
| `faceEnhancement` | boolean | `true` | फेस एन्हांसमेंट पास लागू करें |
| `fidelity` | number (0-1) | `0.7` | फेस एन्हांसमेंट शक्ति (अधिक = अधिक संरक्षी) |
| `denoise` | boolean | `true` | डीनॉइज़िंग पास लागू करें |
| `denoiseStrength` | number (0-100) | `25` | डीनॉइज़िंग शक्ति |
| `colorize` | boolean | `false` | रिस्टोरेशन के बाद कलराइज़ करें |
| `colorizeStrength` | number (0-100) | `85` | कलराइज़ेशन तीव्रता |
## पासपोर्ट फोटो {#passport-photo}
**टूल रूट:** `passport-photo`
**मॉडल:** MediaPipe फेस लैंडमार्क + BiRefNet बैकग्राउंड हटाना
दो-चरण वर्कफ़्लो: विश्लेषण (फेस का पता लगाना + बैकग्राउंड हटाना) फिर जनरेट (क्रॉप, आकार बदलना, टाइल)। 6 क्षेत्रों में 37+ देशों का समर्थन करता है।
### चरण 1: विश्लेषण {#phase-1-analyze}
`POST /api/v1/tools/image/passport-photo/analyze`
एक इमेज फ़ाइल (multipart) स्वीकार करता है। फेस लैंडमार्क डेटा, एक base64 प्रीव्यू, और इमेज आयाम लौटाता है।
### चरण 2: जनरेट {#phase-2-generate}
`POST /api/v1/tools/image/passport-photo/generate`
चरण 1 के परिणामों के साथ-साथ जनरेशन सेटिंग्स वाला एक JSON बॉडी स्वीकार करता है:
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `jobId` | string | (आवश्यक) | चरण 1 से Job ID |
| `filename` | string | (आवश्यक) | चरण 1 से मूल फ़ाइल नाम |
| `countryCode` | string | (आवश्यक) | ISO देश कोड (जैसे, `US`, `GB`, `IN`) |
| `documentType` | string | `"passport"` | दस्तावेज़ प्रकार |
| `bgColor` | string | `"#FFFFFF"` | बैकग्राउंड रंग hex |
| `printLayout` | string | `"none"` | प्रिंट लेआउट: `none`, `4x6`, `a4`, `letter` |
| `maxFileSizeKb` | number | `0` | KB में अधिकतम फ़ाइल आकार (0 = कोई सीमा नहीं) |
| `dpi` | number (72-1200) | `300` | आउटपुट DPI |
| `customWidthMm` | number | - | mm में कस्टम चौड़ाई (देश स्पेक को ओवरराइड करती है) |
| `customHeightMm` | number | - | mm में कस्टम ऊँचाई (देश स्पेक को ओवरराइड करती है) |
| `zoom` | number (0.5-3) | `1` | ज़ूम कारक |
| `adjustX` | number | `0` | क्षैतिज स्थिति समायोजन |
| `adjustY` | number | `0` | ऊर्ध्वाधर स्थिति समायोजन |
| `landmarks` | object | (आवश्यक) | चरण 1 से लैंडमार्क |
| `imageWidth` | number | (आवश्यक) | चरण 1 से इमेज चौड़ाई |
| `imageHeight` | number | (आवश्यक) | चरण 1 से इमेज ऊँचाई |
## ऑब्जेक्ट मिटाना (इनपेंटिंग) {#object-erasing-inpainting}
**टूल रूट:** `erase-object`
**मॉडल:** ONNX Runtime के माध्यम से LaMa
मास्क को एक **दूसरे फ़ाइल भाग** (fieldname `mask`) के रूप में भेजा जाता है, base64 के रूप में नहीं। मास्क में सफेद पिक्सेल मिटाने वाले क्षेत्रों को इंगित करते हैं। `format` और `quality` सेटिंग्स शीर्ष-स्तरीय फ़ॉर्म फ़ील्ड के रूप में भेजी जाती हैं।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `file` | file | (आवश्यक) | स्रोत इमेज (multipart) |
| `mask` | file | (आवश्यक) | मास्क इमेज (multipart, fieldname `mask`, सफेद = मिटाएँ) |
| `format` | string | `"auto"` | आउटपुट प्रारूप: `auto`, `png`, `jpg`, `jpeg`, `webp`, `tiff`, `gif`, `avif`, `heic`, `heif`, `jxl` |
| `quality` | integer (1-100) | `95` | आउटपुट गुणवत्ता |
NVIDIA GPU उपलब्ध होने पर CUDA-त्वरित।
## AI कैनवास विस्तार {#ai-canvas-expand}
**टूल रूट:** `ai-canvas-expand`
**मॉडल:** LaMa-आधारित आउटपेंटिंग
किसी इमेज के कैनवास को किसी भी दिशा में विस्तारित करता है और नए क्षेत्रों को AI-जनित सामग्री से भरता है जो मौजूदा इमेज से मेल खाती है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `extendTop` | integer | `0` | शीर्ष पर विस्तारित करने के लिए पिक्सेल |
| `extendRight` | integer | `0` | दाईं ओर विस्तारित करने के लिए पिक्सेल |
| `extendBottom` | integer | `0` | नीचे विस्तारित करने के लिए पिक्सेल |
| `extendLeft` | integer | `0` | बाईं ओर विस्तारित करने के लिए पिक्सेल |
| `tier` | `"fast"` \| `"balanced"` \| `"high"` | `"balanced"` | गुणवत्ता स्तर |
| `format` | string | `"auto"` | आउटपुट प्रारूप: `auto`, `png`, `jpg`, `jpeg`, `webp`, `tiff`, `gif`, `avif`, `heic`, `heif`, `jxl` |
| `quality` | integer (1-100) | `95` | आउटपुट गुणवत्ता |
कम से कम एक विस्तार दिशा 0 से अधिक होनी चाहिए।
## स्मार्ट क्रॉप {#smart-crop}
**टूल रूट:** `smart-crop`
**मॉडल:** MediaPipe फेस डिटेक्शन (केवल फेस मोड)
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `mode` | string | `"subject"` | क्रॉप रणनीति: `subject`, `face`, `trim` |
| `strategy` | `"attention"` \| `"entropy"` | `"attention"` | विषय मोड के लिए रणनीति |
| `width` | integer | - | आउटपुट चौड़ाई |
| `height` | integer | - | आउटपुट ऊँचाई |
| `padding` | integer (0-50) | `0` | विषय के चारों ओर पैडिंग प्रतिशत |
| `facePreset` | string | `"head-shoulders"` | `mode=face` होने पर प्रीसेट फ्रेमिंग |
| `sensitivity` | number (0-1) | `0.5` | फेस डिटेक्शन थ्रेशोल्ड |
| `threshold` | integer (0-255) | `30` | बैकग्राउंड डिटेक्शन थ्रेशोल्ड (ट्रिम मोड) |
| `padToSquare` | boolean | `false` | ट्रिम किए गए परिणाम को वर्ग में पैड करें |
| `padColor` | string | `"#ffffff"` | वर्ग पैडिंग के लिए बैकग्राउंड रंग |
| `targetSize` | integer | - | पैड किए गए आउटपुट के लिए लक्ष्य आकार (पिक्सेल) |
| `quality` | integer (1-100) | - | आउटपुट गुणवत्ता |
लेगेसी `mode` मान `attention` और `content` स्वीकार किए जाते हैं और क्रमशः `subject` और `trim` पर मैप किए जाते हैं।
**फेस प्रीसेट:**
| प्रीसेट | किसके लिए सर्वश्रेष्ठ |
|--------|---------|
| `closeup` | हेडशॉट |
| `head-shoulders` | प्रोफ़ाइल फोटो |
| `upper-body` | LinkedIn / औपचारिक |
| `half-body` | पूरा ऊपरी शरीर |
## ऑडियो ट्रांसक्राइब {#transcribe-audio}
**टूल रूट:** `transcribe-audio`
**मॉडल:** faster-whisper
स्पीच को टेक्स्ट में बदलता है। सादा टेक्स्ट, SRT, और VTT आउटपुट प्रारूपों का समर्थन करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `language` | string | `"auto"` | भाषा: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
| `outputFormat` | `"txt"` \| `"srt"` \| `"vtt"` | `"txt"` | आउटपुट प्रारूप |
## ऑटो सबटाइटल {#auto-subtitles}
**टूल रूट:** `auto-subtitles`
**मॉडल:** faster-whisper (वीडियो से ऑडियो निकालता है, फिर ट्रांसक्राइब करता है)
किसी वीडियो के ऑडियो ट्रैक से सबटाइटल फ़ाइलें जनरेट करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `language` | string | `"auto"` | भाषा: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
| `format` | `"srt"` \| `"vtt"` | `"srt"` | आउटपुट सबटाइटल प्रारूप |
## PNG ट्रांसपेरेंसी फिक्सर {#png-transparency-fixer}
**टूल रूट:** `transparency-fixer`
**मॉडल:** BiRefNet HR-मैटिंग (2048x2048 रिज़ॉल्यूशन)
"नकली पारदर्शी" PNG को ठीक करता है जहाँ बैकग्राउंड हटा दिया गया था लेकिन फ्रिंजिंग, हेलो, या अर्ध-पारदर्शी आर्टिफैक्ट पीछे छूट गए। साफ अल्फा चैनल उत्पन्न करने के लिए BiRefNet के उच्च-रिज़ॉल्यूशन मैटिंग मॉडल का उपयोग करता है, फिर किनारों के साथ रंग संदूषण हटाने के लिए कॉन्फ़िगर करने योग्य डिफ्रिंज प्रसंस्करण लागू करता है।
**OOM फ़ॉलबैक शृंखला:** यदि BiRefNet HR-मैटिंग उपलब्ध मेमोरी से अधिक हो जाती है, तो टूल स्वतः `birefnet-general` पर, फिर `u2net` पर फ़ॉलबैक करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `defringe` | number (0-100) | `30` | रंग संदूषण हटाने के लिए एज डिफ्रिंज शक्ति |
| `outputFormat` | `"png"` \| `"webp"` | `"png"` | आउटपुट इमेज प्रारूप |
| `removeWatermark` | boolean | `false` | वॉटरमार्क हटाने की पूर्व-प्रसंस्करण लागू करें (median filter) |
```bash
curl -X POST http://localhost:1349/api/v1/tools/image/transparency-fixer \
-H "Authorization: Bearer <token>" \
-F "file=@fake-transparent.png" \
-F 'settings={"defringe":30,"outputFormat":"png"}'
```
---
## वैकल्पिक AI क्षमताओं वाले टूल {#tools-with-optional-ai-capabilities}
निम्नलिखित टूल Python साइडकार टूल नहीं हैं लेकिन कुछ विकल्प सक्षम होने पर AI फ़ीचर का उपयोग करते हैं।
### इमेज एन्हांसमेंट {#image-enhancement}
**टूल रूट:** `image-enhancement`
**इंजन:** विश्लेषण-आधारित (Sharp हिस्टोग्राम और सांख्यिकी)
इमेज का विश्लेषण करता है और एक्सपोज़र, कंट्रास्ट, व्हाइट बैलेंस, सैचुरेशन, शार्पनेस, और नॉइज़ के लिए स्वचालित सुधार लागू करता है। दृश्य-विशिष्ट मोड का समर्थन करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `mode` | `"auto"` \| `"portrait"` \| `"landscape"` \| `"low-light"` \| `"food"` \| `"document"` | `"auto"` | सुधारों को ट्यून करने के लिए दृश्य मोड |
| `intensity` | number (0-100) | `50` | कुल सुधार शक्ति |
| `corrections.exposure` | boolean | `true` | एक्सपोज़र सुधार लागू करें |
| `corrections.contrast` | boolean | `true` | कंट्रास्ट सुधार लागू करें |
| `corrections.whiteBalance` | boolean | `true` | व्हाइट बैलेंस सुधार लागू करें |
| `corrections.saturation` | boolean | `true` | सैचुरेशन सुधार लागू करें |
| `corrections.sharpness` | boolean | `true` | शार्पनेस सुधार लागू करें |
| `corrections.denoise` | boolean | `true` | डीनॉइज़िंग लागू करें |
| `deepEnhance` | boolean | `false` | SCUNet के माध्यम से AI नॉइज़ हटाना सक्षम करें (`upscale-enhance` बंडल की आवश्यकता है) |
एक अतिरिक्त विश्लेषण एंडपॉइंट `POST /api/v1/tools/image/image-enhancement/analyze` पर उपलब्ध है जो पहचाने गए सुधार लागू किए बिना लौटाता है।
### सामग्री-जागरूक आकार बदलना (सीम कार्विंग) {#content-aware-resize-seam-carving}
**टूल रूट:** `content-aware-resize`
**इंजन:** Go `caire` बाइनरी (Python नहीं; कोई GPU लाभ नहीं)
कम-ऊर्जा सीम हटाकर इमेज का बुद्धिमानी से आकार बदलता है, महत्वपूर्ण सामग्री को संरक्षित करता है।
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|-----------|------|---------|-------------|
| `width` | number | - | लक्ष्य चौड़ाई |
| `height` | number | - | लक्ष्य ऊँचाई |
| `protectFaces` | boolean | `false` | पहचाने गए फेस क्षेत्रों की रक्षा करें (`face-detection` बंडल की आवश्यकता है) |
| `blurRadius` | number (0-20) | `4` | ऊर्जा गणना के लिए पूर्व-ब्लर |
| `sobelThreshold` | number (1-20) | `2` | एज संवेदनशीलता थ्रेशोल्ड |
| `square` | boolean | `false` | वर्गाकार आउटपुट बाध्य करें |