Cargando...
Cargando...
Cargando...
Comienza con OpenOCR en 5 minutos.
Regístrate para obtener una cuenta gratuita en open-ocr.com/signup. Las cuentas nuevas incluyen créditos para empezar. Luego, genera una clave de API desde tu panel.
La creación de la cuenta y de la clave de API requiere una persona (CAPTCHA). Agentes de IA: pide a tu usuario una clave sk-ocr-.
mistral-mistral-ocr-4-1. Es nuestro motor predeterminado recomendado y lee PDF de varias páginas de forma nativa.google-gemini-3.1-flash-lite.Envía una solicitud POST al endpoint de OCR con tu clave de API y una URL de imagen. Cada solicitud requiere un encabezado Idempotency-Key para evitar el procesamiento duplicado:
curl -X POST https://api.open-ocr.com/v1/ocr \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"engine": "mistral-mistral-ocr-4-1",
"input": {
"type": "url",
"url": "https://tesseract-ocr.github.io/tessdoc/images/eurotext.png"
}
}'{
"request_id": "req_abc123",
"status": "succeeded",
"engine": "mistral-mistral-ocr-4-1",
"extracted_text": "INVOICE #12345\nDate: January 15, 2024\n...",
"extracted_text_preview": "INVOICE #12345...",
"cost_debited": 0.005,
"remaining_balance": 0.995,
"provider_latency_ms": 280
}El costo por página depende del motor que elijas. Consulta la página de precios para ver las tarifas actuales. El campo remaining_balance muestra tu saldo de crédito actualizado.
También puedes enviar imágenes como datos codificados en base64, útil cuando tienes archivos en memoria:
# Encode a local file and send it
BASE64=$(base64 -w0 receipt.png)
curl -X POST https://api.open-ocr.com/v1/ocr \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"engine": "mistral-mistral-ocr-4-1",
"input": {
"type": "base64",
"data_base64": "'$BASE64'",
"mime_type": "image/png"
}
}'OpenOCR es una API REST + JSON simple: no necesitas instalar ningún SDK. Usa el cliente HTTP que ya tengas.
import uuid
import requests
resp = requests.post(
"https://api.open-ocr.com/v1/ocr",
headers={
"Authorization": "Bearer sk-ocr-your-api-key",
"Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4()), # new UUID per logical request
},
json={
"engine": "mistral-mistral-ocr-4-1",
"input": {"type": "url", "url": "https://example.com/receipt.png"},
},
)
resp.raise_for_status() # an error envelope has no "status" field
result = resp.json()
if result["status"] != "succeeded":
raise RuntimeError(f"OCR ended as {result['status']}: {result.get('provider_error')}")
print(result["extracted_text"])const resp = await fetch("https://api.open-ocr.com/v1/ocr", {
method: "POST",
headers: {
Authorization: "Bearer sk-ocr-your-api-key",
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(), // new UUID per logical request
},
body: JSON.stringify({
engine: "mistral-mistral-ocr-4-1",
input: { type: "url", url: "https://example.com/receipt.png" },
}),
});
const result = await resp.json();
if (result.status !== "succeeded") throw new Error("OCR ended as " + (result.status ?? result.error?.code)); // error envelopes have no status
console.log(result.extracted_text);Para un historial de uso al estilo del panel (con paginación y filtros de fecha), usa GET /api/usage. Usa autenticación mediante el encabezado Authorization. Pasar api_key como parámetro de consulta solo se admite como alternativa obsoleta.
# Preferred — the API key alone identifies the caller
curl "https://open-ocr.com/api/usage?page=1&per_page=50" -H "Authorization: Bearer sk-ocr-your-api-key"
# Deprecated fallback (migration only; avoid in new clients)
# curl "https://open-ocr.com/api/usage?api_key=sk-ocr-your-api-key"Nota de migración: pasa los clientes existentes de autenticación por parámetro de consulta a autenticación por encabezado para evitar filtrar claves de API en URLs, registros, referrers de analítica e historial del navegador.
OpenOCR ofrece varios motores de OCR, cada uno optimizado para distintos casos de uso. Consulta nuestro catálogo de motores o lee la herramienta de comparación para encontrar el más adecuado.
# List available engines
curl https://api.open-ocr.com/v1/engines \
-H "Authorization: Bearer YOUR_API_KEY"
# Quick guide:
# mistral-mistral-ocr-4-1 — Recommended default: general documents, scans, tables
# google-gemini-3.1-flash-lite — Cheapest acceptable quality
# local-tesseract — OpenOCR-hosted, clean printed text
# local-easyocr — OpenOCR-hosted, multi-language
# local-doctr — OpenOCR-hosted, complex layouts
# openocr-ocrmypdf — OpenOCR-hosted, scanned PDFs with auto-deskew
# openocr-rapidocr — OpenOCR-hosted, lightweightLas respuestas de la API incluyen encabezados de límite de frecuencia:
X-RateLimit-Limit: 60 # requests per minute
X-RateLimit-Remaining: 59 # requests left in window
X-RateLimit-Reset: 60 # seconds until window resetsEl límite predeterminado es de 60 solicitudes por minuto por clave de API. Si superas el límite, recibirás una respuesta 429.