A rotina operacional e administrativa da segurança pública exige velocidade e precisão. Um dos grandes gargalos de tempo – e fonte comum de erros de digitação – é o processo de qualificação de indivíduos. Copiar dados de Carteiras de Identidade (RG), CNHs, CPFs e CRLVs para sistemas, boletins de ocorrência ou planilhas é uma tarefa monótona e repetitiva.
Foi para erradicar esse problema que desenvolvemos o módulo **Extração de Docs** dentro do ecossistema do **Point.IA.br**. Trata-se de uma ferramenta poderosa de Visão Computacional que utiliza Inteligência Artificial para ler fotos de documentos e extrair todos os dados textuais de forma estruturada em questão de segundos.
Neste artigo, vou detalhar como essa ferramenta foi construída, os desafios técnicos que enfrentamos e como a mágica acontece por baixo dos panos.
### O Desafio Inicial: Lixo entra, Lixo sai
Quando começamos a desenhar a ferramenta, o fluxo parecia simples: o usuário tira uma foto, a imagem vai para a IA, e a IA devolve o texto. Mas no mundo real, lidando com smartphones na rua, a história é bem diferente.
Os primeiros problemas que enfrentamos foram o **tamanho das imagens** e os **formatos proprietários**. Câmeras de celulares modernos chegam facilmente aos 50 Megapixels, gerando arquivos de 15MB a 20MB. Enviar isso pela rede móvel (3G/4G) na viatura demoraria uma eternidade, além de estourar os limites de payload (tamanho de pacote) das APIs de Inteligência Artificial.
Além disso, enfrentamos o temido formato **HEIC/HEIF**. Dispositivos da Apple (iPhones) e os mais recentes da Samsung salvam fotos nesse formato de alta eficiência. O problema? Navegadores web padrão e APIs não costumam conseguir ler arquivos HEIC nativamente, resultando em falhas silenciosas ou telas travadas.
### A Engenharia da Captura: Tratamento Local
Para resolver isso, a ferramenta não envia a foto crua para a nuvem. Nós construímos um motor de processamento direto no navegador do usuário (Client-side):
1. **Conversão de HEIC sob demanda:** Implementamos a biblioteca nativa `heic2any`. Assim que o policial tira a foto do documento, o sistema detecta se é um arquivo da Apple/Samsung. Se for, o script intercepta a foto e a converte internamente para um arquivo JPEG padrão e amigável, antes de fazer qualquer outra coisa.
2. **Compressão Inteligente via Canvas:** Em seguida, a imagem original (ou recém-convertida) é carregada silenciosamente em um elemento `<canvas>` invisível na tela. O sistema possui um algoritmo matemático que recalcula as dimensões da foto. Ele verifica o lado maior da imagem e o reduz para no máximo `1600 pixels`, mantendo a proporção exata.
3. **Otimização Extrema:** Após o redimensionamento, o Canvas cospe a imagem convertida em Base64 (texto) com uma qualidade JPEG travada em 80%. O resultado? Uma foto de documento gigantesca de 15MB cai para cerca de **150kb a 300kb**. A qualidade para leitura humana e para a IA continua perfeita, mas o envio é instantâneo e não consome a franquia de dados.
O sistema também foi programado para agrupar até **3 fotos simultâneas**, permitindo que o operador tire fotos da "Frente", do "Verso" e de um documento adicional, processando tudo de uma só vez.
### O Coração do Sistema: Visão Computacional (Vision AI)
Com as imagens tratadas, compactadas e seguras, a mágica da inteligência artificial começa. Para esse módulo, integramos os serviços da **Groq**, famosa por sua velocidade absurda no processamento de inferências (utilizando chips LPU ao invés das tradicionais GPUs).
Nós empacotamos as imagens em Base64 e as enviamos para a nossa rota de backend segura (`/api/ai/chat`), acionando modelos multimodais de ponta como o `qwen/qwen3.6-27b`.
Mas a IA, por si só, é apenas um motor; ela precisa de uma direção clara. Aqui entra a **Engenharia de Prompt**.
Enviamos a imagem acompanhada da seguinte instrução de sistema rigorosa:
> *"Você é um assistente de inteligência artificial policial especializado em extração de dados de documentos brasileiros (RG, CNH, CPF, CRLV). Extraia os dados legíveis da imagem e retorne EXCLUSIVAMENTE em formato JSON. As chaves devem ser lógicas (ex: NOME, CPF, DATA_NASCIMENTO). Não adicione markdown, não explique, não use blocos de código. Apenas o JSON puro começando com { e terminando com }."*
O sistema manda a IA cruzar as informações de todas as fotos (frente e verso) para montar um relatório (JSON) único e sem repetições.
### Filtragem Tática e Prevenção de Falhas
Modelos de IA modernos, especialmente os focados em raciocínio (reasoning), costumam ter o hábito de "pensar em voz alta" antes de dar a resposta, gerando blocos de texto como `<think> analisando a imagem... </think>` antes de entregar o que pedimos.
Se o nosso sistema tentasse ler esse pensamento como código JSON, o sistema "quebraria" (o famoso erro de sintaxe). Para garantir que a ferramenta do Point.IA.br nunca falhe na rua, nós escrevemos um algoritmo de extração agressiva e robusta:
```javascript
// Extração robusta: isola exatamente de '{' até '}' ignorando texto antes ou depois
const startIndex = jsonString.indexOf('{');
const endIndex = jsonString.lastIndexOf('}');
if (startIndex !== -1 && endIndex !== -1 && endIndex >= startIndex) {
jsonString = jsonString.substring(startIndex, endIndex + 1);
}
```
Não importa se a IA decidiu escrever um poema, explicar como analisou a foto ou colocar marcações Markdown. O nosso código atua como um bisturi cirúrgico, varrendo a resposta da IA, localizando a primeira chave `{` e a última chave `}`, extraindo apenas os dados puros do documento e descartando o resto.
### A Entrega: Uma HUD Operacional
Assim que os dados são decodificados, a interface entra em ação. Criamos um painel chamado de **"Result HUD"** (Heads-Up Display).
Ao invés de cuspir um texto confuso na tela, a interface do Point.IA.br lê os dados, limpa nomes de variáveis (transformando "DATA_NASCIMENTO" em um elegante "DATA NASCIMENTO") e gera **cards independentes** para cada dado encontrado (Nome, CPF, Naturalidade, Filiação).
Para coroar a usabilidade, cada campo conta com seu próprio botão tático **"COPIAR"**. O operador pode copiar apenas o CPF para colar no sistema de consulta de mandados, ou usar o botão supremo **"COPIAR TUDO"**, que formata um relatório textual automático pronto para ser jogado no WhatsApp da equipe, no CAD (Sistema do COPOM) ou no Boletim de Ocorrência.
### Conclusão
O módulo **Extração de Docs** é um reflexo claro de como desenhamos o **Point.IA.br**. Não se trata apenas de "ligar uma IA" num site. Trata-se de entender a realidade da rua (fotos grandes, sinal ruim de internet, celulares da Apple), criar algoritmos de contenção (compressão, conversão HEIC) e refinar a interação homem-máquina (extração de JSON, botões de cópia rápida).
O resultado é uma ferramenta onde a burocracia policial que levaria minutos de digitação passível de erro, é resolvida em menos de cinco segundos com o clique da câmera.

