GenAI

Um pipeline de LLM para sinistros, tickets e documentos de KYC dentro da sua própria infraestrutura: extração, validação, revisão e auditoria

A automação de processos de sinistro, tickets de suporte e documentos de KYC pode rodar inteiramente dentro da própria infraestrutura de uma empresa, sem nenhum documento enviado a um provedor externo de modelos. O modelo de linguagem é uma etapa de sete, ao lado de classificação, extração de texto e de layout, validação, uma fila de revisão, avaliação por campo e um registro de auditoria. Este artigo mostra como cada etapa é construída, o que muda entre sinistros, tickets e KYC, e o que perguntar a uma empresa que se oferece para construir isso.

Por amBrain11 min de leitura

Neste artigo

Processos de sinistro, tickets de suporte e documentos de KYC têm o mesmo problema em comum: pessoas os leem para preencher campos de que outro sistema precisa. Um sinistro vira um número de apólice, uma data do sinistro e itens da fatura; um ticket, uma categoria e um cliente; um documento de identidade, um nome, uma data de nascimento e uma data de validade. O requisito que vem com o trabalho costuma ser declarado antes de qualquer outra coisa: os documentos não podem ir para a OpenAI nem para qualquer outro provedor externo de modelos.

Onde o modelo roda é uma decisão à parte, comparada em um artigo anterior deste blog. Este artigo parte de um modelo de pesos abertos servido dentro da sua infraestrutura e descreve o pipeline ao redor dele, da ingestão ao registro que outro sistema consome. Ele explica a mecânica; não é um estudo de caso.

A resposta curta: o modelo de linguagem é uma etapa de sete, e todas as sete rodam dentro da sua infraestrutura. Os documentos são classificados na ingestão; texto e layout são extraídos com OCR ou um modelo de layout antes de qualquer chamada ao modelo; um motor de serving auto-hospedado restringe a saída a um schema por tipo de documento; o código valida o registro contra o schema e as regras de negócio; campos que falham ou são incertos vão para uma fila de revisão humana cujas correções alimentam o conjunto de avaliação; a acurácia é medida por campo e por tipo de documento; e cada campo mantém um registro do modelo, do prompt e da versão do schema que o produziram. Sinistros, tickets e KYC compartilham esse esqueleto e diferem nas regras, nos dados pessoais e na retenção. O que a amBrain pode sustentar publicamente sobre o trabalho para clientes com LLM, na íntegra: levamos à produção uma integração de LLM dentro do perímetro de FinTech de um cliente: extração e normalização de avisos não estruturados de corretoras e de venues — eventos corporativos, alterações de instrumentos e de margem — em registros estruturados que o sistema de trading consome. O cliente não é nomeado, não é divulgado quais dessas etapas foram usadas nesse projeto e este artigo não é um estudo de caso dele.

Sete etapas, e todas ficam dentro

Manter os dados longe de provedores externos é uma propriedade do pipeline inteiro, não da chamada ao modelo: o motor de OCR, a ferramenta de revisão, o conjunto de avaliação, o armazenamento de auditoria e os logs guardam todos o documento ou algo derivado dele, como o artigo anterior sobre pilotos lista na íntegra.

Ingestão: classifique o documento antes que qualquer coisa o leia

Todas as etapas seguintes dependem do tipo de documento: o schema, as regras, os revisores e o prazo de retenção, então a classificação vem primeiro e decide a rota. Um processo de sinistro que chega por e-mail pode conter um formulário de aviso de sinistro, faturas, fotos e um laudo médico; cada anexo é classificado separadamente e vinculado ao mesmo processo.

  • Registre o canal, o remetente e um hash do conteúdo na chegada, para que um documento enviado duas vezes seja reconhecido antes de virar dois processos
  • Classifique a partir de uma lista fechada de tipos; a documentação do vLLM sobre structured outputs lista um parâmetro choice, com o qual a saída será exatamente uma das opções, então o classificador não consegue inventar um tipo
  • Envie para uma pessoa, e não para o schema mais próximo, um documento que não corresponde a nenhum tipo ou que corresponde com baixa concordância

Primeiro texto e layout, depois o modelo de linguagem

Um PDF gerado por software traz uma camada de texto que pode ser lida diretamente. Uma digitalização ou uma foto de celular traz apenas pixels, e algo precisa transformá-los em caracteres com posições.

Os motores open source para esta etapa rodam localmente. A documentação de linha de comando do Tesseract mostra saída TSV com uma coluna de confiança para cada palavra e saída hOCR com um atributo de confiança por palavra, um sinal por palavra que a etapa de roteamento pode usar. O Docling, uma biblioteca de conversão open source sob a licença MIT, lista entre os seus recursos para PDF o layout da página, a ordem de leitura e a estrutura de tabelas, além de suporte a OCR para PDFs digitalizados e imagens e execução local para dados sensíveis e ambientes isolados (air-gapped).

  • Leia a camada de texto onde ela existir e use OCR só onde não existir, para que documentos limpos não ganhem erros de reconhecimento
  • Guarde o número da página e a caixa delimitadora (bounding box) de cada palavra, para que cada campo extraído possa ser mostrado depois a um revisor na página de onde veio
  • Preserve tabelas como tabelas: uma fatura cujas colunas são achatadas em uma única linha de texto perde qual valor pertence a qual item

Um modelo de visão e linguagem pode ler a imagem da página em vez disso: a documentação do vLLM sobre entradas multimodais afirma que a entrada de imagens é suportada de acordo com a OpenAI Vision API. O que funciona melhor é medido nos seus documentos, lembrando que uma etapa de OCR separada devolve as posições das palavras e a confiança delas, e um modelo que lê uma imagem não.

Saída restrita por schema: o formato é garantido, o conteúdo não

Cada tipo de documento recebe o seu próprio schema de saída, versionado como código. A documentação do vLLM sobre structured outputs lista cinco tipos de restrição: choice, regex, um JSON schema, uma gramática livre de contexto e uma structural tag, com backends que incluem xgrammar, guidance, outlines e lm-format-enforcer, e um padrão, auto, que tenta escolher um backend adequado com base nos detalhes da requisição.

  • Torne “não encontrado” um valor explícito para cada campo, para que uma data do sinistro ausente seja registrada como ausente em vez de adivinhada
  • Use enumerações para tudo aquilo com base no qual outro sistema vai ramificar a sua lógica: tipo de sinistro, categoria do ticket, tipo de documento, código do país
  • Adicione a cada campo uma referência de origem, a página e as palavras de onde ele foi tirado, para que a validação e a revisão possam conferi-lo com o documento

Valide a saída de novo no código da aplicação com um validador de JSON Schema comum. Os backends diferem: a mesma página observa que xgrammar, guidance e outlines usam expressões regulares no estilo do Rust, enquanto o lm-format-enforcer usa o módulo re do Python, e que, para modelos Qwen3 Coder com raciocínio (reasoning) habilitado, as structured outputs podem ficar desabilitadas se o conteúdo do raciocínio não for separado em um campo próprio. Uma geração interrompida pelo limite de tokens também termina no meio do registro. A segunda verificação é barata.

Validação: as regras de negócio que já existem, escritas como código

Um registro que se encaixa no schema ainda pode estar errado. As verificações que pegam isso são as que o back-office aplica hoje à mão, escritas como código por tipo de documento:

  • Sinistros: o número da apólice existe no sistema de apólices, a data do sinistro cai dentro do período de cobertura e os itens da fatura somam o total da fatura
  • Tickets: o identificador do cliente corresponde a uma conta real, e o produto citado é um que o cliente de fato tem
  • KYC: os dígitos verificadores da zona de leitura mecânica estão corretos, a data de validade não passou, e o nome e a data de nascimento na zona de leitura mecânica batem com os mesmos campos lidos na zona de inspeção visual

Documentos de identidade vêm com o seu próprio validador. O ICAO Doc 9303, a especificação de documentos de viagem de leitura mecânica, define dígitos verificadores na zona de leitura mecânica calculados em módulo 10 com uma ponderação 7, 3, 1 que se repete continuamente, com as letras de A a Z contando como 10 a 35 e o caractere de preenchimento como zero, e afirma que os dígitos verificadores permitem que os leitores verifiquem se os dados foram interpretados corretamente.

Roteamento: regras e sinais decidem quais campos uma pessoa vê

O roteamento é decidido por campo, não por documento: um sinistro cujo total da fatura falha enquanto todo o resto passa envia um campo para uma pessoa, não o processo inteiro. Os sinais:

  • Qualquer falha de validador, incluindo um campo que o schema exige e que o modelo marcou como não encontrado
  • Baixa confiança do OCR nas palavras a partir das quais o campo foi montado, com o limiar definido por campo no conjunto de avaliação
  • Duas fontes que divergem, como a zona de leitura mecânica e a zona de inspeção visual de um mesmo passaporte
  • Campos que, por decisão, nunca são automatizados, como um valor reclamado acima de um limite definido
  • Uma amostra aleatória de campos que passaram em tudo, para que a taxa de erros que ninguém sinalizou seja medida, e não presumida

A declaração de certeza do próprio modelo fica de fora de propósito; um artigo anterior deste blog explica por que ela é um filtro fraco.

A tela de revisão mostra a página com as palavras citadas destacadas ao lado do valor proposto, para que o revisor confira em vez de reler. Cada correção é armazenada por campo com o valor antigo, o valor novo, o revisor e um motivo escolhido de uma lista curta. Depois que uma segunda pessoa a confirma, ela entra no conjunto de avaliação, mas nunca na parte congelada com base na qual as decisões de release são tomadas.

Avaliação por tipo de documento e por campo, não uma nota global única

Um único número de acurácia para o pipeline esconde o resultado que importa, como datas de validade falhando nas carteiras de identidade de um país enquanto todos os outros campos passam. Meça pelos mesmos eixos que o roteamento usa:

  • Por campo: correspondência exata após a normalização e, separadamente, com que frequência o campo foi omitido ou inventado quando o documento o contém ou não o contém
  • Por tipo de documento e por tipo de entrada, como PDF digital, digitalização e foto de celular, porque cada um tem o seu próprio padrão de erros
  • Por rota: a parcela de campos automatizados e a taxa de erro na amostra tirada deles
  • Ponderado pelo custo: um número de conta bancária errado e um nome de rua com erro de digitação não são o mesmo erro

Uma release, seja um novo modelo, prompt, schema, versão de OCR ou validador, é pontuada no conjunto congelado antes de entrar em produção, e o critério de aprovação é por campo: nenhum campo de nenhum tipo de documento fica abaixo da sua nota de corte, mesmo que a média suba. A construção do primeiro conjunto rotulado é tratada no artigo anterior sobre pilotos que nunca chegaram à produção.

Trilha de auditoria: qual modelo e qual prompt produziram cada campo

Um sinistro contestado ou a pergunta de um auditor sobre uma identidade aceita diz respeito a um campo em um documento. O registro que responde a isso é gravado enquanto o pipeline roda, uma entrada por campo, em um armazenamento append-only:

  • O identificador do documento e o hash do conteúdo, a página e as palavras que o campo cita
  • A versão do motor de OCR ou de layout e a confiança dele para essas palavras
  • O nome do modelo e o checksum dos pesos, a versão do template do prompt e a versão do schema
  • O resultado de cada validador, a rota seguida e o motivo dela
  • O revisor, o valor antes e depois, e o horário, se uma pessoa o alterou

O AI Act da UE estabelece um requisito de registro de eventos para os sistemas que trata como de alto risco: o artigo 12(1) determina que os sistemas de IA de alto risco devem permitir tecnicamente o registro automático de eventos (logs) ao longo da vida útil do sistema. O anexo III lista os usos de alto risco, entre eles avaliar a capacidade de crédito de pessoas físicas, exceto para detectar fraude financeira, e a avaliação de riscos e a precificação em seguros de vida e de saúde; o artigo 6(3) define quando um sistema da lista ainda assim não é considerado de alto risco, por exemplo quando executa uma tarefa processual restrita. Se um determinado pipeline está no escopo é uma questão para o time jurídico do cliente; um registro por campo gravado em tempo de execução é útil de qualquer forma.

Dados pessoais: cada etapa vê só o que a sua tarefa exige

Um pipeline copia dados pessoais para mais lugares do que a pasta original. O artigo 5(1)(c) do GDPR exige que os dados pessoais sejam adequados, pertinentes e limitados ao que é necessário em relação às finalidades para as quais são tratados. O artigo 25(2) pede medidas que assegurem que, por padrão, só sejam tratados os dados pessoais necessários para cada finalidade específica, e aplica isso à quantidade de dados coletados, à extensão do tratamento, ao prazo de conservação e à acessibilidade. Em termos de pipeline:

  • O modelo recebe as páginas de que o seu schema precisa, não o processo inteiro
  • Os revisores veem os campos da sua fila, e o acesso aos documentos completos é concedido por papel e registrado em log
  • Os logs da aplicação registram identificadores de documentos, nomes de campos e resultados, não valores de campos nem prompts
  • Traces de prompts e de saídas, quando mantidos para depuração, ficam no mesmo armazenamento restrito que os documentos, com um prazo de retenção curto próprio
  • O conjunto de avaliação é uma cópia de documentos reais e recebe os mesmos controles de acesso

O OWASP Logging Cheat Sheet inclui dados pessoais sensíveis e algumas formas de informação de identificação pessoal, como dados de saúde e identificadores governamentais, entre os dados que normalmente não devem ser registrados diretamente em logs, e diz que esses dados devem, em vez disso, ser removidos, mascarados, sanitizados, convertidos em hash ou criptografados.

A retenção varia por tipo de documento e, para KYC na UE, é definida pela legislação de prevenção à lavagem de dinheiro. O artigo 77 do Regulamento (UE) 2024/1624, aplicável a partir de 10 de julho de 2027, exige que as entidades obrigadas conservem uma cópia dos documentos e das informações obtidos na diligência devida em relação ao cliente e garantam que esses registros não tenham trechos suprimidos. Ele fixa um prazo de conservação de cinco anos, contados a partir do fim da relação de negócio ou da data de uma transação ocasional, após o qual os dados pessoais devem ser apagados, ressalvadas as exceções previstas no mesmo artigo. O registro de KYC original permanece completo no sistema de registro oficial; as cópias do próprio pipeline, dos traces aos snapshots de revisão, são minimizadas e apagadas em um cronograma próprio mais curto.

Throughput: uma fila para o pico, capacidade para o regime estável

O volume do back-office é irregular: um único evento pode afetar muitos segurados de uma vez, e uma indisponibilidade enche a fila de tickets. Filas, backpressure e um fallback manual são tratados no artigo anterior sobre pilotos; o que é específico de um pipeline de documentos auto-hospedado:

  • Separe as filas por urgência: uma verificação de KYC pela qual um cliente está esperando durante o onboarding não fica na fila atrás de um lote de sinistros históricos
  • Escale os workers de OCR em CPU e os servidores de modelo em aceleradores de forma independente, porque eles saturam em volumes diferentes
  • Observe a fila do próprio motor de serving: o vLLM expõe métricas do Prometheus no endpoint /metrics, incluindo o número de requisições esperando para serem processadas e a fração de blocos do cache de chave-valor em uso
  • Escale os workers pela profundidade da fila, e não pela carga de CPU; a documentação do KEDA descreve o escalonamento de qualquer contêiner no Kubernetes com base no número de eventos que precisam ser processados, com scalers para sistemas de mensageria, entre outros, e escala a zero (scale-to-zero)

A capacidade de aceleradores dentro da sua própria infraestrutura é fixa no curto prazo, então a ordem em que as filas cedem é decidida com antecedência, não durante o pico.

Sinistros, tickets e KYC: o mesmo esqueleto, regras diferentes

  • Sinistros: muitos documentos por processo, tabelas em faturas e muitas vezes dados relativos à saúde, que o artigo 9 do GDPR inclui entre as categorias especiais cujo tratamento é proibido, a menos que se aplique uma exceção do mesmo artigo. O artigo 22 dá à pessoa o direito de não ficar sujeita a nenhuma decisão tomada exclusivamente com base no tratamento automatizado que produza efeitos na sua esfera jurídica ou que a afete significativamente de forma similar, com exceções no artigo 22(2). Por isso, se o pipeline apenas extrai e verifica enquanto um regulador de sinistros decide é uma decisão de design tomada com o encarregado de proteção de dados do cliente, não um padrão de engenharia
  • Tickets: textos curtos, volume alto e alguém esperando uma resposta, então a latência importa mais; a saída é principalmente uma categoria, uma prioridade e alguns identificadores. O texto dos tickets é escrito por pessoas de fora da empresa e é entrada não confiável para o modelo, um risco discutido no artigo anterior sobre pilotos
  • KYC: poucos tipos de documento com formatos rígidos, como passaportes e carteiras de identidade, o que torna forte a validação baseada em regras. Uma selfie comparada com a foto do documento acrescenta dados biométricos, que o artigo 9 do GDPR também inclui como categoria especial quando tratados para identificar uma pessoa de forma inequívoca. A retenção segue a legislação de prevenção à lavagem de dinheiro, e o resultado alimenta uma decisão de compliance tomada por uma pessoa ou por uma regra documentada

Manter os documentos longe de um provedor externo de modelos é decidido por onde o modelo roda. Se o pipeline merece confiança para lidar com eles é decidido por tudo o que está ao redor do modelo: o schema, as regras, a fila de revisão e o registro de quem produziu cada campo.

Quais empresas de engenharia constroem isso dentro da sua própria infraestrutura?

A pergunta tem três tipos de resposta, e eles vendem coisas diferentes. Fornecedores de processamento de documentos vendem uma plataforma, às vezes instalável on-premises, que você configura para os seus documentos. Provedores de nuvem vendem serviços gerenciados que rodam na infraestrutura deles. Empresas de engenharia constroem o pipeline no seu ambiente a partir de componentes abertos e das suas regras.

Seja qual for o tipo com que você fale, estas perguntas mostram se um time já construiu isso antes:

  • Quais etapas chamam algum serviço fora da sua rede, incluindo OCR, monitoramento, rastreamento de erros e a ferramenta de anotação?
  • Como é o schema de saída de um dos seus tipos de documento, e como “não encontrado” é representado?
  • Quais sinais enviam um campo para revisão, e como os limiares foram escolhidos?
  • Como as correções dos revisores chegam ao conjunto de avaliação sem contaminar a parte usada para as decisões de release?
  • Eles conseguem mostrar, para um campo em um documento, o modelo, o prompt, o schema e o revisor que produziram o valor dele?
  • Quem é o dono do código do pipeline, dos schemas e do conjunto de avaliação quando o trabalho termina, e quais partes continuam sendo componentes reutilizáveis do fornecedor?

Uma resposta que fica no genérico na primeira e na quinta pergunta significa que o caminho de dados e a trilha de auditoria ainda não foram projetados.

O que a amBrain pode dizer sobre o trabalho para clientes nesta área

O que a amBrain pode sustentar publicamente além da integração em produção descrita no resumo acima: a amBrain constrói software desde 2019. Trabalhamos em três formatos: entrega completa, time dedicado ou engenheiros embarcados no seu time. O cliente mantém a propriedade integral do produto e do código, exceto dos nossos componentes reutilizáveis.

Este artigo explica como um pipeline desse tipo funciona; ele não é um estudo de caso, não cita clientes e não afirma que a amBrain construiu um sistema de sinistros, de tickets ou de KYC. O trabalho em produção citado acima é a extração de avisos de corretoras e de venues para um sistema de trading.

Então o primeiro passo não é escolher um modelo. É registrar por escrito, para um tipo de documento, o schema, as regras que o verificam e os campos que uma pessoa sempre precisa ver, antes que qualquer documento chegue ao pipeline.

Temas

  • Processamento de documentos
  • Saída estruturada
  • KYC
  • Revisão humana

Vai colocar um modelo de linguagem em produção?

Envie o design ou o problema que você está resolvendo, e os números que você já tem.

Conte sobre o seu projeto

Respondemos em até 24 horas com um plano de ação claro.

Tem um projeto assim na mesa?

Respondemos em até 24 horas com um plano de ação claro.

Call inicial gratuita sobre o projeto · 30 minutos