Skip to content

Handit-AI/handit-demo-docs-classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

🤖 AI Document Classification Assistant

Una aplicación moderna de clasificación y resumen de documentos usando IA, desarrollada con React y Node.js.

AI Document Classifier React Node.js OpenAI

✨ Características

  • 🧠 Clasificación Inteligente: Usa GPT-4 para clasificar documentos automáticamente
  • 📄 Múltiples Formatos: Soporta PDF, imágenes, Word, Excel, CSV y texto
  • 🎨 UI Moderna: Interfaz elegante con Material-UI y animaciones
  • 📤 Drag & Drop: Subida de archivos intuitiva
  • 🌐 URLs: Procesa documentos desde enlaces web
  • Tiempo Real: Procesamiento rápido con feedback visual
  • 📊 Análisis Detallado: Clasificación, resumen y metadatos

🚀 Inicio Rápido

Prerrequisitos

1. Clonar y Configurar Backend

# Instalar dependencias del backend
cd backend
npm install

# Crear archivo de configuración
cp env.example .env

# Editar .env y agregar tu API key de OpenAI
nano .env

Configuración del archivo .env:

PORT=3000
OPENAI_API_KEY=sk-tu-api-key-aqui
NODE_ENV=development
MAX_FILE_SIZE=10485760

2. Configurar Frontend

# Instalar dependencias del frontend
cd ../frontend
npm install

3. Ejecutar la Aplicación

Terminal 1 - Backend:

cd backend
npm run dev

Terminal 2 - Frontend:

cd frontend
npm run dev

4. Acceder a la Aplicación

🎯 Cómo Usar

Subir Archivo

  1. Arrastra y suelta tu documento en la zona de subida
  2. O haz clic para seleccionar un archivo
  3. La IA procesará y analizará automáticamente

Procesar URL

  1. Pega la URL de un documento online
  2. Haz clic en "Analyze URL"
  3. El sistema descargará y procesará el contenido

Resultados

  • Clasificación: Tipo, categoría y puntuación de confianza
  • Resumen: Resumen inteligente generado por IA
  • Metadatos: Tiempo de procesamiento y detalles del archivo

📁 Tipos de Archivo Soportados

Tipo Formatos Descripción
📄 PDF .pdf Extracción de texto completo
🖼️ Imágenes .jpg, .jpeg, .png OCR con Tesseract
📝 Word .docx, .doc Documentos de Microsoft Word
📊 Excel .xlsx, .xls Hojas de cálculo
📋 CSV .csv Archivos de datos estructurados
📃 Texto .txt Archivos de texto plano

🏗️ Arquitectura

┌─────────────────┐    HTTP/REST    ┌─────────────────┐
│                 │ ──────────────> │                 │
│   React Frontend │                 │  Node.js Backend │
│   (Port 5173)   │ <────────────── │   (Port 3000)   │
│                 │                 │                 │
└─────────────────┘                 └─────────────────┘
                                             │
                                             ▼
                                    ┌─────────────────┐
                                    │   OpenAI API    │
                                    │     GPT-4       │
                                    └─────────────────┘

Frontend (React + Vite)

  • Material-UI: Componentes de interfaz modernos
  • React Router: Navegación
  • Axios: Cliente HTTP
  • React Dropzone: Subida de archivos drag & drop

Backend (Node.js + Express)

  • Express: Servidor web
  • Multer: Manejo de archivos
  • OpenAI: Procesamiento de IA
  • PDF-Parse: Extracción de PDFs
  • Tesseract.js: OCR para imágenes
  • Mammoth: Documentos Word
  • XLSX: Hojas de cálculo

🔧 API Endpoints

POST /api/process-document

Procesa un documento (archivo o URL)

Archivo:

curl -X POST http://localhost:3000/api/process-document \
  -F "document=@archivo.pdf"

URL:

curl -X POST http://localhost:3000/api/process-document \
  -H "Content-Type: application/json" \
  -d '{"url": "https://ejemplo.com/documento.pdf"}'

Respuesta:

{
  "success": true,
  "data": {
    "classification": {
      "type": "Technical Document",
      "category": "Software Documentation",
      "confidence": 95
    },
    "summary": "Este documento describe...",
    "metadata": {
      "processing_time_ms": 2500,
      "source": {...}
    }
  }
}

GET /health

Estado del servidor

GET /api/info

Información del sistema

🎨 Capturas de Pantalla

Pantalla Principal

  • Diseño moderno con gradientes y animaciones
  • Cards de subida de archivos y URLs
  • Chips informativos de características

Procesamiento

  • Indicadores de progreso visuales
  • Pasos del procesamiento en tiempo real
  • Animaciones suaves

Resultados

  • Tarjetas de clasificación con colores dinámicos
  • Resumen de IA destacado
  • Metadatos detallados del procesamiento

🛠️ Desarrollo

Estructura del Proyecto

├── backend/
│   ├── src/
│   │   ├── index.js              # Servidor principal
│   │   ├── config.js             # Configuración
│   │   ├── documentProcessor.js  # Procesamiento de archivos
│   │   └── agents/
│   │       └── documentAgent.js  # Agente de IA
│   └── package.json
├── frontend/
│   ├── src/
│   │   ├── features/
│   │   │   └── documentClassification/
│   │   │       ├── pages/
│   │   │       ├── components/
│   │   │       └── services/
│   │   └── theme/
│   └── package.json
└── README.md

Scripts Disponibles

Backend:

npm run dev     # Desarrollo con nodemon
npm start       # Producción

Frontend:

npm run dev     # Servidor de desarrollo
npm run build   # Build para producción
npm run preview # Vista previa del build

🔒 Seguridad

  • ✅ Validación de tipos de archivo
  • ✅ Límites de tamaño de archivo
  • ✅ CORS configurado
  • ✅ Variables de entorno para datos sensibles
  • ✅ Sanitización de entrada

🚀 Despliegue

Desarrollo Local

Ya configurado con las instrucciones de arriba.

Producción

  1. Configura variables de entorno en producción
  2. Build del frontend: npm run build
  3. Sirve archivos estáticos del frontend
  4. Ejecuta backend con npm start

🤝 Contribuir

  1. Fork del proyecto
  2. Crea una rama para tu feature
  3. Commit de tus cambios
  4. Push a la rama
  5. Abre un Pull Request

📝 Licencia

Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.

🆘 Soporte

¿Problemas? ¡Aquí tienes ayuda!

Problemas Comunes

Backend no inicia:

# Verifica que tienes Node.js 18+
node --version

# Instala dependencias
cd backend && npm install

# Verifica el archivo .env
cat .env

Error de conexión frontend-backend:

# Verifica que el backend esté ejecutándose
curl http://localhost:3000/health

# Verifica CORS si usas un dominio diferente

Error de API Key:

  • Verifica que tu API key de OpenAI sea válida
  • Asegúrate de que esté en el archivo .env
  • Verifica que tengas créditos en tu cuenta de OpenAI

Contacto


Hecho con ❤️ usando React, Node.js y OpenAI GPT-4

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published