Skip to main content
Документация
Центр обучения

Освойте модерацию контента с подробными руководствами, обучающими материалами и документацией API

Быстрые ссылки

Извлечение текста с помощью OCR

Discuse извлекает текст из изображений и документов, чтобы вы могли читать — и модерировать — контент, который иначе был бы невидим для текстового фильтра. Отправьте до 5 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
  }'

Один запрос принимает до 5 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 изображений или документов для считывания. Требуется минимум один, максимум 5
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/извлечение
Platinum 2,000 $0.001275/извлечение (скидка 15%)
Ultimate 4,000 $0.001125/извлечение (скидка 25%)

Если у проекта нет активной подписки, запросы 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. Учитывайте это в логике, чтобы не трактовать «нечего читать» как «чисто и подтверждено».

Группируйте связанные файлы

Если отправка содержит несколько изображений, отправляйте их вместе (до 5) в одном запросе, а не по одному вызову на файл: меньше сетевых обращений и один ответ, учитываемый в квоте.

Примеры интеграции

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