Este proyecto implementa distintas técnicas de compresión de texto, incluyendo Shannon-Fano, Huffman y Lempel-Ziv (LZ77).
Permite analizar archivos, calcular información estadística de los símbolos y generar resultados codificados, decodificados y reportes en Excel.
- Python 3.10 o superior
- Dependencias listadas en
requirements.txt
Instalación de dependencias:
pip install -r requirements.txtcd C:\ruta\a\tu\proyectopython -m venv envPowerShell:
.\env\Scripts\Activate.ps1CMD:
.\env\Scripts\activate.batpip install --upgrade pip
pip install -r requirements.txtdeactivate- Colocar los archivos de texto a procesar dentro de un directorio.
- Ejecutar el programa con:
python main.py <ruta_del_directorio>python main.py ./archivosSe generarán los resultados en las carpetas:
- 📁 codificado/ → Archivos codificados
- 📁 decodificado/ → Archivos decodificados
- 📁 planillas/ → Reportes en Excel con métricas
Procedimiento:
- Recopilar datos: texto, imágenes, audio, etc.
- Contabilizar la frecuencia de cada carácter (diccionario o tabla).
- Calcular probabilidades dividiendo la frecuencia de cada carácter por el total de caracteres.
Tipos de caracteres:
- Letras (mayúsculas y minúsculas)
- Dígitos (0–9)
- Espacios
- Signos de puntuación
- Caracteres especiales
Registro necesario:
- Total de caracteres leídos
- Totales parciales y probabilidades de ocurrencia
Fases sugeridas:
- Fase 1: Fórmulas de Excel (ej.
=LARGO()) - Fase 2: Macro en VBA
- Fase 3: Automatización avanzada en Python
Algoritmos:
- Huffman: Códigos de longitud variable eficientes para distribuciones sesgadas.
- Shannon-Fano: Similar a Huffman, con otra construcción de árbol.
- Lempel-Ziv (LZ77): Usa diccionario y codificación de longitud variable.
Métricas de eficiencia:
- Tasa de compresión (Compression Ratio)
- Longitud media del código (L)
- Redundancia
- Tiempos de codificación y decodificación
Otros factores:
- Relación de compresión (tamaño comprimido vs. original)
- Complejidad computacional
- Implementación y facilidad de uso
- Planillas de símbolos: cantidad, probabilidad, entropía, información mutua
- Reportes de codificación: longitud promedio, eficiencia y tamaño de salida
- Archivo de promedios: resumen general con las métricas de todos los archivos procesados
- Usar archivos en codificación UTF-8
- Mantener las carpetas
codificado/,decodificado/yplanillas/limpias antes de cada ejecución - Revisar los reportes Excel para comparar resultados entre algoritmos