Projeto em .NET 8 para análise de documentos usando Azure Document Intelligence.
Ele processa PDFs e imagens, extrai informações e salva os resultados em JSON.
Foi criado um modelo próprio para analisar e extrair informações de faturas da Equatorial e DMAE.
AzureDocIntelligence/
│
├── src/
│ └── AzureDocIntelligence/
│ ├── Services/ # Serviços de análise e processamento
│ ├── Config/ # Configuração do ambiente e paths
│ ├── Utils/ # Utilitários genéricos
│ ├── Documents/ # Pasta de entrada de documentos (PDFs, imagens)
│ ├── ExtractedDocuments/ # Saída dos documentos analisados (JSON)
│ ├── appsettings.json # Configurações do Azure
│ └── Program.cs # Ponto de entrada
│
└── test/
└── AzureDocIntelligence.Tests/ # Testes de integração/unitários
- No arquivo
appsettings.jsondentro desrc/AzureDocIntelligence/coloque suas credenciais do Azure:
{
"AzureDocumentIntelligence": {
"Endpoint": "https://SEU-ENDPOINT.cognitiveservices.azure.com/",
"ApiKey": "SUA-CHAVE-DO-AZURE"
}
}- Adicione seus documentos na pasta:
src/AzureDocIntelligence/Documents/
- Arquivos suportados:
.pdf,.jpg,.jpeg,.png - Tamanho máximo: 4 MB por arquivo
- Validações realizadas:
- Verifica se a pasta de entrada existe
- Verifica se arquivos possuem extensão suportada
- Verifica tamanho máximo dos arquivos
- Garante que o arquivo existe antes de enviar para análise
- Arquivo não encontrado (
FileNotFoundException) - Arquivo maior que 4 MB (avisado no console e log)
- Arquivo com extensão não suportada (avisado no console e log)
- Erros do Azure Document Intelligence (capturados e salvos no log JSON)
- Cada documento processado gera um arquivo
.jsonemExtractedDocuments/ - O JSON contém todos os campos extraídos do documento
- Todos os erros são registrados em um arquivo de log JSON, incluindo:
- Nome do arquivo
- Mensagem de erro
Na raiz do projeto (src/AzureDocIntelligence), rode:
dotnet runO programa vai:
- Ler todos os arquivos em
Documents/ - Validar arquivos e registrar erros em log
- Enviar arquivos válidos para o Azure Document Intelligence
- Gerar arquivos
.jsonemExtractedDocuments/ - Mover arquivos processados para uma subpasta
Processed/
- Build do container
docker-compose build- Rodar o container
docker-compose up- Parar o container
docker-compose downColoque os arquivos na pasta
Documents/e os resultados aparecerão emExtractedDocuments/.
- Recebimento de arquivos via API
- Armazenamento de arquivos no Azure Blob Storage
- Controle de diretórios e arquivos via banco de dados, associando cada arquivo ao usuário
- Envio dos dados extraídos via fila de mensagens (ex.: Azure Service Bus)
- Possibilitar que áreas de dados consumam e organizem informações para planejamento estratégico
- Exemplo de arquitetura real para o problema apresentado:

- Projeto funciona tanto localmente quanto em Docker
- Limite de 4 MB por arquivo devido ao plano gratuito do Azure Document Intelligence
- Console exibe mensagens de processamento e erros, enquanto logs detalhados são gravados em JSON