Diagnosticador de pragas agrÃcolas com embeddings semânticos multilÃngues. O usuário responde perguntas sobre sintomas e condições da cultura; o sistema encontra o diagnóstico mais próximo por similaridade de cosseno e retorna recomendações de tratamento em três nÃveis.
- Sobre o Projeto
- Objetivo e Público-Alvo
- Funcionalidades Principais
- Arquitetura da Solução
- Tecnologias Utilizadas
- Instalação
- Uso
- Estrutura do Projeto
- Contribuição
- Licença
O AgroScan foi desenvolvido durante o Hackathon AgroTech 2024, onde conquistou o 🥉 3º lugar entre os projetos finalistas.
O AgroScan visa fornecer uma ferramenta de diagnóstico para pragas agrÃcolas, ajudando produtores a identificar e tratar pragas com base nas culturas cultivadas, condições climáticas e sintomas observados. A recomendação usa similaridade semântica com o modelo sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2, com dados extraÃdos de planilhas CSV (Base.csv e Culturas_e_pragas.csv).
- Objetivo: simplificar o processo de diagnóstico de pragas e oferecer orientação prática de tratamento para reduzir danos e acelerar a tomada de decisão no campo.
- Público-alvo: produtores rurais, técnicos agrÃcolas e consultores que atuam em prevenção e controle de pragas.
- Coleta guiada de dados
- A interface coleta respostas sobre cultura, sintomas e condições ambientais.
- Diagnóstico semântico com prioridade estrutural
- O classificador tenta primeiro o match estruturado exato na base.
- Quando necessário, aplica fallback semântico por embeddings para encontrar a hipótese mais próxima.
- Recomendações em 3 nÃveis
- Retorno com opções de tratamento organizadas em nÃvel 1, 2 e 3.
- Camada de Dados: leitura e padronização dos CSVs em
data/. - Camada de IA/Regra: geração de similaridade semântica e seleção da hipótese final.
- Camada de Serviço: API Flask com endpoints para health-check e diagnóstico.
- Camada de Interface: interface web da API e alternativa em Gradio.
- Python: Linguagem de programação principal.
- Flask: Framework para criar a API.
- Sentence-Transformers: Para embeddings semânticos multilÃngues.
- pandas: Manipulação e leitura de dados das planilhas.
- pytest: Testes automatizados da API e do classificador.
git clone https://github.com/DilliKel/hackathon-agrotech-2024.git
cd hackathon-agrotech-2024python -m venv .venv
# Windows (PowerShell)
.\.venv\Scripts\Activate.ps1
# Linux / macOS
source .venv/bin/activatepip install -r requirements.txtpython -m src.agroscan.apiAcesse em http://127.0.0.1:5000.
Fluxo:
- Preencha os campos do formulário na tela inicial.
- Clique em Gerar diagnóstico.
- Veja o retorno com: diagnóstico, tratamento nÃvel 1, 2 e 3.
Exemplo de uso prático:
- Um produtor informa cultura, sintomas e cenário climático.
- O sistema calcula a melhor hipótese de praga com base na base histórica.
- A resposta retorna diagnóstico e plano de tratamento em três nÃveis.
Endpoint direto (POST):
curl -X POST http://127.0.0.1:5000/diagnostico \
-H "Content-Type: application/json" \
-d '{"respostas": ["Milho", "Folhas amareladas", "Seca prolongada"]}'python app/gradio_ui.pypython -m pytest -q- API web local funcionando em
/,/healthe/diagnostico. - Classificador com embeddings multilÃngues e fallback robusto para tratamento.
- Regra de prioridade para match estruturado exato da linha da base antes do fallback semântico.
- Testes automatizados passando.
- Qualidade de dados
- Padronizar valores categóricos (
Sim/sim, nomes de meses e culturas). - Remover duplicatas e criar validação automática de consistência dos CSVs.
- Padronizar valores categóricos (
- Explicabilidade do diagnóstico
- Retornar no payload se o resultado veio de
match_exatooufallback_semantico. - Expor score de confiança e top-3 hipóteses para debug.
- Retornar no payload se o resultado veio de
- Cobertura de testes
- Adicionar testes com dados reais das planilhas.
- Incluir testes de regressão para casos de borda (variações de acento, caixa e sinônimos).
- UX do MVP
- Melhorar feedback visual de carregamento e mensagens de erro por campo.
- Mostrar histórico das últimas consultas na interface.
- Operação e entrega
- Criar script de auditoria de dados para rodar antes de cada demo.
- Adicionar pipeline CI simples para rodar
pytestem push/PR.
hackathon-agrotech-2024/
│
├── index.html
├── assets/
│ ├── app.js
│ └── styles.css
├── data/
│ ├── Base.csv
│ └── Culturas_e_pragas.csv
├── src/
│ ├── __init__.py
│ └── agroscan/
│ ├── __init__.py
│ ├── data_loader.py
│ ├── classifier.py
│ └── api.py
├── app/
│ └── gradio_ui.py
├── tests/
│ ├── conftest.py
│ ├── test_classifier.py
│ └── test_api.py
├── requirements.txt
├── .env.example
├── .gitignore
├── README.md
└── LICENSE
Contribuições são bem-vindas! Siga os passos abaixo para contribuir:
- Faça um fork do projeto.
- Crie uma branch para sua feature (
git checkout -b feature/NovaFeature). - Faça commit de suas alterações (
git commit -m 'Adiciona NovaFeature'). - Envie para a branch principal (
git push origin feature/NovaFeature). - Abra um Pull Request.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.