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

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

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

استخراج متن با OCR

Discuse متن را از تصاویر و اسناد بیرون می‌کشد تا بتوانید محتوایی را که در حالت عادی برای فیلتر متنی نامرئی است بخوانید — و مدیریت کنید. تا ۵ URL تصویر یا سند را به POST /api/v2/ocr بفرستید و متن شناسایی‌شده را دریافت کنید؛ به‌صورت پیش‌فرض، همان متن از بررسی‌های محتوایی پروژه‌تان هم عبور داده می‌شود.

چرا OCR برای مدیریت محتوا؟

بخش زیادی از سوءاستفاده‌ها داخل تصاویر پنهان می‌شوند: توهینی که در یک میم جاگذاری شده، لینک فیشینگ در اسکرین‌شات، یا شماره تلفن کلاهبرداری روی یک تراکت. بررسی متن ساده هیچ‌کدام از این‌ها را نمی‌بیند. OCR ابتدا کلمات را استخراج می‌کند، بنابراین همان بررسی‌های احساسات، هرزنامه، کلمات نامناسب و زبان که همین حالا روی متن اجرا می‌کنید، روی محتوای تصویر و سند هم اعمال می‌شوند.

چگونه متن را استخراج کنم؟

یک یا چند URL فایل ارسال کنید. مقدار پیش‌فرض moderate برابر true است، بنابراین متن استخراج‌شده نیز بررسی می‌شود و یک شیء results برمی‌گردد؛ اگر فقط متن خام را می‌خواهید، آن را روی false بگذارید.

curl -X POST https://api.discuse.com/api/v2/ocr \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "file_urls": ["https://example.com/user-meme.jpg"],
    "moderate": true
  }'

هر درخواست می‌تواند تا ۵ URL تصویر یا سند را بپذیرد.

پاسخ

{
  "text": "BUY FOLLOWERS NOW — dm @spammer for 50% off",
  "has_text": true,
  "num_files": 1,
  "has_violations": true,
  "results": {
    "hits": true,
    "spamfinder": {
      "label": "spam",
      "confidence": 0.94,
      "is_spam": true,
      "hit": true
    }
  },
  "usage": {
    "api_requests_used": 412,
    "api_requests_limit": 10000,
    "api_requests_remaining": 9588
  }
}

وقتی moderate برابر false باشد (یا هیچ متنی پیدا نشود)، results حذف می‌شود و has_violations برابر false است — فقط text استخراج‌شده را دریافت می‌کنید.

فیلدهای درخواست

فیلد نوع نکات
api_key string در بدنه اختیاری است؛ می‌توانید به‌جای آن X-API-Key را بفرستید
file_urls string[] URLهای تصویر یا سند برای خواندن. حداقل یکی لازم است، حداکثر ۵ مورد
moderate boolean متن استخراج‌شده را از بررسی‌های متنی شما عبور می‌دهد. مقدار پیش‌فرض true است

فیلدهای پاسخ

فیلد نوع توضیح
text string متن شناسایی‌شده، به‌صورت تجمیع‌شده از همه فایل‌ها
has_text boolean اگر هر متن غیرخالی شناسایی شده باشد، True است
num_files number تعداد فایل‌هایی که با موفقیت خوانده شده‌اند
has_violations boolean اگر متن مدیریت‌شده یکی از بررسی‌ها را فعال کرده باشد، True است
results object نتایج بررسی متن (به تحلیل متن مراجعه کنید)، فقط زمانی حاضر است که مدیریت اجرا شده و متن پیدا شده باشد
usage object api_requests_used, api_requests_limit, api_requests_remaining

شیء results همان ساختار POST /api/v2/check را دارد — spamfinder، sentiment، language، badwords و پرچم سطح بالای hits. برای جزئیات فیلدها، تحلیل متن را ببینید.

محدودیت‌های استفاده

OCR قابلیتی مخصوص پلن‌های پولی است؛ هر فایلی که استخراج می‌کنید یک بار از سهمیه OCR شما کم می‌کند.

پلن استخراج‌های ماهانه OCR نرخ مصرف مازاد
Basic در دسترس نیست -
Gold 1,000 $0.0015/extraction
Platinum 2,000 $0.001275/extraction (15% discount)
Ultimate 4,000 $0.001125/extraction (25% discount)

اگر پروژه اشتراک فعال نداشته باشد، درخواست‌های OCR رد می‌شوند.

بهترین روش‌ها

مدیریت در یک فراخوانی

وقتی هدفتان شناسایی نقض سیاست‌ها در تصاویر است، moderate را روشن بگذارید (حالت پیش‌فرض). یک فراخوانی OCR هم متن را استخراج می‌کند و هم آن را بررسی می‌کند، به‌جای اینکه بعد از فراخوانی OCR یک فراخوانی جداگانه /check انجام دهید.

async function moderateImage(fileUrl) {
  const res = await ocr([fileUrl], true);
  if (res.has_violations) {
    await flagForReview(fileUrl, res.results);
  }
  return res.text;
}

پیش از اقدام، has_text را بررسی کنید

تصویری که متن خواندنی ندارد، has_text: false و یک text خالی برمی‌گرداند. بر اساس آن مسیر جداگانه‌ای در نظر بگیرید تا «چیزی برای خواندن وجود ندارد» را با «پاک و تأییدشده» اشتباه نگیرید.

فایل‌های مرتبط را دسته‌ای ارسال کنید

اگر یک ارسال شامل چند تصویر است، آن‌ها را با هم (تا ۵ مورد) در یک درخواست بفرستید، نه اینکه برای هر فایل یک فراخوانی جداگانه انجام دهید — رفت‌وبرگشت‌های کمتر، و یک پاسخ که در سهمیه محاسبه می‌شود.

نمونه‌های یکپارچه‌سازی

Node.js

async function ocr(fileUrls, moderate = true) {
  const response = await fetch('https://api.discuse.com/api/v2/ocr', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({ file_urls: fileUrls, moderate })
  });
  return response.json();
}

Python

import os
import requests

def ocr(file_urls, moderate=True):
    response = requests.post(
        'https://api.discuse.com/api/v2/ocr',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={'file_urls': file_urls, 'moderate': moderate}
    )
    return response.json()

آماده‌اید متن را از تصاویر بخوانید؟ شروع کار با Discuse.

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

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

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

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

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

تصاویر نامناسب و محتوای بزرگسالان را به‌طور خودکار تشخیص داده و فیلتر کنید

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

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