Skip to main content
Documentación
CENTRO DE APRENDIZAJE

Domina la moderación de contenido con guías completas, tutoriales y documentación de API

Enlaces rápidos

Extracción de texto con OCR

Discuse extrae el texto de imágenes y documentos para que puedas leer —y moderar— contenido que, de otro modo, sería invisible para un filtro de texto. Envía hasta 5 URL de imágenes o documentos a POST /api/v2/ocr y recibirás el texto reconocido; además, de forma predeterminada, ese texto se procesa con las comprobaciones de contenido de tu proyecto.

¿Por qué usar OCR para moderación?

Muchos abusos se esconden dentro de imágenes: un insulto incrustado en un meme, un enlace de phishing en una captura de pantalla, un número de teléfono fraudulento en un folleto. Una comprobación de texto sin formato nunca los ve. OCR extrae primero las palabras, de modo que las mismas comprobaciones de sentimiento, spam, palabras prohibidas e idioma que ya aplicas al texto también se apliquen al contenido de imágenes y documentos.

¿Cómo extraigo texto?

Envía una o varias URL de archivos. moderate tiene como valor predeterminado true, así que el texto extraído también se comprueba y recibes un objeto results; configúralo como false si solo quieres el texto sin procesar.

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
  }'

Una sola solicitud acepta hasta 5 URL de imágenes o documentos.

Respuesta

{
  "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
  }
}

Cuando moderate es false (o no se encontró texto), results se omite y has_violations es false: solo recibes el text extraído.

Campos de la solicitud

Campo Tipo Notas
api_key string Opcional en el cuerpo; también puedes enviar X-API-Key
file_urls string[] URL de imágenes o documentos para leer. Se requiere al menos una, hasta 5
moderate boolean Procesa el texto extraído con tus comprobaciones de texto. El valor predeterminado es true

Campos de la respuesta

Campo Tipo Descripción
text string Texto reconocido, concatenado entre todos los archivos
has_text boolean True si se reconoció algún texto no vacío
num_files number Número de archivos leídos correctamente
has_violations boolean True si el texto moderado activó una comprobación
results object Los resultados de las comprobaciones de texto (consulta Análisis de texto), presentes solo cuando se ejecutó la moderación y se encontró texto
usage object api_requests_used, api_requests_limit, api_requests_remaining

El objeto results tiene la misma estructura que POST /api/v2/check: spamfinder, sentiment, language, badwords y el indicador de nivel superior hits. Consulta Análisis de texto para ver los detalles de los campos.

Límites de uso

OCR es una función de los planes de pago; cada archivo del que extraigas texto cuenta una vez contra tu cuota de OCR.

Plan Extracciones OCR mensuales Tarifa por exceso
Basic No disponible -
Gold 1,000 $0.0015/extraction
Platinum 2,000 $0.001275/extraction (15% discount)
Ultimate 4,000 $0.001125/extraction (25% discount)

Si un proyecto no tiene una suscripción activa, las solicitudes de OCR se rechazan.

Buenas prácticas

Modera en una sola llamada

Deja moderate activado (el valor predeterminado) cuando tu objetivo sea detectar infracciones de políticas en imágenes. Una sola llamada de OCR extrae el texto y lo comprueba, en lugar de hacer una llamada de OCR seguida de otra llamada independiente a /check.

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

Comprueba has_text antes de actuar

Una imagen sin texto legible devuelve has_text: false y un text vacío. Ramifica tu lógica en función de ello para no tratar “no hay nada que leer” como “limpio y confirmado”.

Agrupa archivos relacionados

Si un envío incluye varias imágenes, envíalas juntas (hasta 5) en una sola solicitud en lugar de hacer una llamada por archivo: menos idas y vueltas, y una sola respuesta contabilizada en la cuota.

Ejemplos de integración

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()

¿Listo para leer texto de imágenes? Empieza con Discuse.

Escrito por Equipo de Discuse · Última actualización June 2026

Artículos relacionados

Análisis de texto y detección de sentimiento

Detecta spam, toxicidad, lenguaje soez y analiza el sentimiento en contenido de texto

Detección de NSFW en imágenes

Detecta y filtra automáticamente imágenes inapropiadas y contenido para adultos

Detección de spam

Filtrado de spam con AI para texto y mensajes