छवि NSFW पहचान
Discuse इमेज मॉडरेशन, उपयोगकर्ताओं द्वारा सबमिट की गई छवियों को स्पष्ट सामग्री के लिए स्कोर करता है। check_images सक्षम करके छवि URLs को POST https://api.discuse.com/api/v2/check पर भेजें, और API results.images ऑब्जेक्ट के अनुसार porn, sexual, और neutral संभावनाएँ, साथ ही एक hit फ़्लैग लौटाता है।
NSFW पहचान कैसे काम करती है?
Discuse का कंप्यूटर-विज़न मॉडल हर छवि के लिए तीन संभावनाएँ लौटाता है, जिनका योग 1.0 की ओर होता है:
porn: छवि के पोर्नोग्राफ़िक होने की संभावना।sexual: छवि के यौन रूप से संकेतात्मक होने की संभावना।neutral: छवि के सुरक्षित होने की संभावना।
hit फ़्लैग बताता है कि छवि ने आपके प्रोजेक्ट की NSFW थ्रेशहोल्ड पार कर ली है। कच्चे स्कोर का उपयोग करके स्पष्ट रूप से अश्लील छवि (ऑटो-ब्लॉक) को सीमा-रेखा वाली छवि (मानवीय समीक्षा) से अलग करें।
मैं किसी छवि की जाँच कैसे करूँ?
एक या अधिक छवि URLs सबमिट करें और check_images के साथ इमेज चेक सक्षम करें:
curl -X POST https://api.discuse.com/api/v2/check \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"content": {
"image_urls": ["https://example.com/user-upload.jpg"]
},
"settings": {
"check_images": true
}
}'
एक अनुरोध में अधिकतम 10 छवि URLs स्वीकार किए जाते हैं।
प्रतिक्रिया प्रारूप
{
"has_violations": true,
"cached": false,
"message": "NSFW content detected",
"results": {
"hits": true,
"images": {
"status": "ok",
"porn": 0.95,
"sexual": 0.85,
"neutral": 0.02,
"hit": true
}
},
"usage": {
"api_requests_used": 12,
"api_requests_limit": 2000,
"api_requests_remaining": 1988
}
}
छवि परिणाम results.images के अंतर्गत होता है। processing_time_ms केवल तब मौजूद होता है जब आपके प्रोजेक्ट सेटिंग्स में टाइमिंग सक्षम हो।
कई छवियों की जाँच करना
{
"content": {
"image_urls": [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg",
"https://example.com/image3.jpg"
]
},
"settings": {
"check_images": true
}
}
स्कैन की गई हर छवि आपके इमेज-स्कैन कोटा में अलग से गिनी जाती है।
मैं स्कोर को कैसे समझूँ?
porn, sexual, और neutral 0.0 से 1.0 तक की संभावनाएँ हैं। किसी स्पष्ट छवि के लिए, porn उच्च और neutral कम होता है; सुरक्षित छवि के लिए, neutral प्रमुख होता है।
function interpretImageResult(result) {
const img = result.results.images;
if (img.porn > 0.8) {
return 'block'; // automatically reject
} else if (img.porn > 0.5 || img.sexual > 0.7) {
return 'review'; // queue for human review
} else if (img.sexual > 0.5) {
return 'warn'; // allow with a content-warning label
} else {
return 'allow';
}
}
आप hit फ़्लैग के आधार पर भी गेट लगा सकते हैं, जो पहले से ही आपके प्रोजेक्ट की threshold_images_porn और threshold_images_sexual सेटिंग्स लागू करता है।
उपयोग के मामले
सोशल प्लेटफ़ॉर्म
प्रोफ़ाइल तस्वीरों और पोस्ट छवियों को लाइव होने से पहले स्क्रीन करें:
async function handleImageUpload(imageUrl) {
const result = await checkImage(imageUrl);
const img = result.results.images;
if (img.porn > 0.7) {
throw new Error('This image violates our community guidelines');
}
if (img.sexual > 0.7) {
return { url: imageUrl, hasContentWarning: true };
}
return { url: imageUrl, hasContentWarning: false };
}
मार्केटप्लेस
उत्पाद छवियों के लिए अधिक सख्त कटऑफ़ लागू करें:
def validate_product_image(image_url):
result = check_image(image_url)
img = result['results']['images']
if img['porn'] > 0.3 or img['sexual'] > 0.3:
return {'approved': False, 'reason': 'Image contains inappropriate content'}
return {'approved': True}
सर्वोत्तम अभ्यास
स्थायी स्टोरेज से पहले स्कैन करें
async function processUpload(file) {
const tempUrl = await uploadToTemp(file);
const result = await checkImage(tempUrl);
if (result.has_violations) {
await deleteTempFile(tempUrl);
throw new Error('Image rejected');
}
return await moveToPermanent(tempUrl);
}
टेक्स्ट मॉडरेशन के साथ मिलाएँ
एक ही अनुरोध में छवि और उसके कैप्शन को साथ में स्कैन किया जा सकता है:
{
"content": {
"text": "Check out this photo from my vacation!",
"image_urls": ["https://example.com/vacation.jpg"]
},
"settings": {
"check_sentiment": true,
"check_spam": true,
"check_images": true
}
}
कैश किए गए परिणामों का उपयोग करें
कैश की गई प्रतिक्रियाएँ आपके कोटा में नहीं गिनी जातीं, इसलिए पहले से स्कैन की गई छवि को दोबारा दिखाना या फिर से वैलिडेट करना मुफ़्त है। प्रतिक्रिया में cached फ़्लैग आपको बताता है कि परिणाम कब कैश से आया था।
उपयोग सीमाएँ
| प्लान | मासिक इमेज स्कैन | अतिरिक्त उपयोग दर |
|---|---|---|
| Basic | 500 | उपलब्ध नहीं |
| Gold | 2,000 | $0.00075/scan |
| Platinum | 5,000 | $0.00064/scan (15% छूट) |
| Ultimate | 10,000 | $0.00056/scan (25% छूट) |
इंटीग्रेशन उदाहरण
Node.js
const checkImage = async (imageUrl) => {
const response = await fetch('https://api.discuse.com/api/v2/check', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.DISCUSE_API_KEY
},
body: JSON.stringify({
content: { image_urls: [imageUrl] },
settings: { check_images: true }
})
});
return response.json();
};
Python
import os
import requests
def check_image(image_url):
response = requests.post(
'https://api.discuse.com/api/v2/check',
headers={
'Content-Type': 'application/json',
'X-API-Key': os.environ['DISCUSE_API_KEY']
},
json={
'content': {'image_urls': [image_url]},
'settings': {'check_images': True}
}
)
return response.json()
अगले चरण
- टेक्स्ट विश्लेषण - उसी अनुरोध में सेंटिमेंट और स्पैम स्कोरिंग जोड़ें
- भाषा पहचान - सामग्री की भाषा पहचानें और लागू करें
- फ़ाइल एंटीवायरस स्कैनिंग - मैलवेयर के लिए दस्तावेज़ स्कैन करें