OCR - Leitura de Documentos
O serviço de OCR (Optical Character Recognition) da TechTrue® permite a extração automatizada de informações de documentos através do processamento inteligente de imagens. O sistema analisa a imagem do documento, identifica e extrai os campos relevantes, retornando os dados estruturados em formato JSON.
Documentos Suportados
Atualmente, o serviço suporta:
- CNH (Carteira Nacional de Habilitação) ✅
Formatos de Imagem Aceitos
O serviço aceita os seguintes formatos:
- JPEG (.jpg, .jpeg)
- PNG (.png)
- PDF (.pdf)
As imagens podem ser enviadas:
- Como base64 (no corpo JSON)
- Como arquivo binário (multipart/form-data)
Endpoint da API
Extrair Dados de CNH
Para extrair informações de uma CNH, use o código abaixo:
curl -X POST "https://api.techtrue.com.br/api/v1/services/ocr/cnh" \ -H "Authorization: Bearer {{token}}" \ -H "Content-Type: application/json" \ -d '{ "imagem": "{{base64_string}}" }'curl -X POST "https://api.techtrue.com.br/api/v1/services/ocr/cnh" \ -H "Authorization: Bearer {{token}}" \ -F "arquivo=@/caminho/para/cnh.jpg"const axios = require('axios');const fs = require('fs');
// Leia a imagem e converta para base64const imagemBuffer = fs.readFileSync('cnh.jpg');const imagemBase64 = imagemBuffer.toString('base64');
const data = { imagem: imagemBase64};
const config = { method: 'post', url: 'https://api.techtrue.com.br/api/v1/services/ocr/cnh', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer {{token}}' }, data: data};
axios(config) .then((response) => { console.log(JSON.stringify(response.data, null, 2)); }) .catch((error) => { console.error('Erro:', error.response?.data || error.message); });const axios = require('axios');const FormData = require('form-data');const fs = require('fs');
const form = new FormData();form.append('arquivo', fs.createReadStream('cnh.jpg'));
const config = { method: 'post', url: 'https://api.techtrue.com.br/api/v1/services/ocr/cnh', headers: { 'Authorization': 'Bearer {{token}}', ...form.getHeaders() }, data: form};
axios(config) .then((response) => { console.log(JSON.stringify(response.data, null, 2)); }) .catch((error) => { console.error('Erro:', error.response?.data || error.message); });// Converter arquivo para base64const fileToBase64 = (file) => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { // Remove o prefixo "data:image/jpeg;base64," const base64 = reader.result.split(',')[1]; resolve(base64); }; reader.onerror = error => reject(error); });};
// Usoconst arquivo = document.getElementById('inputFile').files[0];const imagemBase64 = await fileToBase64(arquivo);
fetch('https://api.techtrue.com.br/api/v1/services/ocr/cnh', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ imagem: imagemBase64 })}) .then(response => response.json()) .then(result => { console.log('Dados extraídos:', result); }) .catch(error => { console.error('Erro:', error); });Endpoint que extrai automaticamente os dados de uma Carteira Nacional de Habilitação (CNH) através de processamento OCR.
Requisição HTTP
POST /api/v1/services/ocr/cnh
Headers
| Nome | Descrição | Obrigatório | Tipo |
|---|---|---|---|
| Authorization | Token Bearer obtido através da autenticação | Sim | string |
| Content-Type | application/json (para base64) ou multipart/form-data (para arquivo) | Sim | string |
Corpo da Requisição
Opção 1: Imagem em Base64
{ "imagem": "{{base64_string}}"}| Campo | Descrição | Obrigatório | Tipo |
|---|---|---|---|
| imagem | Imagem do documento codificada em base64 (sem o prefixo data:image/...;base64,) | Sim | string |
Opção 2: Upload de Arquivo
Envie o arquivo usando multipart/form-data:
| Campo | Descrição | Obrigatório | Tipo |
|---|---|---|---|
| arquivo | Arquivo da imagem (JPEG, PNG ou PDF) | Sim | file |
Resposta - Sucesso
Estrutura da resposta quando a extração é bem-sucedida:
{ "success": true, "documento_tipo": "CNH", "campos": { "nome_completo": { "valor": "João Da Silva Santos", "confianca": 0.95 }, "cpf": { "valor": "123.456.789-00", "valido": true, "confianca": 0.98 }, "rg": { "valor": "12.345.678-9", "confianca": 0.92 }, "data_nascimento": { "valor": "15/03/1990", "valida": true, "confianca": 0.97 }, "numero_cnh": { "valor": "12345678900", "confianca": 0.96 }, "categoria": { "valor": "AB", "confianca": 0.99 }, "data_validade": { "valor": "15/03/2030", "valida": true, "confianca": 0.94 }, "data_emissao": { "valor": "15/03/2020", "valida": true, "confianca": 0.91 }, "data_primeira_habilitacao": { "valor": "10/05/2008", "valida": true, "confianca": 0.89 }, "local_nascimento": { "valor": "São Paulo-SP", "confianca": 0.85 }, "nome_pai": { "valor": "José Da Silva", "confianca": 0.82 }, "nome_mae": { "valor": "Maria Da Silva Santos", "confianca": 0.84 }, "uf": { "valor": "SP", "confianca": 0.92 }, "observacoes": { "valor": "DOADOR DE ÓRGÃOS E TECIDOS", "confianca": 0.78 }, "orgao_expedidor": { "valor": "DETRAN/SP", "confianca": 0.86 } }, "metadados": { "total_campos_extraidos": 15, "qualidade_imagem": "boa", "confianca_media_ocr": 0.912, "tempo_processamento": 2.34, "campos_com_baixa_confianca": [ "observacoes" ], "tamanho_arquivo_bytes": 1048576, "tipo_arquivo": "image/jpeg" }, "texto_completo_ocr": "REPÚBLICA FEDERATIVA DO BRASIL\nCARTEIRA NACIONAL DE HABILITAÇÃO\n\nNOME: JOÃO DA SILVA SANTOS\nCPF: 123.456.789-00\nRG: 12.345.678-9\nDATA DE NASCIMENTO: 15/03/1990\nFILIAÇÃO: JOSÉ DA SILVA\nMARIA DA SILVA SANTOS\n\nNATURALIDADE: SÃO PAULO-SP\nREGISTRO: 12345678900\nCATEGORIA: AB\nDATA DE EMISSÃO: 15/03/2020\nDATA DE VALIDADE: 15/03/2030\nPRIMEIRA HABILITAÇÃO: 10/05/2008\n\nOBSERVAÇÕES: DOADOR DE ÓRGÃOS E TECIDOS\n\nDETRAN/SP"}Campos da Resposta
Estrutura de Cada Campo
Cada campo extraído contém:
| Propriedade | Tipo | Descrição |
|---|---|---|
valor | string | Valor extraído do documento |
confianca | number | Nível de confiança da extração (0.0 a 1.0) |
valido | boolean | (Apenas para CPF e datas) Indica se o valor passou na validação |
Campos Extraídos da CNH
| Campo | Descrição |
|---|---|
nome_completo | Nome completo do condutor |
cpf | CPF do condutor (com validação) |
rg | RG do condutor |
data_nascimento | Data de nascimento (com validação de formato) |
numero_cnh | Número do registro da CNH |
categoria | Categoria da habilitação (A, B, AB, etc.) |
data_validade | Data de validade da CNH (com validação) |
data_emissao | Data de emissão da CNH (com validação) |
data_primeira_habilitacao | Data da primeira habilitação (com validação) |
local_nascimento | Cidade e UF de nascimento |
nome_pai | Nome do pai |
nome_mae | Nome da mãe |
uf | Unidade Federativa emissora |
observacoes | Observações (ex: doador de órgãos) |
orgao_expedidor | Órgão expedidor (DETRAN/UF) |
Metadados
| Campo | Tipo | Descrição |
|---|---|---|
total_campos_extraidos | number | Quantidade de campos extraídos com sucesso |
qualidade_imagem | string | Avaliação da qualidade: excelente, boa, regular, ruim |
confianca_media_ocr | number | Média de confiança de todos os campos (0.0 a 1.0) |
tempo_processamento | number | Tempo de processamento em segundos |
campos_com_baixa_confianca | string[] | Lista de campos com confiança inferior a 0.8 |
tamanho_arquivo_bytes | number | Tamanho do arquivo processado em bytes |
tipo_arquivo | string | Tipo MIME do arquivo processado |
Texto Completo OCR
O campo texto_completo_ocr contém todo o texto extraído da imagem, preservando quebras de linha e formatação original.
Interpretando os Níveis de Confiança
- 0.9 - 1.0: Confiança muito alta (excelente)
- 0.8 - 0.89: Confiança alta (bom)
- 0.7 - 0.79: Confiança média (requer atenção)
- < 0.7: Confiança baixa (recomenda-se validação manual)
Resposta - Erro
Estrutura de resposta de erro:
{ "success": false, "error": { "code": "IMAGE_QUALITY_LOW", "message": "Qualidade da imagem muito baixa para processamento", "details": "A imagem está desfocada ou com resolução insuficiente" }}Códigos de Erro
| Código HTTP | Código de Erro | Descrição |
|---|---|---|
| 400 | INVALID_IMAGE_FORMAT | Formato de imagem não suportado |
| 400 | IMAGE_TOO_LARGE | Imagem excede o tamanho máximo permitido (10MB) |
| 400 | IMAGE_QUALITY_LOW | Qualidade da imagem muito baixa para processamento |
| 400 | DOCUMENT_NOT_DETECTED | Não foi possível detectar um documento na imagem |
| 400 | DOCUMENT_TYPE_MISMATCH | Documento detectado não é uma CNH |
| 400 | MISSING_IMAGE | Nenhuma imagem foi enviada na requisição |
| 400 | INVALID_BASE64 | String base64 inválida ou corrompida |
| 401 | UNAUTHORIZED | Token de autenticação inválido ou ausente |
| 500 | OCR_PROCESSING_FAILED | Erro interno ao processar a imagem |
| 503 | SERVICE_UNAVAILABLE | Serviço temporariamente indisponível |
Códigos de Resposta HTTP
| Código | Descrição |
|---|---|
| 200 | OK - Documento processado com sucesso |
| 400 | Bad Request - Erro na requisição ou na imagem enviada |
| 401 | Unauthorized - Token de autenticação inválido ou ausente |
| 500 | Internal Server Error - Erro no processamento OCR |
| 503 | Service Unavailable - Serviço temporariamente indisponível |
Melhores Práticas
Qualidade da Imagem
Para obter os melhores resultados, certifique-se de que:
- Iluminação adequada: Evite sombras e reflexos na imagem
- Foco nítido: A imagem não deve estar desfocada ou tremida
- Enquadramento completo: Todo o documento deve estar visível dentro do quadro
- Orientação correta: O documento deve estar na posição correta (não invertido ou de lado)
- Resolução mínima: Recomendamos resolução de pelo menos 1200x800 pixels
- Contraste adequado: Certifique-se de que há bom contraste entre o documento e o fundo
- Documento limpo: Evite documentos danificados, amassados ou com manchas que possam dificultar a leitura
Suporte
Para dúvidas, problemas ou sugestões sobre o serviço de OCR, entre em contato com o suporte da TechTrue®.