Continuamos a explorar métodos alternativos para a confirmação de idade em recursos web, sem o uso de biometria, integração com sistemas governamentais (como o ЕБС na Rússia) ou a divulgação de dados pessoais. Em nosso artigo anterior, detalhamos como isso poderia ser feito. Agora, vamos nos aprofundar em como implementar tal cenário utilizando WebAssembly e as oportunidades que essa tecnologia abre para as plataformas web. Apresentaremos o código necessário para esta implementação.
Reconhecimento Web como Alternativa à Biometria e Serviços Externos
O reconhecimento de documentos de identidade com processamento local no lado do usuário permite resolver a tarefa de verificação de idade sem a coleta de dados biométricos, integração com sistemas externos ou a divulgação de informações pessoais. Esse cenário se assemelha à verificação offline tradicional e, quando implementado corretamente, não exige hardware potente nem mesmo aplicativos de terceiros. Na Smart Engines, desenvolvemos há muito tempo tecnologias de reconhecimento em ambientes web. Atualmente, nossas soluções operam em versões online de muitos bancos russos para o reconhecimento de códigos de barras de pagamento, cartões bancários e documentos. Conseguimos transferir o reconhecimento para o navegador utilizando WebAssembly – uma tecnologia que permite a criação de aplicações web "avançadas" (PWA - Progressive Web Apps), incluindo a capacidade de reconhecimento local. De fato, os PWAs modernos, em termos de velocidade de operação, responsividade da interface e funcionalidade disponível, já se aproximaram significativamente das soluções nativas, e em vários cenários, podem ser até mais convenientes.
Primeiramente, um aplicativo web funciona em qualquer lugar onde haja um navegador: em smartphones, tablets, laptops e até mesmo dentro de aplicativos de mensagens. Do ponto de vista da verificação de idade, isso proporciona uma implementação unificada para todas as plataformas, sem a necessidade de migrar para um aplicativo específico. Em segundo lugar, os PWAs reduzem significativamente a jornada do cliente (CJM). Em vez de transições entre serviços, recebimento de códigos SMS ou autenticação através de sites de terceiros, a plataforma obtém a verificação de idade diretamente em sua própria interface. Isso impacta positivamente o CJM e permite integrar a verificação de idade ao fluxo de usuário existente de forma praticamente transparente. Do ponto de vista do usuário, o processo é extremamente simples: abrir a página e mostrar o documento de identidade para a câmera. Para prevenir tentativas de burlar a verificação – com documentos de terceiros ou através de deepfakes e outros tipos de falsificações – o reconhecimento de documentos de identidade pode ser complementado com análise antifraude e comparação facial não biométrica. Todas as computações são realizadas localmente no dispositivo, garantindo que as imagens e os dados pessoais não saiam do escopo do usuário e não sejam divulgados nem para a plataforma, nem para outras partes externas. Para os usuários, isso é uma garantia de confidencialidade e ausência de risco de vazamento. Para as empresas, isso significa a ausência de transferência de dados pessoais e dependência de serviços externos. Para os desenvolvedores, o WebAssembly abre a possibilidade de adicionar a verificação de idade a qualquer interface web necessária – desde lojas online e marketplaces até cinemas online, plataformas sociais e aplicativos de mensagens. E é possível integrar o reconhecimento de documentos para verificação de idade em uma página web em poucos minutos. Abaixo, detalharemos a implementação prática dessa solução.
Como Integrar um Sistema de Reconhecimento e Verificação de Idade em uma Página Web
Vamos passar das formulações de negócios para a parte técnica e entender como integrar rapidamente os produtos da Smart Engines em qualquer serviço digital – um aplicativo móvel, uma plataforma web ou até mesmo a interface de um aplicativo de mensagens. Implementamos um PWA que armazena todos os recursos necessários (incluindo módulos Wasm) no cache local graças ao Service Worker. Ao contrário do cache do navegador, o Service Worker, ao acessar um recurso novamente, não cria requisições HTTP, mas entrega os arquivos imediatamente. Isso permite acelerar significativamente a responsividade do aplicativo. Para o cache de recursos, você registra um Service Worker seguindo um exemplo simples da MDN e adiciona todos os recursos necessários durante o registro, como estilos, scripts e arquivos wasm. Para implementar o reconhecimento, é necessário criar um arquivo worker.js que realizará as computações sem sobrecarregar a interface do usuário do navegador.
javascriptlet SEWorker = new Worker("./worker.js"));
Dentro do worker, carregamos o script e criamos uma instância da biblioteca de reconhecimento:
javascript// Import the relevant global Engine object importScripts(bin/simd.nothreads/idengine_wasm.js); // Init WASM module const SE = await SmartIDEngine({}); // Init engine const ENGINE = new SE.seIdEngine(true, 1, true);
Agora, precisamos criar e configurar a sessão de reconhecimento:
javascriptlet sessionSettings = engine.CreateSessionSettings();
Especificamos o modo de reconhecimento e a máscara do documento. A máscara pode ser definida como rus.passport.*, o que fará com que a busca inclua tanto o passaporte nacional quanto o biométrico internacional ("rus.passport.biometric").
javascriptsessionSettings.SetCurrentMode("default"); sessionSettings.AddEnabledDocumentTypes("rus.passport.national");
Com a seguinte configuração, solicitamos que o resultado inclua a imagem do documento corrigida pela perspectiva:
javascriptsessionSettings.SetOption("common.extractTemplateImages", "true");
Agora, inicializamos a sessão:
javascriptspawnedSession = engine.SpawnSession(sessionSettings, signature);
Na web, para capturar imagens da câmera, é necessário primeiro renderizar o fluxo de vídeo em um canvas e, em seguida, acessamos os pixels, que são passados para um objeto Image especial.
javascriptlet image = new SE.seImageFromBuffer(rawData, width, height, stride, channels);
Agora, podemos passá-lo para o reconhecimento:
javascriptconst result = spawnedSession.Process(image);
O objeto result contém todas as informações sobre o documento: campos de texto, coordenadas do template e dos campos do documento, imagens (assinaturas, carimbos, imagem do documento). Recomendamos não fechar a sessão após o primeiro reconhecimento, mas continuar enviando imagens para ela, ou seja, recomendamos usar o reconhecimento de documentos em fluxo de vídeo. Essa abordagem tem uma grande vantagem em termos de resistência a reflexos de documentos laminados e outros artefatos de reconhecimento, pois seus resultados são combinados. Se o sistema não espera mais receber uma imagem de maior qualidade, ele define o flag de terminalidade da sessão como true e você pode obter o resultado.
javascriptif (result.GetIsTerminal()) { // O resultado pode ser obtido }
O reconhecimento no cliente não se limita apenas à câmera. O documento pode ser anexado da galeria ou estar empacotado em um PDF de várias páginas. Todos esses formatos podem ser renderizados em um canvas e passados para reconhecimento.
Como Isso Funciona na Prática?
Ao final do reconhecimento, o sistema retorna um resultado estruturado. A composição dos resultados do reconhecimento é totalmente personalizável de acordo com os requisitos do cliente. A plataforma pode receber campos individuais do documento – por exemplo, apenas a data de nascimento – ou um atributo de idade pronto ou um token como "18+". Essa abordagem permite regular de forma flexível o grau de divulgação dos dados pessoais: desde a transferência da informação mínima necessária até um cenário totalmente anônimo, no qual o serviço recebe apenas a confirmação de conformidade com o limite de idade, sem quaisquer informações sobre a identidade do usuário. Como você pode ver, integrar o reconhecimento de documentos de identidade em uma página web para verificação de idade é realmente possível em questão de minutos. Sem um aplicativo móvel separado, sem biometria, sem sistemas governamentais e sem envio de documentos para a nuvem. Esse mecanismo funcionará mesmo em um estacionamento sem acesso à rede. Paradoxalmente, mas é um fato: a internet permanece um atributo obrigatório de uma plataforma online, mas deixa de ser necessária para a verificação de idade.
