Sistema profissional de reconhecimento de pessoas e autorização de acesso usando visão computacional e comparação biométrica.
Documentação de Especificação.
┌─────────────────────────────────────────────────────────┐
│ Frontend (Vue.js - Totem) │
│ http://localhost:5173 │
│ - TelaCPF → TelaConfirmacao → TelaCaptura │
└────────────────┬────────────────────────────────────────┘
│ HTTP Requests (CORS)
▼
┌─────────────────────────────────────────────────────────┐
│ Backend (Express.js - Simula Empresa Terceira) │
│ http://localhost:3000 │
│ - Gerencia dados biométricos │
│ - Compara rostos (hash perceptual) │
│ - Autoriza acesso (status = 'ativo') │
└────────────────┬────────────────────────────────────────┘
│ SQL Queries
▼
┌─────────────────────────────────────────────────────────┐
│ Banco de Dados (SQLite) │
│ database.db │
│ - pessoas (id, cpf, nome, foto, status) │
│ - logs_acesso (cpf, resultado, similaridade) │
└─────────────────────────────────────────────────────────┘
1. TELA CPF
├─ Usuário insere CPF
└─ Backend valida se CPF existe
↓
2. TELA CONFIRMAÇÃO
├─ Exibe foto da pessoa registrada
├─ Usuário confirma identidade
└─ "SIM, SOU EU" → Próxima tela
↓
3. TELA CAPTURA (Biometria)
├─ Ativa câmera
├─ Detecta rosto com face-api.js
├─ Captura imagem
├─ Envia para backend
└─ Backend compara com foto registrada
↓
4. RESULTADO
├─ Se similaridade >= 70%
│ ├─ Aprova ✅
│ ├─ Autoriza acesso (status='ativo')
│ └─ Redireciona após 3s
│
└─ Se similaridade < 70%
├─ Rejeita ❌
└─ Oferece opção de tentar novamente
- Node.js 18+
- npm ou yarn
- Câmera conectada
Branch: implementacao-lab -> sistema que roda utilizando a câmera do laboratório.
Branch: implementacao-webcam -> sistema que roda utilizando a webcam do notebook/desktop.
cd backend
npm installnpm run seedIsso cadastra 30 pessoas aleatórias no banco de dados.
Em um terminal:
npm run devBackend rodará em http://localhost:3000
Em outro terminal:
cd frontend
npm installnpm run devFrontend rodará em http://localhost:5173
- Acesse
http://localhost:5173 - Digite um dos CPFs de teste
- Confirme a identidade
- Posicione o rosto na câmera
- Aguarde a comparação
- Veja o resultado
- Vue.js 3 - Framework reativo
- Vue Router - Navegação entre telas
- Tailwind CSS - Styling
- face-api.js - Detecção de rostos
- Axios - Comunicação com API
- Express.js - Servidor HTTP
- SQLite - Banco de dados
- Sharp - Processamento de imagens
- CORS - Compartilhamento de recursos
O sistema utiliza Hash Perceptual (pHash):
- Redimensiona imagem para 64x64 pixels
- Converte para escala de cinza
- Divide em 16 quadrantes (4x4)
- Calcula média de brilho por quadrante
- Compara padrões entre duas imagens
- Retorna percentual de similaridade (0-100%)
Threshold (Limiar): 70%
- Padrão da indústria comercial
- Configurável em
backend/.env
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/saude |
Health check |
| GET | /api/pessoas/:cpf |
Busca dados da pessoa |
| GET | /api/pessoas/:cpf/foto |
Busca foto da pessoa |
| POST | /api/comparar |
Compara dois rostos |
| PUT | /api/autorizar/:cpf |
Autoriza acesso |
| PUT | /api/revogar/:cpf |
Revoga acesso |
| GET | /api/logs |
Busca logs de acesso |
id INTEGER PRIMARY KEY
cpf TEXT UNIQUE
nome TEXT
foto BLOB
status TEXT ('ativo'|'inativo')
data_atualizacao DATETIME
criado_em DATETIMEid INTEGER PRIMARY KEY
cpf TEXT
resultado TEXT ('aprovado'|'rejeitado')
similaridade REAL
data_hora DATETIME- CORS habilitado apenas para frontend
- Validação de entrada em todos endpoints
- Logs de todas as tentativas
- Status de acesso controlado (ativo/inativo)
totem-acesso/
├── frontend/ # Vue.js - Totem
│ ├── src/
│ │ ├── views/ # Telas
│ │ │ ├── TelaCPF.vue # Entrada de CPF
│ │ │ ├── TelaConfirmacao.vue
│ │ │ └── TelaCaptura.vue # Captura biométrica
│ │ ├── services/
│ │ │ └── api.js # Cliente HTTP
│ │ ├── router/
│ │ │ └── index.js # Rotas
│ │ └── App.vue
│ ├── package.json
│ ├── vite.config.js
│ └── .env
│
├── backend/ # Express.js - API
│ ├── src/
│ │ ├── models/
│ │ │ └── database.js # SQLite
│ │ ├── services/
│ │ │ ├── pessoasService.js
│ │ │ └── faceRecognition.js
│ │ ├── routes/
│ │ │ └── api.js # Endpoints
│ │ └── middleware/
│ │ └── errorHandler.js
│ ├── scripts/
│ │ └── seed.js # Popular BD
│ ├── server.js # Entrada
│ ├── package.json
│ ├── .env
│ └── README.md
│
└── README.md (este arquivo)
- Certifique-se que rodou
npm run seedno backend - Use um dos CPFs de teste
- Verifique permissões do navegador
- Teste com
chrome://settings/content/camera
- Verifique se backend está rodando em
http://localhost:3000 - Verifique porta 3000 em uso:
lsof -i :3000
- Certifique-se que
CORS_ORIGINno backend está correto - Frontend padrão:
http://localhost:5173
- Autenticação JWT
- Dashboard de administração
- Modelo de deep learning (ResNet, VGG)
- Rate limiting
- Integração com catraca (webhook/evento)
- Docker/Docker Compose
- Backup automático
- Cache de embeddings
Desenvolvedor: Sistema de Reconhecimento Facial
Versão: 1.0.0
Data: Maio de 2026
