PolarPOLAR

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

EndpointDescrição
POST /v1/ocrExtração de texto e dados de documentos
POST /v1/pipelines/document-qaPerguntas e respostas sobre documentos

Documentos Suportados

Tipo de DocumentoDescriçãoCampos Extraídos
NF-eNota Fiscal EletrônicaCNPJ, valor, itens, impostos, data
BoletoBoleto bancárioCódigo de barras, valor, vencimento, beneficiário
PetiçãoPetições judiciaisPartes, pedidos, fundamentação, número do processo
CertidãoCertidões públicasTipo, validade, dados do titular
ContratoContratos em geralPartes, cláusulas, valores, vigência
RG/CPFDocumentos de identidadeNome, número, data de nascimento
CNHCarteira de habilitaçãoNome, número, categoria, validade

Formatos de Saída

FormatoDescrição
textTexto plano extraído do documento
markdownTexto formatado em Markdown com tabelas
jsonDados 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

On this page