- Descripción del proyecto
- Requisitos
- Instalación
- Uso de la API
- Estructura del proyecto
- Ejemplos de uso
- Contribución
- Licencia
Este proyecto es una API construida con FastAPI y Astro en una arqutectura de monorepo multipaquete usando NX que permite clasificar documentos (PDF e imágenes) en categorías predefinidas utilizando un modelo de machine learning llamado RandomForest. Los documentos se procesan, clasifican y organizan en carpetas según su categoría. Luego, el usuario puede descargar los archivos clasificados en un archivo ZIP.
Para ejecutar este proyecto, necesitas:
- Python 3.13 o superior.
- Las siguientes bibliotecas de Python:
fastapi
uv
package manageruvicorn
pytesseract
pymupdf
(fitz)scikit-learn
numpy
pydantic
python-multipart
Puedes instalar las dependencias usando el archivo pyproject.toml
:
uv sync
git clone https://github.com/AND3SIL4/documents-classifier.git ./document-classifier
cd document-classifier
npm start
Crear el entorno virtual
uv venv # crear entorno virtua
source .venv/bin/activate
Ejecuta la aplicación:
uv run fastapi dev
Endpoint: Método: POST URL: /classify
Descripción: Sube un archivo ZIP que contiene documentos (PDF o imágenes) para clasificarlos.
Solicitud: Body: form-data
Clave: file
Valor: Archivo ZIP que contiene los documentos.
Respuesta: Código de estado: 200 OK
Body:
{
"message": "Classifications completed successfully",
"request_id": "a15d472c-1458-4fdd-9db5-9edbc8061c0a",
"download_link": "/download/a15d472c-1458-4fdd-9db5-9edbc8061c0a"
}
Ejemplo con curl
curl -X 'POST' \
'http://127.0.0.1:8000/classify' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@/ruta/al/archivo.zip'
Endpoint: Método: GET URL: /download/{request_id}
Descripción: Descarga un archivo ZIP con los documentos clasificados.
Respuesta: Código de estado: 200 OK
Body: Archivo ZIP (classified_files.zip).
Ejemplo con curl:
curl -X 'GET' \
'http://127.0.0.1:8000/download/a15d472c-1458-4fdd-9db5-9edbc8061c0a' \
--output classified_files.zip
document-classifier/
│
├── app/
│ ├── main.py # Código principal de la API
│ ├── machine_learning/
│ │ ├── model.pkl # Modelo de clasificación
│ │ └── vectorizer.pkl # Vectorizador de texto
│ └── ...
│
├── pyproject.toml # Dependencias y configuración del proyecto
├── README.md # Documentación del proyecto
└── ...
Este proyecto está bajo la licencia MIT. Para más detalles, consulta el archivo LICENSE.
Created by Felipe Silva