Skip to main content
مستندات
مرکز آموزش

مدیریت محتوا را با راهنماهای جامع، آموزش‌ها و مستندات API به‌خوبی یاد بگیرید

لینک‌های سریع

تشخیص تصاویر NSFW

Discuse برای تعدیل تصاویر، به تصاویر ارسالی کاربران از نظر محتوای صریح امتیاز می‌دهد. URL تصاویر را با فعال بودن check_images به POST https://api.discuse.com/api/v2/check ارسال کنید؛ API احتمال‌های porn، sexual و neutral را همراه با یک پرچم hit مطابق شیء results.images برمی‌گرداند.

تشخیص NSFW چگونه کار می‌کند؟

مدل بینایی کامپیوتری Discuse برای هر تصویر سه احتمال برمی‌گرداند که مجموع آن‌ها به 1.0 نزدیک می‌شود:

  • porn: احتمال پورنوگرافیک بودن تصویر.
  • sexual: احتمال داشتن محتوای جنسیِ القایی در تصویر.
  • neutral: احتمال ایمن بودن تصویر.

پرچم hit نشان می‌دهد که تصویر از آستانه‌های NSFW پروژه شما عبور کرده است. از امتیازهای خام استفاده کنید تا یک تصویر کاملاً صریح را از یک مورد مرزی جدا کنید؛ اولی را خودکار مسدود کنید و دومی را برای بازبینی انسانی بفرستید.

چگونه یک تصویر را بررسی کنم؟

یک یا چند URL تصویر را ارسال کنید و بررسی تصویر را با 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 URL تصویر را می‌پذیرد.

قالب پاسخ

{
  "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/اسکن
Platinum 5,000 $0.00064/اسکن (15% تخفیف)
Ultimate 10,000 $0.00056/اسکن (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()

گام‌های بعدی

نوشته تیم Discuse · آخرین به‌روزرسانی June 2026

مقاله‌های مرتبط

تحلیل متن و تشخیص احساسات

هرزنامه، محتوای سمی، الفاظ رکیک را تشخیص دهید و احساسات را در محتوای متنی تحلیل کنید

تشخیص هرزنامه

فیلتر کردن هرزنامه مبتنی بر AI برای متن و پیام‌ها

اسکن آنتی‌ویروس فایل

پلتفرم خود را در برابر بدافزار، ویروس‌ها و فایل‌های مخرب محافظت کنید