Document AI
OCR e processamento inteligente de documentos brasileiros com GOT-OCR2.
Visão Geral
O endpoint POST /v1/ocr utiliza o modelo GOT-OCR2 para extrair texto e dados estruturados de documentos brasileiros. Otimizado para tipos documentais comuns no Brasil, como notas fiscais eletrônicas, boletos, petições judiciais, certidões e contratos.
Além do OCR puro, a Polar oferece um pipeline de Document Q&A que combina extração de texto com análise por IA.
Endpoints
| Endpoint | Descrição |
|---|---|
POST /v1/ocr | Extração de texto e dados de documentos |
POST /v1/pipelines/document-qa | Perguntas e respostas sobre documentos |
Documentos Suportados
| Tipo de Documento | Descrição | Campos Extraídos |
|---|---|---|
| NF-e | Nota Fiscal Eletrônica | CNPJ, valor, itens, impostos, data |
| Boleto | Boleto bancário | Código de barras, valor, vencimento, beneficiário |
| Petição | Petições judiciais | Partes, pedidos, fundamentação, número do processo |
| Certidão | Certidões públicas | Tipo, validade, dados do titular |
| Contrato | Contratos em geral | Partes, cláusulas, valores, vigência |
| RG/CPF | Documentos de identidade | Nome, número, data de nascimento |
| CNH | Carteira de habilitação | Nome, número, categoria, validade |
Formatos de Saída
| Formato | Descrição |
|---|---|
text | Texto plano extraído do documento |
markdown | Texto formatado em Markdown com tabelas |
json | Dados estruturados em JSON |
Exemplos — OCR
Python
from openai import OpenAI
import base64
client = OpenAI(
base_url="https://api.polar-ai.com/v1",
api_key="pk-your-key-here"
)
# OCR de uma nota fiscal via arquivo
with open("nota_fiscal.pdf", "rb") as f:
file_data = base64.b64encode(f.read()).decode("utf-8")
response = client.post(
"/ocr",
body={
"file": f"data:application/pdf;base64,{file_data}",
"model": "got-ocr2",
"output_format": "json",
"document_type": "nfe"
}
)
print(response.json())# OCR de um boleto via URL
response = client.post(
"/ocr",
body={
"file_url": "https://exemplo.com/boleto.png",
"model": "got-ocr2",
"output_format": "json",
"document_type": "boleto"
}
)
data = response.json()
print(f"Valor: R${data['valor']}")
print(f"Vencimento: {data['vencimento']}")
print(f"Código de barras: {data['codigo_barras']}")TypeScript
import OpenAI from "openai";
import * as fs from "fs";
const client = new OpenAI({
baseURL: "https://api.polar-ai.com/v1",
apiKey: "pk-your-key-here",
});
const fileBuffer = fs.readFileSync("nota_fiscal.pdf");
const base64File = fileBuffer.toString("base64");
const response = await fetch("https://api.polar-ai.com/v1/ocr", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer pk-your-key-here",
},
body: JSON.stringify({
file: `data:application/pdf;base64,${base64File}`,
model: "got-ocr2",
output_format: "json",
document_type: "nfe",
}),
});
const data = await response.json();
console.log(data);curl
# OCR com arquivo base64
curl -X POST https://api.polar-ai.com/v1/ocr \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk-your-key-here" \
-d '{
"file_url": "https://exemplo.com/nota_fiscal.png",
"model": "got-ocr2",
"output_format": "json",
"document_type": "nfe"
}'# OCR com saída em Markdown
curl -X POST https://api.polar-ai.com/v1/ocr \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk-your-key-here" \
-d '{
"file_url": "https://exemplo.com/contrato.pdf",
"model": "got-ocr2",
"output_format": "markdown"
}'Resposta do OCR — Exemplo NF-e
{
"document_type": "nfe",
"confidence": 0.97,
"data": {
"numero": "000.123.456",
"serie": "1",
"data_emissao": "2024-03-15",
"emitente": {
"razao_social": "Empresa Exemplo LTDA",
"cnpj": "12.345.678/0001-90",
"endereco": "Rua das Flores, 100 - São Paulo/SP"
},
"destinatario": {
"razao_social": "Cliente Final SA",
"cnpj": "98.765.432/0001-10"
},
"itens": [
{
"descricao": "Serviço de consultoria em TI",
"quantidade": 1,
"valor_unitario": 15000.00,
"valor_total": 15000.00
}
],
"valor_total": 15000.00,
"impostos": {
"iss": 750.00,
"pis": 97.50,
"cofins": 450.00
}
}
}Pipeline de Document Q&A
O endpoint /v1/pipelines/document-qa combina OCR com análise por IA, permitindo fazer perguntas sobre o conteúdo do documento:
Python
response = client.post(
"/pipelines/document-qa",
body={
"file_url": "https://exemplo.com/contrato.pdf",
"model": "got-ocr2",
"qa_model": "urso-pro",
"questions": [
"Qual o prazo de vigência do contrato?",
"Quais são as penalidades por rescisão antecipada?",
"Qual o valor mensal acordado?"
]
}
)
for qa in response.json()["answers"]:
print(f"P: {qa['question']}")
print(f"R: {qa['answer']}\n")curl
curl -X POST https://api.polar-ai.com/v1/pipelines/document-qa \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk-your-key-here" \
-d '{
"file_url": "https://exemplo.com/contrato.pdf",
"model": "got-ocr2",
"qa_model": "urso-pro",
"questions": [
"Qual o prazo de vigência do contrato?",
"Qual o valor mensal acordado?"
]
}'Casos de Uso
- Contabilidade: Extração automática de dados de notas fiscais para sistemas ERP
- Jurídico: Análise de petições, contratos e certidões
- Financeiro: Processamento de boletos e comprovantes
- RH: Digitalização de documentos de identidade e certificados
- Compliance: Verificação automatizada de documentos regulatórios
Próximos Passos
- Vision — análise multimodal de imagens
- Structured Output — saída em JSON estruturado
- Batch API — processamento em lote de documentos