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)
Tamanho máximo: 20MB
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/process-cnh" \ -H "Authorization: Bearer {{token}}" \ -F "file=@/caminho/para/cnh.jpg"const axios = require('axios');const FormData = require('form-data');const fs = require('fs');
const form = new FormData();form.append('file', fs.createReadStream('cnh.jpg'));
const config = { method: 'post', url: 'https://api.techtrue.com.br/api/v1/services/ocr/process-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); });// HTML input file// <input type="file" id="inputFile" accept=".jpg,.jpeg,.png,.pdf">
const arquivo = document.getElementById('inputFile').files[0];const formData = new FormData();formData.append('file', arquivo);
fetch('https://api.techtrue.com.br/api/v1/services/ocr/process-cnh', { method: 'POST', headers: { 'Authorization': `Bearer ${token}` }, body: formData}) .then(response => response.json()) .then(result => { console.log('Dados extraídos:', result); }) .catch(error => { console.error('Erro:', error); });import requests
url = "https://api.techtrue.com.br/api/v1/services/ocr/process-cnh"
headers = { "Authorization": "Bearer {{token}}"}
files = { "file": open("cnh.jpg", "rb")}
response = requests.post(url, headers=headers, files=files)
if response.status_code == 200: result = response.json() print("Dados extraídos:", result)else: print("Erro:", response.status_code, response.text)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/process-cnh
Headers
| Nome | Descrição | Obrigatório | Tipo |
|---|---|---|---|
| Authorization | Token Bearer obtido através de autenticação | Sim | string |
| Content-Type | multipart/form-data (automático ao enviar arquivos) | Sim | string |
Corpo da Requisição
Envie o arquivo usando multipart/form-data:
| Campo | Descrição | Obrigatório | Tipo |
|---|---|---|---|
| file | Arquivo de imagem (JPEG, PNG ou PDF) - Máximo 20MB | Sim | file |
Resposta - Sucesso
Estrutura de 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", "nome_arquivo": "cnh.jpg" }, "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 de 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 estado de nascimento |
nome_pai | Nome do pai |
nome_mae | Nome da mãe |
uf | Estado emissor |
observacoes | Observações (ex: doador de órgãos) |
orgao_expedidor | Órgão emissor (DETRAN/Estado) |
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 |
nome_arquivo | string | Nome do arquivo original |
Texto Completo OCR
O campo texto_completo_ocr contém todo o texto extraído da imagem, preservando quebras de linha e formato original.
Interpretação dos 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:
{ "statusCode": 400, "message": "Arquivo não enviado", "error": "Bad Request"}Códigos de Erro
| Código HTTP | Mensagem | Descrição |
|---|---|---|
| 400 | Arquivo não enviado | Nenhum arquivo foi enviado no campo file |
| 400 | Tipo de arquivo não suportado. Use PNG, JPG ou PDF | Formato de imagem não suportado |
| 400 | Arquivo muito grande. Tamanho máximo: 20MB | O arquivo excede o tamanho máximo permitido |
| 401 | Unauthorized | Token de autenticação inválido ou ausente |
| 500 | Erro ao processar documento | Erro interno ao processar a imagem |
| 503 | OCR API 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 no arquivo enviado |
| 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 no quadro
- Orientação correta: O documento deve estar na posição correta (não invertido ou de lado)
- Resolução mínima: Recomendamos uma 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®.