Skip to content

LeviLucena/IntellidocAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Python Flask Dash OpenAI API Scikit-learn NumPy FAISS Tesseract OCR Pillow YOLOv8 Ultralytics OpenCV PyMuPDF Pandas Requests Dotenv Gunicorn Status MIT License

image

🧠 IntelliDoc AI - Análise Inteligente de Documentos com OCR, RAG e Visão Computacional

IntelliDoc AI é um sistema web inteligente construído em Python que realiza análise automatizada de documentos em PDF, combinando técnicas de OCR, RAG (Retrieval-Augmented Generation) e detecção visual com YOLOv8. A interface web interativa é construída com Dash e roda sobre um backend Flask, integrando processamento de linguagem natural, visão computacional e modelos generativos.


🚀 Funcionalidades

  • 📄 Upload de documentos PDF
  • 🔍 Extração de texto (OCR) com PyMuPDF e pytesseract
  • 🎯 Detecção visual com YOLOv8 (Ultralytics + OpenCV)
  • Perguntas e respostas com RAG + OpenAI (embeddings + LLM)
  • 🖼️ Visualização de imagens com marcações dos objetos detectados
  • 🌐 Interface responsiva com Dash + Bootstrap

🧪 Exemplo de Uso

  • Faça upload de um PDF (ex: contrato, fatura, laudo técnico).
  • Extraia o texto com OCR automaticamente.
  • Ative a opção “Rodar YOLO” para identificar elementos visuais (selos, logos, carimbos, assinaturas etc.).
  • Digite uma pergunta sobre o conteúdo do documento.
  • Veja a resposta gerada com base nos trechos mais relevantes.
20250518_220055.mp4

🧰 Tecnologias Utilizadas

Área Ferramentas / Bibliotecas
Interface Web Dash, Flask
OCR PyMuPDF, pytesseract, Pillow
Visão Computacional YOLOv8 (Ultralytics), OpenCV
RAG & NLP OpenAI API, NumPy, scikit-learn, faiss-cpu
Ambiente e Servidor python-dotenv, gunicorn, requests
Outros pandas (opcional para relatórios futuros)

🧠 Futuras Melhorias

  • Armazenamento vetorial com FAISS + persistência
  • Integração com banco de dados (PostgreSQL ou SQLite)
  • Dashboard de relatórios com pandas + Plotly
  • Suporte a múltiplos arquivos e histórico de perguntas
  • Deploy no Hugging Face Spaces ou AWS/GCP

📁 Estrutura do Projeto

intellidoc/
├── __pycache__/                     # Cache interno do Python (pode ser ignorado ou excluído do controle de versão)
├── app/                             # Lógica de backend e processamento inteligente
│   ├── __pycache__/                 # Cache dos módulos Python (pode ser ignorado)
│   ├── __init__.py                  # Inicializador do pacote app
│   ├── routes.py                    # (Opcional) Se estiver usando Flask ou fastAPI para rotas customizadas
│   ├── ocr.py                       # Extração de texto com PyMuPDF + Tesseract OCR
│   ├── yolo_detector.py            # Detecção visual com YOLO (objetos e assinaturas)
│   ├── rag.py                       # Retrieval-Augmented Generation (RAG) com OpenAI
│   ├── embeddings.py                # Criação de embeddings e integração com vector store
│   ├── vector_store.py              # Faiss index e recuperação vetorial de documentos
│   ├── nlp_utils.py                 # Utilitários de NLP, tokenização, limpeza etc.
├── assets/
│   ├── logo.png                     # Logotipo exibido no layout do Dash
├── models/signatures/              # Diretório de treino YOLO para assinaturas
│   ├── datasets/
│   │   ├── train/                   # Conjunto de treino (imagens + labels YOLO)
│   │   ├── valid/                   # Conjunto de validação (imagens + labels YOLO)
│   │   ├── data.yaml                # Arquivo de configuração para o treinamento
│   │   ├── signature.yaml           # Configuração específica do dataset de assinaturas
│   ├── runs/detect/
│   │   ├── train1 ... train7/       # Experimentos de treino (YOLOv8) com pesos, logs etc.
│   │   │   ├── weights/
│   │   │   │   ├── best.pt          # Melhor modelo (assinaturas) salvo durante o treino
│   │   │   │   ├── last.pt          # Último estado salvo do modelo
│   ├── train_signatures.py         # Script de treino para assinatura com Ultralytics YOLO
│   ├── yolov8n.pt                   # Modelo pré-treinado geral (objetos) da Ultralytics
├── templates/                       # (Opcional) Para templates HTML, se usar Flask (não usado por Dash diretamente)
├── dash_app.py                      # Interface principal Dash com uploads, visualização, OCR, RAG e YOLO
├── config.py                        # Leitura de variáveis de ambiente, chaves da OpenAI, caminhos de modelo, etc.
├── requirements.txt                 # Lista atualizada de dependências do projeto
├── run.py                           # Entry point para execução local ou produção (via gunicorn, por exemplo)
├── yolov8n.pt                       # Cópia local (redundante?) do modelo pré-treinado YOLO para objetos

🛠️ Como Executar o Projeto Localmente

1. Clone o repositório

git clone https://github.com/LeviLucena/IntellidocAI.git
cd intellidoc

2. Crie um ambiente virtual

python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows

3. Instale as dependências

pip install -r requirements.txt

4. Configure as variáveis de ambiente

Crie um arquivo .env na raiz com o seguinte conteúdo:

OPENAI_API_KEY=your_openai_api_key_here

5. Execute o app (modo desenvolvimento)

python run.py

Acesse o app em: http://localhost:8050

6. Executar em produção (via gunicorn)

gunicorn run:server

📚 Referências

Sinta-se à vontade para contribuir, sugerir melhorias ou relatar problemas para ajudar a desenvolver este projeto.

📄 Licença

Este projeto está licenciado sob a licença MIT — veja LICENSE para detalhes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages