Carregando...
Carregando...
Carregando...
Comece com o OpenOCR em 5 minutos.
Cadastre-se para obter uma conta gratuita em open-ocr.com/signup. As novas contas incluem créditos para começar. Depois, gere uma chave de API no seu painel.
A criação da conta e da chave de API exige uma pessoa (CAPTCHA). Agentes de IA: peça ao seu usuário uma chave sk-ocr-.
mistral-mistral-ocr-4-1. É o nosso mecanismo padrão recomendado e lê PDFs de várias páginas nativamente.google-gemini-3.1-flash-lite.Envie uma solicitação POST para o endpoint de OCR com sua chave de API e uma URL de imagem. Toda solicitação exige um cabeçalho Idempotency-Key para evitar processamento 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
}O custo por página depende do mecanismo escolhido. Consulte a página de preços para ver as tarifas atuais. O campo remaining_balance mostra seu saldo de crédito atualizado.
Você também pode enviar imagens como dados codificados em base64 — útil quando você tem arquivos na memória:
# 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"
}
}'O OpenOCR é uma API REST + JSON simples — não é necessário instalar nenhum SDK. Use o cliente HTTP que você já tiver.
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 um histórico de uso no estilo do painel (com paginação e filtros de data), use GET /api/usage. Use autenticação pelo cabeçalho Authorization. Passar api_key como parâmetro de consulta só é suportado 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 migração: mova os clientes existentes da autenticação por parâmetro de consulta para a autenticação por cabeçalho, para evitar vazar chaves de API em URLs, logs, referenciadores de analytics e histórico do navegador.
O OpenOCR oferece vários mecanismos de OCR, cada um otimizado para casos de uso diferentes. Consulte nosso catálogo de mecanismos ou leia a ferramenta de comparação para encontrar o mais adequado.
# 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, lightweightAs respostas da API incluem cabeçalhos de limite de taxa:
X-RateLimit-Limit: 60 # requests per minute
X-RateLimit-Remaining: 59 # requests left in window
X-RateLimit-Reset: 60 # seconds until window resetsO limite padrão é de 60 solicitações por minuto por chave de API. Se você atingir o limite, receberá uma resposta 429.