This commit is contained in:
2025-12-16 00:00:58 +01:00
parent 647a8d1c7b
commit 5862a69ac2
4 changed files with 112 additions and 35 deletions

View File

@@ -70,8 +70,8 @@ PDF (académico UNIR)
``` ```
MastersThesis/ MastersThesis/
├── docs/ # Capítulos del TFM (estructura UNIR) ├── docs/ # Capítulos del TFM en Markdown (estructura UNIR)
│ ├── 00_resumen.md # Resumen + Abstract │ ├── 00_resumen.md # Resumen + Abstract + Keywords
│ ├── 01_introduccion.md # Cap. 1: Introducción (1.1-1.3) │ ├── 01_introduccion.md # Cap. 1: Introducción (1.1-1.3)
│ ├── 02_contexto_estado_arte.md # Cap. 2: Contexto y estado del arte (2.1-2.3) │ ├── 02_contexto_estado_arte.md # Cap. 2: Contexto y estado del arte (2.1-2.3)
│ ├── 03_objetivos_metodologia.md # Cap. 3: Objetivos y metodología (3.1-3.4) │ ├── 03_objetivos_metodologia.md # Cap. 3: Objetivos y metodología (3.1-3.4)
@@ -79,6 +79,11 @@ MastersThesis/
│ ├── 05_conclusiones_trabajo_futuro.md # Cap. 5: Conclusiones (5.1-5.2) │ ├── 05_conclusiones_trabajo_futuro.md # Cap. 5: Conclusiones (5.1-5.2)
│ ├── 06_referencias_bibliograficas.md # Referencias bibliográficas (APA) │ ├── 06_referencias_bibliograficas.md # Referencias bibliográficas (APA)
│ └── 07_anexo_a.md # Anexo A: Código fuente y datos │ └── 07_anexo_a.md # Anexo A: Código fuente y datos
├── thesis_output/ # Documento final generado
│ ├── plantilla_individual.htm # TFM completo (abrir en Word)
│ └── figures/ # Figuras generadas desde Mermaid
│ ├── figura_1.png ... figura_7.png
│ └── figures_manifest.json
├── src/ ├── src/
│ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Experimento principal │ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Experimento principal
│ ├── paddle_ocr_tuning.py # Script de evaluación CLI │ ├── paddle_ocr_tuning.py # Script de evaluación CLI
@@ -90,6 +95,8 @@ MastersThesis/
│ ├── instrucciones.pdf │ ├── instrucciones.pdf
│ ├── plantilla_individual.pdf │ ├── plantilla_individual.pdf
│ └── plantilla_individual.htm │ └── plantilla_individual.htm
├── apply_content.py # Genera documento TFM desde docs/ + plantilla
├── generate_mermaid_figures.py # Convierte diagramas Mermaid a PNG
├── ocr_benchmark_notebook.ipynb # Benchmark comparativo inicial ├── ocr_benchmark_notebook.ipynb # Benchmark comparativo inicial
└── README.md └── README.md
``` ```
@@ -154,6 +161,32 @@ python src/paddle_ocr_tuning.py \
--- ---
## Generación del Documento TFM
### Generar documento Word desde Markdown
```bash
# 1. Generar figuras desde diagramas Mermaid
python3 generate_mermaid_figures.py
# 2. Aplicar contenido de docs/ a la plantilla UNIR
python3 apply_content.py
# 3. Abrir en Word y actualizar índices
# - Abrir thesis_output/plantilla_individual.htm en Microsoft Word
# - Presionar Ctrl+A luego F9 para actualizar todos los índices
# - Guardar como .docx
```
**Contenido generado automáticamente:**
- 30 tablas con formato `Piedefoto-tabla` (Tabla X. *Título* + Fuente)
- 7 figuras desde Mermaid con formato `Piedefoto-tabla` (Figura X. *Título* + Fuente)
- 25 referencias en formato APA con sangría francesa
- Resumen y Abstract con palabras clave reales
- Eliminación automática de textos de instrucción de la plantilla
---
## Trabajo Pendiente para Completar el TFM ## Trabajo Pendiente para Completar el TFM
### Contexto: Limitaciones de Hardware ### Contexto: Limitaciones de Hardware
@@ -165,6 +198,13 @@ Este trabajo adoptó la estrategia de **optimización de hiperparámetros** en l
La optimización de hiperparámetros demostró ser una **alternativa efectiva** al fine-tuning, logrando una reducción del 80.9% en el CER sin reentrenar el modelo. La optimización de hiperparámetros demostró ser una **alternativa efectiva** al fine-tuning, logrando una reducción del 80.9% en el CER sin reentrenar el modelo.
### Tareas Completadas
- [x] **Estructura docs/ según plantilla UNIR**: Todos los capítulos siguen numeración exacta (1.1, 1.2, etc.)
- [x] **Añadir diagramas Mermaid**: 7 diagramas añadidos (pipeline OCR, arquitectura Ray Tune, gráficos de comparación)
- [x] **Generar documento TFM unificado**: Script `apply_content.py` genera documento completo desde docs/
- [x] **Convertir Mermaid a PNG**: Script `generate_mermaid_figures.py` genera figuras automáticamente
### Tareas Pendientes ### Tareas Pendientes
#### 1. Validación del Enfoque (Prioridad Alta) #### 1. Validación del Enfoque (Prioridad Alta)
@@ -178,9 +218,8 @@ La optimización de hiperparámetros demostró ser una **alternativa efectiva**
- [ ] **Evaluación con GPU**: Medir tiempos de inferencia con aceleración GPU para escenarios de producción - [ ] **Evaluación con GPU**: Medir tiempos de inferencia con aceleración GPU para escenarios de producción
#### 3. Documentación y Presentación (Prioridad Alta) #### 3. Documentación y Presentación (Prioridad Alta)
- [ ] **Completar memoria TFM**: Unificar los capítulos del directorio `docs/` en documento final siguiendo plantilla UNIR
- [ ] **Crear presentación**: Preparar slides para la defensa del TFM - [ ] **Crear presentación**: Preparar slides para la defensa del TFM
- [x] **Añadir diagramas y figuras**: ~~Incluir visualizaciones de los resultados de Ray Tune~~ (completado: 4 diagramas Mermaid añadidos) - [ ] **Revisión final del documento**: Verificar formato, índices y contenido en Word
#### 4. Extensiones Futuras (Opcional) #### 4. Extensiones Futuras (Opcional)
- [ ] **Herramienta de configuración automática**: Desarrollar una herramienta que determine automáticamente la configuración óptima para un nuevo tipo de documento - [ ] **Herramienta de configuración automática**: Desarrollar una herramienta que determine automáticamente la configuración óptima para un nuevo tipo de documento
@@ -189,9 +228,9 @@ La optimización de hiperparámetros demostró ser una **alternativa efectiva**
### Recomendación de Próximos Pasos ### Recomendación de Próximos Pasos
1. **Inmediato**: Validar en 2-3 tipos de documentos adicionales para demostrar generalización 1. **Inmediato**: Abrir documento generado en Word, actualizar índices (Ctrl+A, F9), guardar como .docx
2. **Corto plazo**: Ampliar dataset y revisar ground truth manualmente 2. **Corto plazo**: Validar en 2-3 tipos de documentos adicionales para demostrar generalización
3. **Para la defensa**: Completar memoria unificada y crear presentación con visualizaciones 3. **Para la defensa**: Crear presentación con visualizaciones de resultados
--- ---

View File

@@ -456,6 +456,30 @@ def main():
# Clear old figure/table index entries (they need to be regenerated in Word) # Clear old figure/table index entries (they need to be regenerated in Word)
print("Clearing old index entries...") print("Clearing old index entries...")
# Remove ALL content from MsoTof paragraphs that reference template examples
# The indices will be regenerated when user opens in Word and presses Ctrl+A, F9
for p in soup.find_all('p', class_='MsoTof'):
text = p.get_text()
# Check for figure index entries with template examples
if 'Figura' in text and 'Ejemplo' in text:
# Remove all <a> tags (the actual index entry links)
for a in p.find_all('a'):
a.decompose()
# Also remove any remaining text content that shows the example
for span in p.find_all('span', style=lambda x: x and 'mso-no-proof' in str(x)):
if 'Ejemplo' in span.get_text():
span.decompose()
print(" ✓ Cleared figure index example entry")
# Check for table index entries with template examples
if 'Tabla' in text and 'Ejemplo' in text:
for a in p.find_all('a'):
a.decompose()
for span in p.find_all('span', style=lambda x: x and 'mso-no-proof' in str(x)):
if 'Ejemplo' in span.get_text():
span.decompose()
print(" ✓ Cleared table index example entry")
# Remove old figure index entries that reference template examples # Remove old figure index entries that reference template examples
for p in soup.find_all('p', class_='MsoToc3'): for p in soup.find_all('p', class_='MsoToc3'):
text = p.get_text() text = p.get_text()

View File

@@ -59,6 +59,11 @@ MastersThesis/
│ ├── 05_conclusiones_trabajo_futuro.md # 5. Conclusiones (5.1, 5.2) │ ├── 05_conclusiones_trabajo_futuro.md # 5. Conclusiones (5.1, 5.2)
│ ├── 06_referencias_bibliograficas.md # Referencias bibliográficas (APA format) │ ├── 06_referencias_bibliograficas.md # Referencias bibliográficas (APA format)
│ └── 07_anexo_a.md # Anexo A: Código fuente y datos │ └── 07_anexo_a.md # Anexo A: Código fuente y datos
├── thesis_output/ # Generated thesis document
│ ├── plantilla_individual.htm # Complete TFM (open in Word)
│ └── figures/ # PNG figures from Mermaid diagrams
│ ├── figura_1.png ... figura_7.png
│ └── figures_manifest.json
├── src/ ├── src/
│ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Main experiment (64 trials) │ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Main experiment (64 trials)
│ ├── paddle_ocr_tuning.py # CLI evaluation script │ ├── paddle_ocr_tuning.py # CLI evaluation script
@@ -69,7 +74,9 @@ MastersThesis/
├── instructions/ # UNIR instructions and template ├── instructions/ # UNIR instructions and template
│ ├── instrucciones.pdf # TFE writing guidelines │ ├── instrucciones.pdf # TFE writing guidelines
│ ├── plantilla_individual.pdf # Word template (PDF version) │ ├── plantilla_individual.pdf # Word template (PDF version)
│ └── plantilla_individual.htm # Word template (HTML version, readable) │ └── plantilla_individual.htm # Word template (HTML version, source)
├── apply_content.py # Generates TFM document from docs/ + template
├── generate_mermaid_figures.py # Converts Mermaid diagrams to PNG
├── ocr_benchmark_notebook.ipynb # Initial OCR benchmark ├── ocr_benchmark_notebook.ipynb # Initial OCR benchmark
└── README.md └── README.md
``` ```
@@ -115,19 +122,48 @@ The template (`plantilla_individual.pdf`) requires **5 chapters**. The docs/ fil
### Completed Tasks ### Completed Tasks
- [x] **Structure docs/ to match UNIR template** - All chapters now follow exact numbering (1.1, 1.2, etc.) - [x] **Structure docs/ to match UNIR template** - All chapters now follow exact numbering (1.1, 1.2, etc.)
- [x] **Add Mermaid diagrams** - 4 diagrams added (OCR pipeline, Ray Tune architecture, CER comparison charts) - [x] **Add Mermaid diagrams** - 7 diagrams added (OCR pipeline, Ray Tune architecture, methodology flowcharts, CER comparison charts)
- [x] **Generate unified thesis document** - `apply_content.py` generates complete document from docs/
- [x] **Convert Mermaid to PNG** - `generate_mermaid_figures.py` generates figures automatically
- [x] **Proper template formatting** - Tables/figures use `Piedefoto-tabla` class, references use `MsoBibliography`
### Priority Tasks ### Priority Tasks
1. **Validate on other document types** - Test optimal config on invoices, forms, contracts 1. **Validate on other document types** - Test optimal config on invoices, forms, contracts
2. **Expand dataset** - Current dataset has only 24 pages 2. **Expand dataset** - Current dataset has only 24 pages
3. **Complete unified thesis document** - Merge docs/ chapters into final UNIR Word format 3. **Create presentation slides** - For thesis defense
4. **Create presentation slides** - For thesis defense 4. **Final document review** - Open in Word, update indices (Ctrl+A, F9), verify formatting
### Optional Extensions ### Optional Extensions
- Explore `text_det_unclip_ratio` parameter (was fixed at 0.0) - Explore `text_det_unclip_ratio` parameter (was fixed at 0.0)
- Compare with actual fine-tuning (if GPU access obtained) - Compare with actual fine-tuning (if GPU access obtained)
- Multi-objective optimization (CER + WER + inference time) - Multi-objective optimization (CER + WER + inference time)
## Thesis Document Generation
To regenerate the thesis document:
```bash
# 1. Generate PNG figures from Mermaid diagrams
python3 generate_mermaid_figures.py
# 2. Apply docs/ content to UNIR template
python3 apply_content.py
# 3. Open in Word and finalize
# - Open thesis_output/plantilla_individual.htm in Microsoft Word
# - Press Ctrl+A then F9 to update all indices
# - Save as .docx
```
**What `apply_content.py` does:**
- Replaces Resumen and Abstract with actual content + keywords
- Replaces all 5 chapters with content from docs/
- Replaces Referencias with APA-formatted bibliography
- Replaces Anexo with repository information
- Converts Mermaid diagrams to embedded PNG images
- Formats tables with `Piedefoto-tabla` captions and sources
- Removes template instruction text ("Importante:", "Ejemplo de nota al pie", etc.)
--- ---
## UNIR TFE Document Guidelines ## UNIR TFE Document Guidelines

View File

@@ -4496,18 +4496,7 @@ mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-
lang=ES style='mso-bidi-font-family:Arial;background:yellow;mso-highlight:yellow'><span lang=ES style='mso-bidi-font-family:Arial;background:yellow;mso-highlight:yellow'><span
style='mso-element:field-begin'></span><span style='mso-element:field-begin'></span><span
style='mso-spacerun:yes'> </span>TOC \f c \h \z \t &quot;Título style='mso-spacerun:yes'> </span>TOC \f c \h \z \t &quot;Título
9;1;Figuras;1&quot; \c &quot;Figura&quot; <span style='mso-element:field-separator'></span></span><![endif]--><span lang="ES"><a href="#_Toc155946760"><span style="mso-no-proof:yes">Figura 1. <i>Ejemplo 9;1;Figuras;1&quot; \c &quot;Figura&quot; <span style='mso-element:field-separator'></span></span><![endif]--><span lang="ES"></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
de figura realizada para nuestro trabajo.</i></span><span style="color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none"><span style="mso-tab-count:1 dotted"> </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc155946760 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">2<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100350035003900340036003700360030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi; minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p> mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="Ttulondices"><!--[if supportFields]><span lang=ES style='background: <p class="Ttulondices"><!--[if supportFields]><span lang=ES style='background:
@@ -4516,18 +4505,7 @@ yellow;mso-highlight:yellow'><span style='mso-element:field-end'></span></span><
<p class="MsoTof" style="tab-stops:right dotted 453.05pt"><!--[if supportFields]><b <p class="MsoTof" style="tab-stops:right dotted 453.05pt"><!--[if supportFields]><b
style='mso-bidi-font-weight:normal'><span lang=ES><span style='mso-element: style='mso-bidi-font-weight:normal'><span lang=ES><span style='mso-element:
field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \t field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \t
&quot;Tablas;1&quot; \c &quot;Tabla&quot; <span style='mso-element:field-separator'></span></span></b><![endif]--><span lang="ES"><a href="#_Toc158282432"><span style="mso-no-proof:yes">Tabla 1. <i>Ejemplo &quot;Tablas;1&quot; \c &quot;Tabla&quot; <span style='mso-element:field-separator'></span></span></b><![endif]--><span lang="ES"></span><span lang="ES" style='font-size:11.0pt;line-height:150%;mso-fareast-font-family:"Times New Roman";
de tabla con sus principales elementos.</i></span><span style="color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none"><span style="mso-tab-count:1 dotted"> </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc158282432 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">2<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100350038003200380032003400330032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='font-size:11.0pt;line-height:150%;mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;mso-bidi-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast;mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual; mso-bidi-theme-font:minor-bidi;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes'><o:p></o:p></span></p> mso-no-proof:yes'><o:p></o:p></span></p>