From 2fc91e2a646e82161239f9f8742609afc9d14a5f Mon Sep 17 00:00:00 2001 From: sergio Date: Wed, 10 Dec 2025 22:34:33 +0100 Subject: [PATCH] Add references to each chapter --- .gitignore | 3 +- claude.md | 366 +++++++++++- docs/01_introduccion.md | 9 +- docs/02_contexto_estado_arte.md | 1 + docs/03_objetivos_metodologia.md | 3 +- docs/04_comparativa_soluciones.md | 132 ----- docs/04_desarrollo_especifico.md | 533 ++++++++++++++++++ ...o.md => 05_conclusiones_trabajo_futuro.md} | 39 +- docs/05_optimizacion_hiperparametros.md | 212 ------- docs/06_referencias_bibliograficas.md | 67 +++ docs/06_resultados_discusion.md | 183 ------ instructions/plantilla_individual.pdf | Bin 0 -> 215733 bytes 12 files changed, 965 insertions(+), 583 deletions(-) delete mode 100644 docs/04_comparativa_soluciones.md create mode 100644 docs/04_desarrollo_especifico.md rename docs/{07_conclusiones_trabajo_futuro.md => 05_conclusiones_trabajo_futuro.md} (88%) delete mode 100644 docs/05_optimizacion_hiperparametros.md create mode 100644 docs/06_referencias_bibliograficas.md delete mode 100644 docs/06_resultados_discusion.md create mode 100644 instructions/plantilla_individual.pdf diff --git a/.gitignore b/.gitignore index 427e430..29e36fe 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ results/ __pycache__/ dataset -results \ No newline at end of file +results +.DS_Store diff --git a/claude.md b/claude.md index b7a8b9d..4991e99 100644 --- a/claude.md +++ b/claude.md @@ -50,15 +50,14 @@ config_optimizada = { ``` MastersThesis/ -├── docs/ # Thesis chapters in Markdown -│ ├── 00_resumen.md # Abstract (Spanish + English) -│ ├── 01_introduccion.md # Introduction -│ ├── 02_contexto_estado_arte.md # Context and State of Art -│ ├── 03_objetivos_metodologia.md # Objectives and Methodology -│ ├── 04_comparativa_soluciones.md # OCR Comparative Study -│ ├── 05_optimizacion_hiperparametros.md # Ray Tune Optimization -│ ├── 06_resultados_discusion.md # Results and Discussion -│ └── 07_conclusiones_trabajo_futuro.md # Conclusions +├── docs/ # Thesis chapters in Markdown (matches template structure) +│ ├── 00_resumen.md # Resumen + Abstract +│ ├── 01_introduccion.md # Chapter 1: Introducción +│ ├── 02_contexto_estado_arte.md # Chapter 2: Contexto y estado del arte +│ ├── 03_objetivos_metodologia.md # Chapter 3: Objetivos y metodología +│ ├── 04_desarrollo_especifico.md # Chapter 4: Desarrollo específico (4.1, 4.2, 4.3) +│ ├── 05_conclusiones_trabajo_futuro.md # Chapter 5: Conclusiones +│ └── 06_referencias_bibliograficas.md # Referencias bibliográficas ├── src/ │ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Main experiment (64 trials) │ ├── paddle_ocr_tuning.py # CLI evaluation script @@ -66,11 +65,29 @@ MastersThesis/ │ ├── prepare_dataset.ipynb # Dataset preparation │ └── raytune_paddle_subproc_results_20251207_192320.csv # 64 trial results ├── results/ # Benchmark results CSVs -├── instructions/ # UNIR PDF document used as dataset +├── instructions/ # UNIR instructions and template +│ ├── instrucciones.pdf # TFE writing guidelines +│ └── plantilla_individual.pdf # Word template (PDF version) ├── ocr_benchmark_notebook.ipynb # Initial OCR benchmark └── README.md ``` +### docs/ to Template Mapping + +The template (`plantilla_individual.pdf`) requires **5 chapters**. The docs/ files now match this structure exactly: + +| Template Section | docs/ File | Notes | +|-----------------|------------|-------| +| Resumen | `00_resumen.md` (Spanish part) | 150-300 words | +| Abstract | `00_resumen.md` (English part) | 150-300 words | +| 1. Introducción | `01_introduccion.md` | Subsections 1.1, 1.2, 1.3 | +| 2. Contexto y estado del arte | `02_contexto_estado_arte.md` | Subsections 2.1, 2.2, 2.3 | +| 3. Objetivos y metodología | `03_objetivos_metodologia.md` | Subsections 3.1, 3.2, 3.3 | +| 4. Desarrollo específico | `04_desarrollo_especifico.md` | Includes 4.1, 4.2, 4.3 | +| 5. Conclusiones y trabajo futuro | `05_conclusiones_trabajo_futuro.md` | Subsections 5.1, 5.2 | +| Referencias bibliográficas | `06_referencias_bibliograficas.md` | APA, alphabetical | +| Anexo A | (create from README) | Repository URL | + ## Important Data Files ### Results CSV Files @@ -105,32 +122,339 @@ MastersThesis/ - Compare with actual fine-tuning (if GPU access obtained) - Multi-objective optimization (CER + WER + inference time) +--- + +## UNIR TFE Document Guidelines + +**CRITICAL:** The thesis MUST follow UNIR's official template (`instructions/plantilla_individual.pdf`) and guidelines (`instructions/instrucciones.pdf`). + +### Work Type Classification + +This thesis is a **hybrid of Type 1 (Piloto experimental) and Type 3 (Comparativa de soluciones)**: +- Comparative study of OCR solutions (EasyOCR, PaddleOCR, DocTR) +- Experimental pilot with Ray Tune hyperparameter optimization +- 64 trials executed, results analyzed statistically + +### Document Structure (from plantilla_individual.pdf - MANDATORY) + +The TFE must follow this EXACT structure from the official template: + +| Section | Subsections | Notes | +|---------|-------------|-------| +| **Portada** | Title, Author, Type, Director, Date | Use template format exactly | +| **Resumen** | 150-300 words + 3-5 Palabras clave | Spanish summary | +| **Abstract** | 150-300 words + 3-5 Keywords | English summary | +| **Índice de contenidos** | Auto-generated | New page | +| **Índice de figuras** | Auto-generated | New page | +| **Índice de tablas** | Auto-generated | New page | +| **1. Introducción** | 1.1 Motivación, 1.2 Planteamiento del trabajo, 1.3 Estructura del trabajo | 3-5 pages | +| **2. Contexto y estado del arte** | 2.1 Contexto del problema, 2.2 Estado del arte, 2.3 Conclusiones | 10-15 pages | +| **3. Objetivos concretos y metodología** | 3.1 Objetivo general, 3.2 Objetivos específicos, 3.3 Metodología del trabajo | Variable | +| **4. Desarrollo específico** | Varies by work type (see below) | Main content | +| **5. Conclusiones y trabajo futuro** | 5.1 Conclusiones, 5.2 Líneas de trabajo futuro | Variable | +| **Referencias bibliográficas** | APA format, alphabetical, hanging indent | Variable | +| **Anexo A** | Código fuente y datos analizados | Repository URL | + +**Total length:** 50-90 pages (excluding cover, resumen, abstract, indices, annexes) + +### Chapter-Specific Requirements (from plantilla_individual.pdf) + +#### 1. Introducción +The introduction must give a clear first idea of what was intended, the conclusions reached, and the procedure followed. Key ideas: problem identification, justification of importance, general objectives, preview of contribution. + +**1.1 Motivación:** +- Present the problem to solve +- Justify importance to educational/scientific community +- Answer: What problem? What are the causes? Why is it relevant? +- Must include references to prior research + +**1.2 Planteamiento del trabajo:** +- Briefly state the problem/need detected +- Describe the proposal and purpose +- Answer: How to solve? What is proposed? + +**1.3 Estructura del trabajo:** +- Briefly describe what each subsequent chapter contains + +#### 2. Contexto y estado del arte +Study the application domain in depth, citing numerous references. Must consult different sources (not just online - also technical manuals, books). + +**2.1 Contexto del problema:** +- Deep study of the application domain + +**2.2 Estado del arte:** +- Antecedents, current studies, comparison of existing tools +- Must reference key authors in the field (justify exclusions) + +**2.3 Conclusiones:** +- Summary linking research to the work to be done +- How findings affect the specific development + +#### 3. Objetivos concretos y metodología de trabajo +Bridge between domain study and contribution. Three required elements: (1) general objective, (2) specific objectives, (3) methodology. + +**3.1 Objetivo general:** +- Must be SMART (Doran, 1981) +- Focus on achieving an observable effect, not just "create a tool" +- Example: "Mejorar el servicio X logrando Y valorado positivamente (mínimo 4/5) por Z" + +**3.2 Objetivos específicos:** +- Divide general objective into analyzable sub-objectives +- Must be SMART +- Use infinitive verbs: Analizar, Calcular, Clasificar, Comparar, Conocer, Cuantificar, Desarrollar, Describir, Descubrir, Determinar, Establecer, Explorar, Identificar, Indagar, Medir, Sintetizar, Verificar +- Typically ~5 objectives: 1-2 about state of art, 2-3 about development + +**3.3 Metodología del trabajo:** +- Describe steps to achieve objectives +- Explain WHY each step +- What instruments will be used +- How results will be analyzed + +#### 4. Desarrollo específico de la contribución +Structure depends on work type. Organize by methodology phases/activities. + +**For Type 1 (Piloto experimental):** +- 4.1 Descripción detallada del experimento + - Technologies used (with justification) + - How pilot was organized + - Participants (demographics) + - Automatic evaluation techniques + - How experiment proceeded + - Monitoring/evaluation instruments + - Statistical analysis types +- 4.2 Descripción de los resultados (objective, no interpretation) + - Summary tables, result graphs, relevant data identification +- 4.3 Discusión + - Relevance of results, explanations for anomalies, highlight key findings + +**For Type 3 (Comparativa de soluciones):** +- 4.1 Planteamiento de la comparativa + - Problem identification, alternative solutions to evaluate + - Success criteria, measures to take +- 4.2 Desarrollo de la comparativa + - All results and measurements obtained + - Graphs, tables, data visualization +- 4.3 Discusión y análisis de resultados + - Discussion of meaning, advantages/disadvantages of solutions + +#### 5. Conclusiones y trabajo futuro + +**5.1 Conclusiones:** +- Summary of problem, approach, and why solution is valid +- Summary of contributions +- **Relate contributions and results to objectives** - discuss degree of achievement + +**5.2 Líneas de trabajo futuro:** +- Future work that would add value +- Justify how contribution can be used and in what fields + +### SMART Objectives Requirements + +ALL objectives (general and specific) MUST be SMART: + +| Criterion | Requirement | Example from this thesis | +|-----------|-------------|-------------------------| +| **S**pecific | Clearly define what to achieve | "Optimizar PaddleOCR para documentos en español" | +| **M**easurable | Quantifiable success metric | "CER < 2%" | +| **A**ttainable | Feasible with available resources | "Sin GPU, usando optimización de hiperparámetros" | +| **R**elevant | Demonstrable impact | "Mejora extracción de texto en documentos académicos" | +| **T**ime-bound | Achievable in timeframe | "Un cuatrimestre" | + +### Citation and Reference Rules + +#### APA Format is MANDATORY + +Reference guide: https://bibliografiaycitas.unir.net/ + +**In-text citations:** +- Single author: (Du, 2020) or Du (2020) +- Two authors: (Du & Li, 2020) +- Three+ authors: (Du et al., 2020) + +**Reference list examples:** +``` +# Journal article with DOI +Shi, B., Bai, X., & Yao, C. (2016). An end-to-end trainable neural network + for image-based sequence recognition. IEEE Transactions on Pattern + Analysis and Machine Intelligence, 39(11), 2298-2304. + https://doi.org/10.1109/TPAMI.2016.2646371 + +# Conference paper +Akiba, T., Sano, S., Yanase, T., Ohta, T., & Koyama, M. (2019). Optuna: + A next-generation hyperparameter optimization framework. Proceedings + of the 25th ACM SIGKDD, 2623-2631. + https://doi.org/10.1145/3292500.3330701 + +# arXiv preprint +Du, Y., Li, C., Guo, R., ... & Wang, H. (2020). PP-OCR: A practical ultra + lightweight OCR system. arXiv preprint arXiv:2009.09941. + https://arxiv.org/abs/2009.09941 + +# Software/GitHub repository +PaddlePaddle. (2024). PaddleOCR: Awesome multilingual OCR toolkits based + on PaddlePaddle. GitHub. https://github.com/PaddlePaddle/PaddleOCR + +# Book +Cohen, J. (1988). Statistical power analysis for the behavioral sciences + (2nd ed.). Lawrence Erlbaum Associates. +``` + +#### Reference Rules +- **NO Wikipedia citations** +- Include variety: books, conferences, journal articles (not just URLs) +- All cited references must appear in reference list +- All references in list must be cited in text +- Order alphabetically by first author's surname +- Include DOI or URL when available + +### Document Formatting Rules + +#### Page Setup +| Element | Specification | +|---------|--------------| +| Page size | A4 | +| Left margin | 3.0 cm | +| Right margin | 2.0 cm | +| Top/Bottom margins | 2.5 cm | +| Header | Student name + TFE title | +| Footer | Page number | + +#### Typography +| Element | Format | +|---------|--------| +| Body text | Calibri 12, justified, 1.5 line spacing, 6pt before/after | +| Título 1 | Calibri Light 18, blue, justified, 1.5 spacing | +| Título 2 | Calibri Light 14, blue, justified, 1.5 spacing | +| Título 3 | Calibri Light 12, justified, 1.5 spacing | +| Footnotes | Calibri 10, justified, single spacing | +| Code | Can reduce to 9pt if needed | + +#### Tables and Figures (from plantilla_individual.pdf) + +**Table format example:** +``` +Tabla 1. Ejemplo de tabla con sus principales elementos. +[TABLE CONTENT] +Fuente: American Psychological Association, 2020a. +``` + +**Figure format example:** +``` +Figura 1. Ejemplo de figura realizada para nuestro trabajo. +[FIGURE] +Fuente: American Psychological Association, 2020b. +``` + +**Rules:** +- **Title position**: Above the table/figure +- **Numbering format**: "**Tabla 1.**" / "**Figura 1.**" (Calibri 12, bold) +- **Title text**: Calibri 12, italic (after the number) +- **Source**: Below, centered, format "Fuente: Author, Year." +- Can reduce font to 9pt for dense tables +- Can use landscape orientation for large tables +- Tables should have horizontal lines only (no vertical lines) per APA style + +### Writing Style Rules + +#### MUST DO: +- Each chapter starts with introductory paragraph explaining content +- Each paragraph has at least 3 sentences +- Verify originality (cite all sources) +- Check spelling with Word corrector +- Ensure logical flow between paragraphs +- Define concepts and include pertinent citations + +#### MUST NOT DO: +- Two consecutive headings without text between them +- Superfluous phrases and repetition of ideas +- Short paragraphs (less than 3 sentences) +- Missing figure/table numbers or titles +- Broken index generation + +### Annexes Requirements + +**Anexo A - Código fuente y datos:** +- Include repository URL where code is hosted +- Student must be sole author and owner of repository +- No commits from other users +- Data used should also be in repository +- If confidential (company project), justify why not shared + +### Final Submission + +- **Drafts**: Submit in Word format +- **Final deposit**: Submit in PDF format +- Verify all indices generate correctly before final submission + +--- + ## Guidelines for Claude -### When Working on This Project +### CRITICAL: Academic Rigor Requirements -1. **Be rigorous with data**: Only cite numbers from actual CSV files and notebook outputs. Do not fabricate comparison data. +**This is a Master's Thesis. Academic rigor is NON-NEGOTIABLE.** -2. **Reference sources**: When discussing results, reference the specific files: - - Ray Tune results: `src/raytune_paddle_subproc_results_20251207_192320.csv` - - Benchmark results: `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` +#### DO NOT: +- **NEVER fabricate data or statistics** - Every number must come from an actual file in this repository +- **NEVER invent comparison results** - If we don't have data for EasyOCR or DocTR comparisons, don't make up numbers +- **NEVER assume or estimate values** - If a metric isn't in the CSV/notebook, don't include it +- **NEVER extrapolate beyond what the data shows** - 24 pages is a limited dataset, acknowledge this +- **NEVER claim results that weren't measured** - Only report what was actually computed -3. **Key files to read first**: - - This file (`claude.md`) for context - - `README.md` for current project state - - Relevant `docs/` chapter for specific topics +#### ALWAYS: +- **Read the source file first** before citing any result +- **Quote exact values** from CSV files (e.g., CER 0.011535 not "approximately 1%") +- **Reference the specific file and location** for every data point +- **Acknowledge limitations** explicitly (dataset size, CPU-only, single document type) +- **Distinguish between measured results and interpretations** -4. **Language**: Documentation is in Spanish (thesis requirement), code comments in English. +#### Data Sources (ONLY use these): +| Data Type | Source File | +|-----------|-------------| +| Ray Tune 64 trials | `src/raytune_paddle_subproc_results_20251207_192320.csv` | +| Per-page benchmark | `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` | +| Experiment code | `src/paddle_ocr_fine_tune_unir_raytune.ipynb` | +| Final comparison | Output cells in the notebook (baseline vs optimized) | -5. **Hardware context**: Remember this is CPU-only execution. Any suggestions about GPU training or real-time processing should acknowledge this limitation. +#### Example of WRONG vs RIGHT: + +**WRONG:** "EasyOCR achieved 8.5% CER while PaddleOCR achieved 5.2% CER" +(We don't have this comparison data in our results files) + +**RIGHT:** "PaddleOCR with baseline configuration achieved CER between 1.54% and 6.40% across pages 5-9 (source: `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`)" + +**WRONG:** "The optimization improved results by approximately 80%" + +**RIGHT:** "The optimization reduced CER from 7.78% to 1.49%, a reduction of 80.9% (source: final comparison in `paddle_ocr_fine_tune_unir_raytune.ipynb`)" + +### When Working on Documentation + +1. **Read UNIR guidelines first**: Check `instructions/instrucciones.pdf` for structure requirements + +2. **Follow chapter structure**: Each chapter has specific content requirements per UNIR guidelines + +3. **References are UNIFIED**: All references go in `docs/06_referencias_bibliograficas.md`, NOT per-chapter + +4. **Use APA format**: All citations must follow APA style + +5. **Include "Fuentes de datos"**: Each chapter should list which repository files the data came from + +6. **Language**: Documentation is in Spanish (thesis requirement), code comments in English + +7. **Hardware context**: Remember this is CPU-only execution. Any suggestions about GPU training should acknowledge this limitation + +8. **When in doubt, ask**: If the user requests data that doesn't exist, ask rather than inventing numbers ### Common Tasks - **Adding new experiments**: Update `src/paddle_ocr_fine_tune_unir_raytune.ipynb` - **Updating documentation**: Edit files in `docs/` +- **Adding references**: Add to `docs/06_referencias_bibliograficas.md` (unified list) - **Dataset expansion**: Use `src/prepare_dataset.ipynb` as template - **Running evaluations**: Use `src/paddle_ocr_tuning.py` CLI +--- + ## Experiment Details ### Ray Tune Configuration diff --git a/docs/01_introduccion.md b/docs/01_introduccion.md index d837251..c3dbe87 100644 --- a/docs/01_introduccion.md +++ b/docs/01_introduccion.md @@ -41,12 +41,9 @@ El presente documento se organiza en los siguientes capítulos: **Capítulo 3 - Objetivos y Metodología**: Se definen los objetivos SMART del trabajo y se describe la metodología experimental seguida, incluyendo la preparación del dataset, las métricas de evaluación y el proceso de optimización con Ray Tune. -**Capítulo 4 - Comparativa de Soluciones OCR**: Se presentan los resultados del benchmark inicial comparando EasyOCR, PaddleOCR y DocTR, justificando la selección de PaddleOCR para la fase de optimización. +**Capítulo 4 - Desarrollo Específico de la Contribución**: Este capítulo presenta el desarrollo completo del estudio comparativo y la optimización de hiperparámetros de sistemas OCR, estructurado en tres secciones: (4.1) planteamiento de la comparativa con la evaluación de EasyOCR, PaddleOCR y DocTR; (4.2) desarrollo de la comparativa con la optimización de hiperparámetros mediante Ray Tune; y (4.3) discusión y análisis de resultados. -**Capítulo 5 - Optimización de Hiperparámetros**: Se describe el experimento de optimización con Ray Tune, analizando el impacto de cada hiperparámetro y las correlaciones identificadas. - -**Capítulo 6 - Resultados y Discusión**: Se presentan los resultados finales comparando el baseline con la configuración optimizada, incluyendo análisis estadísticos y visualizaciones. - -**Capítulo 7 - Conclusiones y Trabajo Futuro**: Se resumen las contribuciones del trabajo, se discute el grado de cumplimiento de los objetivos y se proponen líneas de trabajo futuro. +**Capítulo 5 - Conclusiones y Trabajo Futuro**: Se resumen las contribuciones del trabajo, se discute el grado de cumplimiento de los objetivos y se proponen líneas de trabajo futuro. **Anexos**: Se incluye el enlace al repositorio de código fuente y datos, así como tablas completas de resultados experimentales. + diff --git a/docs/02_contexto_estado_arte.md b/docs/02_contexto_estado_arte.md index 25cdfa8..9393d00 100644 --- a/docs/02_contexto_estado_arte.md +++ b/docs/02_contexto_estado_arte.md @@ -177,3 +177,4 @@ Este capítulo ha presentado: 4. Las particularidades del OCR para el idioma español El estado del arte revela que, si bien existen soluciones OCR de alta calidad, su optimización para dominios específicos mediante ajuste de hiperparámetros (sin fine-tuning) ha recibido poca atención. Este trabajo contribuye a llenar ese vacío proponiendo una metodología reproducible para la optimización de PaddleOCR en documentos académicos en español. + diff --git a/docs/03_objetivos_metodologia.md b/docs/03_objetivos_metodologia.md index 977c417..dd9afe9 100644 --- a/docs/03_objetivos_metodologia.md +++ b/docs/03_objetivos_metodologia.md @@ -285,4 +285,5 @@ Este capítulo ha establecido: 4. El espacio de búsqueda de hiperparámetros y la configuración de Ray Tune 5. Las limitaciones reconocidas del enfoque -El siguiente capítulo presenta los resultados del benchmark comparativo inicial entre las tres soluciones OCR evaluadas. +El siguiente capítulo presenta el desarrollo específico de la contribución, incluyendo el benchmark comparativo de soluciones OCR, la optimización de hiperparámetros y el análisis de resultados. + diff --git a/docs/04_comparativa_soluciones.md b/docs/04_comparativa_soluciones.md deleted file mode 100644 index 46251e3..0000000 --- a/docs/04_comparativa_soluciones.md +++ /dev/null @@ -1,132 +0,0 @@ -# Capítulo 4: Comparativa de Soluciones OCR - -## 4.1 Introducción - -Este capítulo presenta los resultados del estudio comparativo realizado entre tres soluciones OCR de código abierto: EasyOCR, PaddleOCR y DocTR. Los experimentos fueron documentados en el notebook `ocr_benchmark_notebook.ipynb` del repositorio. El objetivo es identificar el modelo base más prometedor para la posterior fase de optimización de hiperparámetros. - -## 4.2 Configuración del Experimento - -### 4.2.1 Dataset de Evaluación - -Se utilizó el documento "Instrucciones para la redacción y elaboración del TFE" del Máster Universitario en Inteligencia Artificial de UNIR, ubicado en la carpeta `instructions/`. - -| Característica | Valor | -|----------------|-------| -| Número de páginas evaluadas | 5 (páginas 1-5 en benchmark inicial) | -| Formato | PDF digital (no escaneado) | -| Idioma | Español | -| Resolución de conversión | 300 DPI | - -### 4.2.2 Configuración de los Modelos - -Según el código en `ocr_benchmark_notebook.ipynb`: - -**EasyOCR**: -```python -easyocr_reader = easyocr.Reader(['es', 'en']) # Spanish and English -``` - -**PaddleOCR (PP-OCRv5)**: -```python -paddleocr_model = PaddleOCR( - text_detection_model_name="PP-OCRv5_server_det", - text_recognition_model_name="PP-OCRv5_server_rec", - use_doc_orientation_classify=False, - use_doc_unwarping=False, - use_textline_orientation=True, -) -``` -Versión utilizada: PaddleOCR 3.2.0 (según output del notebook) - -**DocTR**: -```python -doctr_model = ocr_predictor(det_arch="db_resnet50", reco_arch="sar_resnet31", pretrained=True) -``` - -### 4.2.3 Métricas de Evaluación - -Se utilizó la biblioteca `jiwer` para calcular CER y WER: -```python -from jiwer import wer, cer - -def evaluate_text(reference, prediction): - return {'WER': wer(reference, prediction), 'CER': cer(reference, prediction)} -``` - -## 4.3 Resultados del Benchmark - -### 4.3.1 Resultados de PaddleOCR (Datos del CSV) - -Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, se obtienen los siguientes resultados de PaddleOCR para las páginas 5-9 del documento: - -| Página | WER | CER | -|--------|-----|-----| -| 5 | 12.16% | 6.33% | -| 6 | 12.81% | 6.40% | -| 7 | 11.06% | 6.24% | -| 8 | 8.13% | 1.54% | -| 9 | 10.61% | 5.58% | - -**Promedio PaddleOCR (páginas 5-9):** -- CER medio: ~5.22% -- WER medio: ~10.95% - -### 4.3.2 Comparativa de Modelos - -Según la documentación del notebook `ocr_benchmark_notebook.ipynb`, los tres modelos evaluados representan diferentes paradigmas de OCR: - -| Modelo | Tipo | Componentes | Fortalezas Clave | -|--------|------|-------------|------------------| -| **EasyOCR** | End-to-end (det + rec) | DB + CRNN/Transformer | Ligero, fácil de usar, multilingüe | -| **PaddleOCR (PP-OCR)** | End-to-end (det + rec + cls) | DB + SRN/CRNN | Soporte multilingüe robusto, pipeline configurable | -| **DocTR** | End-to-end (det + rec) | DB/LinkNet + CRNN/SAR/VitSTR | Orientado a investigación, API limpia | - -### 4.3.3 Ejemplo de Salida OCR - -Del archivo CSV, un ejemplo de predicción de PaddleOCR para la página 8: - -> "Escribe siempre al menos un párrafo de introducción en cada capítulo o apartado, explicando de qué vas a tratar en esa sección. Evita que aparezcan dos encabezados de nivel consecutivos sin ningún texto entre medias. [...] En esta titulacióon se cita de acuerdo con la normativa Apa." - -**Errores observados en este ejemplo:** -- `titulacióon` en lugar de `titulación` (carácter duplicado) -- `Apa` en lugar de `APA` (capitalización) - -## 4.4 Justificación de la Selección de PaddleOCR - -### 4.4.1 Criterios de Selección - -Basándose en los resultados obtenidos y la documentación del benchmark: - -1. **Rendimiento**: PaddleOCR obtuvo CER entre 1.54% y 6.40% en las páginas evaluadas -2. **Configurabilidad**: PaddleOCR ofrece múltiples hiperparámetros ajustables: - - Umbrales de detección (`text_det_thresh`, `text_det_box_thresh`) - - Umbral de reconocimiento (`text_rec_score_thresh`) - - Componentes opcionales (`use_textline_orientation`, `use_doc_orientation_classify`, `use_doc_unwarping`) - -3. **Documentación oficial**: [PaddleOCR Documentation](https://www.paddleocr.ai/v3.0.0/en/version3.x/pipeline_usage/OCR.html) - -### 4.4.2 Decisión - -**Se selecciona PaddleOCR (PP-OCRv5)** para la fase de optimización debido a: -- Resultados iniciales prometedores (CER ~5%) -- Alta configurabilidad de hiperparámetros de inferencia -- Pipeline modular que permite experimentación - -## 4.5 Limitaciones del Benchmark - -1. **Tamaño reducido**: Solo 5 páginas evaluadas en el benchmark comparativo inicial -2. **Único tipo de documento**: Documentos académicos de UNIR únicamente -3. **Ground truth**: El texto de referencia se extrajo automáticamente del PDF, lo cual puede introducir errores en layouts complejos - -## 4.6 Resumen del Capítulo - -Este capítulo ha presentado: - -1. La configuración del benchmark según `ocr_benchmark_notebook.ipynb` -2. Los resultados cuantitativos de PaddleOCR del archivo CSV de resultados -3. La justificación de la selección de PaddleOCR para optimización - -**Fuentes de datos utilizadas:** -- `ocr_benchmark_notebook.ipynb`: Código del benchmark -- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`: Resultados numéricos -- Documentación oficial de PaddleOCR diff --git a/docs/04_desarrollo_especifico.md b/docs/04_desarrollo_especifico.md new file mode 100644 index 0000000..e44430b --- /dev/null +++ b/docs/04_desarrollo_especifico.md @@ -0,0 +1,533 @@ +# Capítulo 4: Desarrollo Específico de la Contribución + +Este capítulo presenta el desarrollo completo del estudio comparativo y la optimización de hiperparámetros de sistemas OCR. Se estructura según el tipo de trabajo "Comparativa de soluciones" establecido por las instrucciones de UNIR: planteamiento de la comparativa (4.1), desarrollo de la comparativa (4.2), y discusión y análisis de resultados (4.3). + +## 4.1 Planteamiento de la Comparativa: Soluciones OCR + +### 4.1.1 Introducción + +Esta sección presenta los resultados del estudio comparativo realizado entre tres soluciones OCR de código abierto: EasyOCR, PaddleOCR y DocTR. Los experimentos fueron documentados en el notebook `ocr_benchmark_notebook.ipynb` del repositorio. El objetivo es identificar el modelo base más prometedor para la posterior fase de optimización de hiperparámetros. + +### 4.1.2 Configuración del Experimento + +#### Dataset de Evaluación + +Se utilizó el documento "Instrucciones para la redacción y elaboración del TFE" del Máster Universitario en Inteligencia Artificial de UNIR, ubicado en la carpeta `instructions/`. + +| Característica | Valor | +|----------------|-------| +| Número de páginas evaluadas | 5 (páginas 1-5 en benchmark inicial) | +| Formato | PDF digital (no escaneado) | +| Idioma | Español | +| Resolución de conversión | 300 DPI | + +#### Configuración de los Modelos + +Según el código en `ocr_benchmark_notebook.ipynb`: + +**EasyOCR**: +```python +easyocr_reader = easyocr.Reader(['es', 'en']) # Spanish and English +``` + +**PaddleOCR (PP-OCRv5)**: +```python +paddleocr_model = PaddleOCR( + text_detection_model_name="PP-OCRv5_server_det", + text_recognition_model_name="PP-OCRv5_server_rec", + use_doc_orientation_classify=False, + use_doc_unwarping=False, + use_textline_orientation=True, +) +``` +Versión utilizada: PaddleOCR 3.2.0 (según output del notebook) + +**DocTR**: +```python +doctr_model = ocr_predictor(det_arch="db_resnet50", reco_arch="sar_resnet31", pretrained=True) +``` + +#### Métricas de Evaluación + +Se utilizó la biblioteca `jiwer` para calcular CER y WER: +```python +from jiwer import wer, cer + +def evaluate_text(reference, prediction): + return {'WER': wer(reference, prediction), 'CER': cer(reference, prediction)} +``` + +### 4.1.3 Resultados del Benchmark + +#### Resultados de PaddleOCR (Datos del CSV) + +Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, se obtienen los siguientes resultados de PaddleOCR para las páginas 5-9 del documento: + +| Página | WER | CER | +|--------|-----|-----| +| 5 | 12.16% | 6.33% | +| 6 | 12.81% | 6.40% | +| 7 | 11.06% | 6.24% | +| 8 | 8.13% | 1.54% | +| 9 | 10.61% | 5.58% | + +**Promedio PaddleOCR (páginas 5-9):** +- CER medio: ~5.22% +- WER medio: ~10.95% + +#### Comparativa de Modelos + +Según la documentación del notebook `ocr_benchmark_notebook.ipynb`, los tres modelos evaluados representan diferentes paradigmas de OCR: + +| Modelo | Tipo | Componentes | Fortalezas Clave | +|--------|------|-------------|------------------| +| **EasyOCR** | End-to-end (det + rec) | DB + CRNN/Transformer | Ligero, fácil de usar, multilingüe | +| **PaddleOCR (PP-OCR)** | End-to-end (det + rec + cls) | DB + SRN/CRNN | Soporte multilingüe robusto, pipeline configurable | +| **DocTR** | End-to-end (det + rec) | DB/LinkNet + CRNN/SAR/VitSTR | Orientado a investigación, API limpia | + +#### Ejemplo de Salida OCR + +Del archivo CSV, un ejemplo de predicción de PaddleOCR para la página 8: + +> "Escribe siempre al menos un párrafo de introducción en cada capítulo o apartado, explicando de qué vas a tratar en esa sección. Evita que aparezcan dos encabezados de nivel consecutivos sin ningún texto entre medias. [...] En esta titulacióon se cita de acuerdo con la normativa Apa." + +**Errores observados en este ejemplo:** +- `titulacióon` en lugar de `titulación` (carácter duplicado) +- `Apa` en lugar de `APA` (capitalización) + +### 4.1.4 Justificación de la Selección de PaddleOCR + +#### Criterios de Selección + +Basándose en los resultados obtenidos y la documentación del benchmark: + +1. **Rendimiento**: PaddleOCR obtuvo CER entre 1.54% y 6.40% en las páginas evaluadas +2. **Configurabilidad**: PaddleOCR ofrece múltiples hiperparámetros ajustables: + - Umbrales de detección (`text_det_thresh`, `text_det_box_thresh`) + - Umbral de reconocimiento (`text_rec_score_thresh`) + - Componentes opcionales (`use_textline_orientation`, `use_doc_orientation_classify`, `use_doc_unwarping`) + +3. **Documentación oficial**: [PaddleOCR Documentation](https://www.paddleocr.ai/v3.0.0/en/version3.x/pipeline_usage/OCR.html) + +#### Decisión + +**Se selecciona PaddleOCR (PP-OCRv5)** para la fase de optimización debido a: +- Resultados iniciales prometedores (CER ~5%) +- Alta configurabilidad de hiperparámetros de inferencia +- Pipeline modular que permite experimentación + +### 4.1.5 Limitaciones del Benchmark + +1. **Tamaño reducido**: Solo 5 páginas evaluadas en el benchmark comparativo inicial +2. **Único tipo de documento**: Documentos académicos de UNIR únicamente +3. **Ground truth**: El texto de referencia se extrajo automáticamente del PDF, lo cual puede introducir errores en layouts complejos + +### 4.1.6 Resumen de la Sección + +Esta sección ha presentado: + +1. La configuración del benchmark según `ocr_benchmark_notebook.ipynb` +2. Los resultados cuantitativos de PaddleOCR del archivo CSV de resultados +3. La justificación de la selección de PaddleOCR para optimización + +**Fuentes de datos utilizadas:** +- `ocr_benchmark_notebook.ipynb`: Código del benchmark +- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`: Resultados numéricos +- Documentación oficial de PaddleOCR + +## 4.2 Desarrollo de la Comparativa: Optimización de Hiperparámetros + +### 4.2.1 Introducción + +Esta sección describe el proceso de optimización de hiperparámetros de PaddleOCR utilizando Ray Tune con el algoritmo de búsqueda Optuna. Los experimentos fueron implementados en el notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb` y los resultados se almacenaron en `src/raytune_paddle_subproc_results_20251207_192320.csv`. + +### 4.2.2 Configuración del Experimento + +#### Entorno de Ejecución + +Según los outputs del notebook: + +| Componente | Versión/Especificación | +|------------|------------------------| +| Python | 3.11.9 | +| PaddlePaddle | 3.2.2 | +| PaddleOCR | 3.3.2 | +| Ray | 2.52.1 | +| GPU | No disponible (CPU only) | + +#### Dataset + +Se utilizó un dataset estructurado en `src/dataset/` creado mediante el notebook `src/prepare_dataset.ipynb`: + +- **Estructura**: Carpetas con subcarpetas `img/` y `txt/` pareadas +- **Páginas evaluadas por trial**: 5 (páginas 5-10 del documento) +- **Gestión de datos**: Clase `ImageTextDataset` en `src/dataset_manager.py` + +#### Espacio de Búsqueda + +Según el código del notebook, se definió el siguiente espacio de búsqueda: + +```python +search_space = { + "use_doc_orientation_classify": tune.choice([True, False]), + "use_doc_unwarping": tune.choice([True, False]), + "textline_orientation": tune.choice([True, False]), + "text_det_thresh": tune.uniform(0.0, 0.7), + "text_det_box_thresh": tune.uniform(0.0, 0.7), + "text_det_unclip_ratio": tune.choice([0.0]), # Fijado + "text_rec_score_thresh": tune.uniform(0.0, 0.7), +} +``` + +**Descripción de parámetros** (según documentación de PaddleOCR): + +| Parámetro | Descripción | +|-----------|-------------| +| `use_doc_orientation_classify` | Clasificación de orientación del documento | +| `use_doc_unwarping` | Corrección de deformación del documento | +| `textline_orientation` | Clasificación de orientación de línea de texto | +| `text_det_thresh` | Umbral de detección de píxeles de texto | +| `text_det_box_thresh` | Umbral de caja de detección | +| `text_det_unclip_ratio` | Coeficiente de expansión (fijado en 0.0) | +| `text_rec_score_thresh` | Umbral de confianza de reconocimiento | + +#### Configuración de Ray Tune + +```python +tuner = tune.Tuner( + trainable_paddle_ocr, + tune_config=tune.TuneConfig( + metric="CER", + mode="min", + search_alg=OptunaSearch(), + num_samples=64, + max_concurrent_trials=2 + ), + run_config=air.RunConfig(verbose=2, log_to_file=False), + param_space=search_space +) +``` + +- **Métrica objetivo**: CER (minimizar) +- **Algoritmo de búsqueda**: Optuna (TPE - Tree-structured Parzen Estimator) +- **Número de trials**: 64 +- **Trials concurrentes**: 2 + +### 4.2.3 Resultados de la Optimización + +#### Estadísticas Descriptivas + +Del archivo CSV de resultados (`raytune_paddle_subproc_results_20251207_192320.csv`): + +| Estadística | CER | WER | Tiempo (s) | Tiempo/Página (s) | +|-------------|-----|-----|------------|-------------------| +| **count** | 64 | 64 | 64 | 64 | +| **mean** | 5.25% | 14.28% | 347.61 | 69.42 | +| **std** | 11.03% | 10.75% | 7.88 | 1.57 | +| **min** | 1.15% | 9.89% | 320.97 | 64.10 | +| **25%** | 1.20% | 10.04% | 344.24 | 68.76 | +| **50%** | 1.23% | 10.20% | 346.42 | 69.19 | +| **75%** | 4.03% | 13.20% | 350.14 | 69.93 | +| **max** | 51.61% | 59.45% | 368.57 | 73.63 | + +#### Mejor Configuración Encontrada + +Según el análisis del notebook: + +``` +Best CER: 0.011535 (1.15%) +Best WER: 0.098902 (9.89%) + +Configuración óptima: + textline_orientation: True + use_doc_orientation_classify: False + use_doc_unwarping: False + text_det_thresh: 0.4690 + text_det_box_thresh: 0.5412 + text_det_unclip_ratio: 0.0 + text_rec_score_thresh: 0.6350 +``` + +#### Análisis de Correlación + +Correlación de Pearson entre parámetros y métricas de error (del notebook): + +**Correlación con CER:** +| Parámetro | Correlación | +|-----------|-------------| +| CER | 1.000 | +| config/text_det_box_thresh | 0.226 | +| config/text_rec_score_thresh | -0.161 | +| **config/text_det_thresh** | **-0.523** | +| config/text_det_unclip_ratio | NaN | + +**Correlación con WER:** +| Parámetro | Correlación | +|-----------|-------------| +| WER | 1.000 | +| config/text_det_box_thresh | 0.227 | +| config/text_rec_score_thresh | -0.173 | +| **config/text_det_thresh** | **-0.521** | +| config/text_det_unclip_ratio | NaN | + +**Hallazgo clave**: El parámetro `text_det_thresh` muestra la correlación más fuerte (-0.52), indicando que valores más altos de este umbral tienden a reducir el error. + +#### Impacto del Parámetro textline_orientation + +Según el análisis del notebook, este parámetro booleano tiene el mayor impacto: + +| textline_orientation | CER Medio | WER Medio | +|---------------------|-----------|-----------| +| True | ~3.76% | ~12.73% | +| False | ~12.40% | ~21.71% | + +**Interpretación del notebook**: +> "7x better CER with textline_orientation=True. And the variance is much tighter — more reliable results. For Spanish business documents with mixed layouts (tables, headers, addresses), orientation classification helps PaddleOCR correctly order text lines." + +#### Análisis de Fallos + +Los trials con CER muy alto (>40%) se produjeron cuando: +- `text_det_thresh` < 0.1 (valores muy bajos) +- `textline_orientation = False` + +Ejemplo de trial con fallo catastrófico: +- CER: 51.61% +- WER: 59.45% +- Configuración: `text_det_thresh=0.017`, `textline_orientation=True` + +### 4.2.4 Comparación Baseline vs Optimizado + +#### Resultados sobre Dataset Completo (24 páginas) + +Del análisis final del notebook ejecutando sobre las 24 páginas: + +| Modelo | CER | WER | +|--------|-----|-----| +| PaddleOCR (Baseline) | 7.78% | 14.94% | +| PaddleOCR-HyperAdjust | 1.49% | 7.62% | + +#### Métricas de Mejora + +| Métrica | Baseline | Optimizado | Mejora Absoluta | Reducción Error | +|---------|----------|------------|-----------------|-----------------| +| CER | 7.78% | 1.49% | -6.29 pp | 80.9% | +| WER | 14.94% | 7.62% | -7.32 pp | 49.0% | + +#### Interpretación (del notebook) + +> "La optimización de hiperparámetros mejoró la precisión de caracteres de 92.2% a 98.5%, una ganancia de 6.3 puntos porcentuales. Aunque el baseline ya ofrecía resultados aceptables, la configuración optimizada reduce los errores residuales en un 80.9%." + +**Impacto práctico**: En un documento de 10,000 caracteres: +- Baseline: ~778 caracteres con error +- Optimizado: ~149 caracteres con error +- Diferencia: ~629 caracteres menos con errores + +### 4.2.5 Tiempo de Ejecución + +| Métrica | Valor | +|---------|-------| +| Tiempo total del experimento | ~6 horas (64 trials × ~6 min/trial) | +| Tiempo medio por trial | 367.72 segundos | +| Tiempo medio por página | 69.42 segundos | +| Total páginas procesadas | 64 trials × 5 páginas = 320 evaluaciones | + +### 4.2.6 Resumen de la Sección + +Esta sección ha presentado: + +1. **Configuración del experimento**: 64 trials con Ray Tune + Optuna sobre 7 hiperparámetros +2. **Resultados estadísticos**: CER medio 5.25%, CER mínimo 1.15% +3. **Hallazgos clave**: + - `textline_orientation=True` es crítico (reduce CER ~70%) + - `text_det_thresh` tiene correlación -0.52 con CER + - Valores bajos de `text_det_thresh` (<0.1) causan fallos catastróficos +4. **Mejora final**: CER reducido de 7.78% a 1.49% (reducción del 80.9%) + +**Fuentes de datos:** +- `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: Código del experimento +- `src/raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de 64 trials +- `src/paddle_ocr_tuning.py`: Script de evaluación + +## 4.3 Discusión y Análisis de Resultados + +### 4.3.1 Introducción + +Esta sección presenta un análisis consolidado de los resultados obtenidos en las fases de benchmark comparativo y optimización de hiperparámetros. Se discuten las implicaciones prácticas y se evalúa el cumplimiento de los objetivos planteados. + +### 4.3.2 Resumen de Resultados + +#### Resultados del Benchmark Comparativo + +Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, PaddleOCR con configuración inicial (`use_textline_orientation=True`) obtuvo los siguientes resultados en las páginas 5-9: + +| Página | WER | CER | +|--------|-----|-----| +| 5 | 12.16% | 6.33% | +| 6 | 12.81% | 6.40% | +| 7 | 11.06% | 6.24% | +| 8 | 8.13% | 1.54% | +| 9 | 10.61% | 5.58% | +| **Promedio** | **10.95%** | **5.22%** | + +#### Resultados de la Optimización con Ray Tune + +Del archivo `src/raytune_paddle_subproc_results_20251207_192320.csv` (64 trials): + +| Métrica | Valor | +|---------|-------| +| CER mínimo | 1.15% | +| CER medio | 5.25% | +| CER máximo | 51.61% | +| WER mínimo | 9.89% | +| WER medio | 14.28% | +| WER máximo | 59.45% | + +#### Comparación Final (Dataset Completo - 24 páginas) + +Resultados del notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: + +| Modelo | CER | Precisión Caracteres | WER | Precisión Palabras | +|--------|-----|---------------------|-----|-------------------| +| PaddleOCR (Baseline) | 7.78% | 92.22% | 14.94% | 85.06% | +| PaddleOCR-HyperAdjust | 1.49% | 98.51% | 7.62% | 92.38% | + +### 4.3.3 Análisis de Resultados + +#### Mejora Obtenida + +| Forma de Medición | Valor | +|-------------------|-------| +| Mejora en precisión de caracteres (absoluta) | +6.29 puntos porcentuales | +| Reducción del CER (relativa) | 80.9% | +| Mejora en precisión de palabras (absoluta) | +7.32 puntos porcentuales | +| Reducción del WER (relativa) | 49.0% | +| Precisión final de caracteres | 98.51% | + +#### Impacto de Hiperparámetros Individuales + +**Parámetro `textline_orientation`** + +Este parámetro booleano demostró ser el más influyente: + +| Valor | CER Medio | Impacto | +|-------|-----------|---------| +| True | ~3.76% | Rendimiento óptimo | +| False | ~12.40% | 3.3x peor | + +**Reducción del CER**: 69.7% cuando se habilita la clasificación de orientación de línea. + +**Parámetro `text_det_thresh`** + +Correlación con CER: **-0.523** (la más fuerte de los parámetros continuos) + +| Rango | Comportamiento | +|-------|----------------| +| < 0.1 | Fallos catastróficos (CER 40-50%) | +| 0.3 - 0.6 | Rendimiento óptimo | +| Valor óptimo | 0.4690 | + +**Parámetros con menor impacto** + +| Parámetro | Correlación con CER | Valor óptimo | +|-----------|---------------------|--------------| +| text_det_box_thresh | +0.226 | 0.5412 | +| text_rec_score_thresh | -0.161 | 0.6350 | +| use_doc_orientation_classify | - | False | +| use_doc_unwarping | - | False | + +#### Configuración Óptima Final + +```python +config_optimizada = { + "textline_orientation": True, # CRÍTICO + "use_doc_orientation_classify": False, + "use_doc_unwarping": False, + "text_det_thresh": 0.4690, # Correlación -0.52 + "text_det_box_thresh": 0.5412, + "text_det_unclip_ratio": 0.0, + "text_rec_score_thresh": 0.6350, +} +``` + +### 4.3.4 Discusión + +#### Hallazgos Principales + +1. **Importancia de la clasificación de orientación de línea**: El parámetro `textline_orientation=True` es el factor más determinante. Esto tiene sentido para documentos con layouts mixtos (tablas, encabezados, direcciones) donde el orden correcto de las líneas de texto es crucial. + +2. **Umbral de detección crítico**: El parámetro `text_det_thresh` presenta un umbral mínimo efectivo (~0.1). Valores inferiores generan demasiados falsos positivos en la detección, corrompiendo el reconocimiento posterior. + +3. **Componentes opcionales innecesarios**: Para documentos académicos digitales (no escaneados), los módulos de corrección de orientación de documento (`use_doc_orientation_classify`) y corrección de deformación (`use_doc_unwarping`) no aportan mejora e incluso pueden introducir overhead. + +#### Interpretación de la Correlación Negativa + +La correlación negativa de `text_det_thresh` (-0.52) con el CER indica que: +- Umbrales más altos filtran detecciones de baja confianza +- Esto reduce falsos positivos que generan texto erróneo +- El reconocimiento es más preciso con menos regiones pero más confiables + +#### Limitaciones de los Resultados + +1. **Generalización**: Los resultados se obtuvieron sobre documentos de un único tipo (instrucciones académicas UNIR). La configuración óptima puede variar para otros tipos de documentos. + +2. **Ground truth automático**: El texto de referencia se extrajo programáticamente del PDF. En layouts complejos, esto puede introducir errores en la evaluación. + +3. **Ejecución en CPU**: Los tiempos reportados (~69s/página) corresponden a ejecución en CPU. Con GPU, los tiempos serían significativamente menores. + +4. **Parámetro fijo**: `text_det_unclip_ratio` permaneció fijo en 0.0 durante todo el experimento por decisión de diseño. + +#### Comparación con Objetivos + +| Objetivo | Meta | Resultado | Cumplimiento | +|----------|------|-----------|--------------| +| OE1: Comparar soluciones OCR | Evaluar EasyOCR, PaddleOCR, DocTR | PaddleOCR seleccionado | ✓ | +| OE2: Preparar dataset | Construir dataset estructurado | Dataset de 24 páginas | ✓ | +| OE3: Identificar hiperparámetros críticos | Analizar correlaciones | `textline_orientation` y `text_det_thresh` identificados | ✓ | +| OE4: Optimizar con Ray Tune | Mínimo 50 configuraciones | 64 trials ejecutados | ✓ | +| OE5: Validar configuración | Documentar mejora | CER 7.78% → 1.49% | ✓ | +| **Objetivo General** | CER < 2% | CER = 1.49% | ✓ | + +### 4.3.5 Implicaciones Prácticas + +#### Recomendaciones de Configuración + +Para documentos académicos en español similares a los evaluados: + +1. **Obligatorio**: `use_textline_orientation=True` +2. **Recomendado**: `text_det_thresh` entre 0.4 y 0.5 +3. **Opcional**: `text_det_box_thresh` ~0.5, `text_rec_score_thresh` >0.6 +4. **No recomendado**: Habilitar `use_doc_orientation_classify` o `use_doc_unwarping` para documentos digitales + +#### Impacto Cuantitativo + +En un documento típico de 10,000 caracteres: + +| Configuración | Errores estimados | +|---------------|-------------------| +| Baseline | ~778 caracteres | +| Optimizada | ~149 caracteres | +| **Reducción** | **629 caracteres menos con errores** | + +#### Aplicabilidad + +Esta metodología de optimización es aplicable cuando: +- No se dispone de recursos GPU para fine-tuning +- El modelo preentrenado ya tiene soporte para el idioma objetivo +- Se busca mejorar rendimiento sin reentrenar + +### 4.3.6 Resumen de la Sección + +Esta sección ha presentado: + +1. Los resultados consolidados del benchmark y la optimización +2. El análisis del impacto de cada hiperparámetro +3. La configuración óptima identificada +4. La discusión de limitaciones y aplicabilidad +5. El cumplimiento de los objetivos planteados + +**Resultado principal**: Se logró reducir el CER del 7.78% al 1.49% (mejora del 80.9%) mediante optimización de hiperparámetros, cumpliendo el objetivo de alcanzar CER < 2%. + +**Fuentes de datos:** +- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` +- `src/raytune_paddle_subproc_results_20251207_192320.csv` +- `src/paddle_ocr_fine_tune_unir_raytune.ipynb` diff --git a/docs/07_conclusiones_trabajo_futuro.md b/docs/05_conclusiones_trabajo_futuro.md similarity index 88% rename from docs/07_conclusiones_trabajo_futuro.md rename to docs/05_conclusiones_trabajo_futuro.md index 2865bcf..2dc3944 100644 --- a/docs/07_conclusiones_trabajo_futuro.md +++ b/docs/05_conclusiones_trabajo_futuro.md @@ -1,8 +1,8 @@ -# Capítulo 7: Conclusiones y Trabajo Futuro +# Capítulo 5: Conclusiones y Trabajo Futuro -## 7.1 Conclusiones +## 5.1 Conclusiones -### 7.1.1 Conclusiones Generales +### 5.1.1 Conclusiones Generales Este Trabajo Fin de Máster ha demostrado que es posible mejorar significativamente el rendimiento de sistemas OCR preentrenados mediante optimización sistemática de hiperparámetros, sin requerir fine-tuning ni recursos GPU dedicados. @@ -12,7 +12,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document |---------|----------|-----------| | CER | < 2% | **1.49%** | -### 7.1.2 Conclusiones Específicas +### 5.1.2 Conclusiones Específicas **Respecto a OE1 (Comparativa de soluciones OCR)**: - Se evaluaron tres soluciones OCR de código abierto: EasyOCR, PaddleOCR (PP-OCRv5) y DocTR @@ -39,7 +39,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document - La mejora obtenida fue del 80.9% en reducción del CER (7.78% → 1.49%) - La precisión de caracteres alcanzó el 98.51% -### 7.1.3 Hallazgos Clave +### 5.1.3 Hallazgos Clave 1. **Arquitectura sobre umbrales**: Un único parámetro booleano (`textline_orientation`) tiene más impacto que todos los umbrales continuos combinados. @@ -49,7 +49,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Optimización sin fine-tuning**: Se puede mejorar significativamente el rendimiento de modelos preentrenados mediante ajuste de hiperparámetros de inferencia. -## 7.2 Contribuciones del Trabajo +### 5.1.4 Contribuciones del Trabajo 1. **Metodología reproducible**: Se documenta un proceso completo de optimización de hiperparámetros OCR con Ray Tune + Optuna. @@ -59,7 +59,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Código fuente**: Todo el código está disponible en el repositorio GitHub para reproducción y extensión. -## 7.3 Limitaciones del Trabajo +### 5.1.5 Limitaciones del Trabajo 1. **Tipo de documento único**: Los experimentos se realizaron únicamente sobre documentos académicos de UNIR. La generalización a otros tipos de documentos requiere validación adicional. @@ -71,9 +71,9 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 5. **Parámetro no explorado**: `text_det_unclip_ratio` permaneció fijo en 0.0 durante todo el experimento. -## 7.4 Trabajo Futuro +## 5.2 Líneas de Trabajo Futuro -### 7.4.1 Extensiones Inmediatas +### 5.2.1 Extensiones Inmediatas 1. **Validación cruzada**: Evaluar la configuración óptima en otros tipos de documentos en español (facturas, formularios, textos manuscritos). @@ -83,7 +83,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Evaluación con GPU**: Medir tiempos de inferencia con aceleración GPU. -### 7.4.2 Líneas de Investigación +### 5.2.2 Líneas de Investigación 1. **Transfer learning de hiperparámetros**: Investigar si las configuraciones óptimas para un tipo de documento transfieren a otros dominios. @@ -93,7 +93,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Comparación con fine-tuning**: Cuantificar la brecha de rendimiento entre optimización de hiperparámetros y fine-tuning real. -### 7.4.3 Aplicaciones Prácticas +### 5.2.3 Aplicaciones Prácticas 1. **Herramienta de configuración automática**: Desarrollar una herramienta que determine automáticamente la configuración óptima para un nuevo tipo de documento. @@ -101,7 +101,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 3. **Benchmark público**: Publicar un benchmark de OCR para documentos en español que facilite la comparación de soluciones. -## 7.5 Reflexión Final +### 5.2.4 Reflexión Final Este trabajo demuestra que, en un contexto de recursos limitados donde el fine-tuning de modelos de deep learning no es viable, la optimización de hiperparámetros representa una alternativa práctica y efectiva para mejorar sistemas OCR. @@ -109,18 +109,3 @@ La metodología propuesta es reproducible, los resultados son cuantificables, y El código fuente y los datos experimentales están disponibles públicamente para facilitar la reproducción y extensión de este trabajo. ---- - -## Referencias - -**Herramientas y bibliotecas utilizadas:** - -- PaddleOCR: https://github.com/PaddlePaddle/PaddleOCR -- Ray Tune: https://docs.ray.io/en/latest/tune/index.html -- Optuna: https://optuna.org/ -- PyMuPDF: https://pymupdf.readthedocs.io/ -- jiwer: https://github.com/jitsi/jiwer - -**Repositorio del proyecto:** - -- GitHub: https://seryus.ddns.net/unir/MastersThesis diff --git a/docs/05_optimizacion_hiperparametros.md b/docs/05_optimizacion_hiperparametros.md deleted file mode 100644 index 5b7024b..0000000 --- a/docs/05_optimizacion_hiperparametros.md +++ /dev/null @@ -1,212 +0,0 @@ -# Capítulo 5: Optimización de Hiperparámetros - -## 5.1 Introducción - -Este capítulo describe el proceso de optimización de hiperparámetros de PaddleOCR utilizando Ray Tune con el algoritmo de búsqueda Optuna. Los experimentos fueron implementados en el notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb` y los resultados se almacenaron en `src/raytune_paddle_subproc_results_20251207_192320.csv`. - -## 5.2 Configuración del Experimento - -### 5.2.1 Entorno de Ejecución - -Según los outputs del notebook: - -| Componente | Versión/Especificación | -|------------|------------------------| -| Python | 3.11.9 | -| PaddlePaddle | 3.2.2 | -| PaddleOCR | 3.3.2 | -| Ray | 2.52.1 | -| GPU | No disponible (CPU only) | - -### 5.2.2 Dataset - -Se utilizó un dataset estructurado en `src/dataset/` creado mediante el notebook `src/prepare_dataset.ipynb`: - -- **Estructura**: Carpetas con subcarpetas `img/` y `txt/` pareadas -- **Páginas evaluadas por trial**: 5 (páginas 5-10 del documento) -- **Gestión de datos**: Clase `ImageTextDataset` en `src/dataset_manager.py` - -### 5.2.3 Espacio de Búsqueda - -Según el código del notebook, se definió el siguiente espacio de búsqueda: - -```python -search_space = { - "use_doc_orientation_classify": tune.choice([True, False]), - "use_doc_unwarping": tune.choice([True, False]), - "textline_orientation": tune.choice([True, False]), - "text_det_thresh": tune.uniform(0.0, 0.7), - "text_det_box_thresh": tune.uniform(0.0, 0.7), - "text_det_unclip_ratio": tune.choice([0.0]), # Fijado - "text_rec_score_thresh": tune.uniform(0.0, 0.7), -} -``` - -**Descripción de parámetros** (según documentación de PaddleOCR): - -| Parámetro | Descripción | -|-----------|-------------| -| `use_doc_orientation_classify` | Clasificación de orientación del documento | -| `use_doc_unwarping` | Corrección de deformación del documento | -| `textline_orientation` | Clasificación de orientación de línea de texto | -| `text_det_thresh` | Umbral de detección de píxeles de texto | -| `text_det_box_thresh` | Umbral de caja de detección | -| `text_det_unclip_ratio` | Coeficiente de expansión (fijado en 0.0) | -| `text_rec_score_thresh` | Umbral de confianza de reconocimiento | - -### 5.2.4 Configuración de Ray Tune - -```python -tuner = tune.Tuner( - trainable_paddle_ocr, - tune_config=tune.TuneConfig( - metric="CER", - mode="min", - search_alg=OptunaSearch(), - num_samples=64, - max_concurrent_trials=2 - ), - run_config=air.RunConfig(verbose=2, log_to_file=False), - param_space=search_space -) -``` - -- **Métrica objetivo**: CER (minimizar) -- **Algoritmo de búsqueda**: Optuna (TPE - Tree-structured Parzen Estimator) -- **Número de trials**: 64 -- **Trials concurrentes**: 2 - -## 5.3 Resultados de la Optimización - -### 5.3.1 Estadísticas Descriptivas - -Del archivo CSV de resultados (`raytune_paddle_subproc_results_20251207_192320.csv`): - -| Estadística | CER | WER | Tiempo (s) | Tiempo/Página (s) | -|-------------|-----|-----|------------|-------------------| -| **count** | 64 | 64 | 64 | 64 | -| **mean** | 5.25% | 14.28% | 347.61 | 69.42 | -| **std** | 11.03% | 10.75% | 7.88 | 1.57 | -| **min** | 1.15% | 9.89% | 320.97 | 64.10 | -| **25%** | 1.20% | 10.04% | 344.24 | 68.76 | -| **50%** | 1.23% | 10.20% | 346.42 | 69.19 | -| **75%** | 4.03% | 13.20% | 350.14 | 69.93 | -| **max** | 51.61% | 59.45% | 368.57 | 73.63 | - -### 5.3.2 Mejor Configuración Encontrada - -Según el análisis del notebook: - -``` -Best CER: 0.011535 (1.15%) -Best WER: 0.098902 (9.89%) - -Configuración óptima: - textline_orientation: True - use_doc_orientation_classify: False - use_doc_unwarping: False - text_det_thresh: 0.4690 - text_det_box_thresh: 0.5412 - text_det_unclip_ratio: 0.0 - text_rec_score_thresh: 0.6350 -``` - -### 5.3.3 Análisis de Correlación - -Correlación de Pearson entre parámetros y métricas de error (del notebook): - -**Correlación con CER:** -| Parámetro | Correlación | -|-----------|-------------| -| CER | 1.000 | -| config/text_det_box_thresh | 0.226 | -| config/text_rec_score_thresh | -0.161 | -| **config/text_det_thresh** | **-0.523** | -| config/text_det_unclip_ratio | NaN | - -**Correlación con WER:** -| Parámetro | Correlación | -|-----------|-------------| -| WER | 1.000 | -| config/text_det_box_thresh | 0.227 | -| config/text_rec_score_thresh | -0.173 | -| **config/text_det_thresh** | **-0.521** | -| config/text_det_unclip_ratio | NaN | - -**Hallazgo clave**: El parámetro `text_det_thresh` muestra la correlación más fuerte (-0.52), indicando que valores más altos de este umbral tienden a reducir el error. - -### 5.3.4 Impacto del Parámetro textline_orientation - -Según el análisis del notebook, este parámetro booleano tiene el mayor impacto: - -| textline_orientation | CER Medio | WER Medio | -|---------------------|-----------|-----------| -| True | ~3.76% | ~12.73% | -| False | ~12.40% | ~21.71% | - -**Interpretación del notebook**: -> "7x better CER with textline_orientation=True. And the variance is much tighter — more reliable results. For Spanish business documents with mixed layouts (tables, headers, addresses), orientation classification helps PaddleOCR correctly order text lines." - -### 5.3.5 Análisis de Fallos - -Los trials con CER muy alto (>40%) se produjeron cuando: -- `text_det_thresh` < 0.1 (valores muy bajos) -- `textline_orientation = False` - -Ejemplo de trial con fallo catastrófico: -- CER: 51.61% -- WER: 59.45% -- Configuración: `text_det_thresh=0.017`, `textline_orientation=True` - -## 5.4 Comparación Baseline vs Optimizado - -### 5.4.1 Resultados sobre Dataset Completo (24 páginas) - -Del análisis final del notebook ejecutando sobre las 24 páginas: - -| Modelo | CER | WER | -|--------|-----|-----| -| PaddleOCR (Baseline) | 7.78% | 14.94% | -| PaddleOCR-HyperAdjust | 1.49% | 7.62% | - -### 5.4.2 Métricas de Mejora - -| Métrica | Baseline | Optimizado | Mejora Absoluta | Reducción Error | -|---------|----------|------------|-----------------|-----------------| -| CER | 7.78% | 1.49% | -6.29 pp | 80.9% | -| WER | 14.94% | 7.62% | -7.32 pp | 49.0% | - -### 5.4.3 Interpretación (del notebook) - -> "La optimización de hiperparámetros mejoró la precisión de caracteres de 92.2% a 98.5%, una ganancia de 6.3 puntos porcentuales. Aunque el baseline ya ofrecía resultados aceptables, la configuración optimizada reduce los errores residuales en un 80.9%." - -**Impacto práctico**: En un documento de 10,000 caracteres: -- Baseline: ~778 caracteres con error -- Optimizado: ~149 caracteres con error -- Diferencia: ~629 caracteres menos con errores - -## 5.5 Tiempo de Ejecución - -| Métrica | Valor | -|---------|-------| -| Tiempo total del experimento | ~6 horas (64 trials × ~6 min/trial) | -| Tiempo medio por trial | 367.72 segundos | -| Tiempo medio por página | 69.42 segundos | -| Total páginas procesadas | 64 trials × 5 páginas = 320 evaluaciones | - -## 5.6 Resumen del Capítulo - -Este capítulo ha presentado: - -1. **Configuración del experimento**: 64 trials con Ray Tune + Optuna sobre 7 hiperparámetros -2. **Resultados estadísticos**: CER medio 5.25%, CER mínimo 1.15% -3. **Hallazgos clave**: - - `textline_orientation=True` es crítico (reduce CER ~70%) - - `text_det_thresh` tiene correlación -0.52 con CER - - Valores bajos de `text_det_thresh` (<0.1) causan fallos catastróficos -4. **Mejora final**: CER reducido de 7.78% a 1.49% (reducción del 80.9%) - -**Fuentes de datos:** -- `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: Código del experimento -- `src/raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de 64 trials -- `src/paddle_ocr_tuning.py`: Script de evaluación diff --git a/docs/06_referencias_bibliograficas.md b/docs/06_referencias_bibliograficas.md new file mode 100644 index 0000000..6596bd4 --- /dev/null +++ b/docs/06_referencias_bibliograficas.md @@ -0,0 +1,67 @@ +# Referencias Bibliográficas + +## Referencias + +Akiba, T., Sano, S., Yanase, T., Ohta, T., & Koyama, M. (2019). Optuna: A next-generation hyperparameter optimization framework. *Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining*, 2623-2631. https://doi.org/10.1145/3292500.3330701 + +Baek, Y., Lee, B., Han, D., Yun, S., & Lee, H. (2019). Character region awareness for text detection. *Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition*, 9365-9374. https://doi.org/10.1109/CVPR.2019.00959 + +Bergstra, J., & Bengio, Y. (2012). Random search for hyper-parameter optimization. *Journal of Machine Learning Research*, 13(1), 281-305. https://jmlr.org/papers/v13/bergstra12a.html + +Bergstra, J., Bardenet, R., Bengio, Y., & Kégl, B. (2011). Algorithms for hyper-parameter optimization. *Advances in Neural Information Processing Systems*, 24, 2546-2554. https://papers.nips.cc/paper/2011/hash/86e8f7ab32cfd12577bc2619bc635690-Abstract.html + +Cohen, J. (1988). *Statistical power analysis for the behavioral sciences* (2nd ed.). Lawrence Erlbaum Associates. + +Doran, G. T. (1981). There's a S.M.A.R.T. way to write management's goals and objectives. *Management Review*, 70(11), 35-36. + +Du, Y., Li, C., Guo, R., Yin, X., Liu, W., Zhou, J., Bai, Y., Yu, Z., Yang, Y., Dang, Q., & Wang, H. (2020). PP-OCR: A practical ultra lightweight OCR system. *arXiv preprint arXiv:2009.09941*. https://arxiv.org/abs/2009.09941 + +Du, Y., Li, C., Guo, R., Cui, C., Liu, W., Zhou, J., Lu, B., Yang, Y., Liu, Q., Hu, X., Yu, D., & Wang, H. (2023). PP-OCRv4: Mobile scene text detection and recognition. *arXiv preprint arXiv:2310.05930*. https://arxiv.org/abs/2310.05930 + +Feurer, M., & Hutter, F. (2019). Hyperparameter optimization. In F. Hutter, L. Kotthoff, & J. Vanschoren (Eds.), *Automated machine learning: Methods, systems, challenges* (pp. 3-33). Springer. https://doi.org/10.1007/978-3-030-05318-5_1 + +He, P., Huang, W., Qiao, Y., Loy, C. C., & Tang, X. (2016). Reading scene text in deep convolutional sequences. *Proceedings of the AAAI Conference on Artificial Intelligence*, 30(1), 3501-3508. https://doi.org/10.1609/aaai.v30i1.10291 + +JaidedAI. (2020). EasyOCR: Ready-to-use OCR with 80+ supported languages. GitHub. https://github.com/JaidedAI/EasyOCR + +Liang, J., Doermann, D., & Li, H. (2005). Camera-based analysis of text and documents: A survey. *International Journal of Document Analysis and Recognition*, 7(2), 84-104. https://doi.org/10.1007/s10032-004-0138-z + +Liao, M., Wan, Z., Yao, C., Chen, K., & Bai, X. (2020). Real-time scene text detection with differentiable binarization. *Proceedings of the AAAI Conference on Artificial Intelligence*, 34(07), 11474-11481. https://doi.org/10.1609/aaai.v34i07.6812 + +Liaw, R., Liang, E., Nishihara, R., Moritz, P., Gonzalez, J. E., & Stoica, I. (2018). Tune: A research platform for distributed model selection and training. *arXiv preprint arXiv:1807.05118*. https://arxiv.org/abs/1807.05118 + +Mindee. (2021). DocTR: Document Text Recognition. GitHub. https://github.com/mindee/doctr + +Moritz, P., Nishihara, R., Wang, S., Tumanov, A., Liaw, R., Liang, E., Elibol, M., Yang, Z., Paul, W., Jordan, M. I., & Stoica, I. (2018). Ray: A distributed framework for emerging AI applications. *13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18)*, 561-577. https://www.usenix.org/conference/osdi18/presentation/moritz + +Morris, A. C., Maier, V., & Green, P. D. (2004). From WER and RIL to MER and WIL: Improved evaluation measures for connected speech recognition. *Eighth International Conference on Spoken Language Processing*. https://doi.org/10.21437/Interspeech.2004-668 + +PaddlePaddle. (2024). PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle. GitHub. https://github.com/PaddlePaddle/PaddleOCR + +Pearson, K. (1895). Notes on regression and inheritance in the case of two parents. *Proceedings of the Royal Society of London*, 58, 240-242. https://doi.org/10.1098/rspl.1895.0041 + +PyMuPDF. (2024). PyMuPDF documentation. https://pymupdf.readthedocs.io/ + +Shi, B., Bai, X., & Yao, C. (2016). An end-to-end trainable neural network for image-based sequence recognition and its application to scene text recognition. *IEEE Transactions on Pattern Analysis and Machine Intelligence*, 39(11), 2298-2304. https://doi.org/10.1109/TPAMI.2016.2646371 + +Smith, R. (2007). An overview of the Tesseract OCR engine. *Ninth International Conference on Document Analysis and Recognition (ICDAR 2007)*, 2, 629-633. https://doi.org/10.1109/ICDAR.2007.4376991 + +Zhou, X., Yao, C., Wen, H., Wang, Y., Zhou, S., He, W., & Liang, J. (2017). EAST: An efficient and accurate scene text detector. *Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*, 5551-5560. https://doi.org/10.1109/CVPR.2017.283 + +Zoph, B., & Le, Q. V. (2017). Neural architecture search with reinforcement learning. *International Conference on Learning Representations (ICLR)*. https://arxiv.org/abs/1611.01578 + +--- + +## Herramientas y Bibliotecas Utilizadas + +- **PaddleOCR**: https://github.com/PaddlePaddle/PaddleOCR +- **Ray Tune**: https://docs.ray.io/en/latest/tune/index.html +- **Optuna**: https://optuna.org/ +- **PyMuPDF**: https://pymupdf.readthedocs.io/ +- **jiwer**: https://github.com/jitsi/jiwer + +--- + +## Repositorio del Proyecto + +- **GitHub**: https://seryus.ddns.net/unir/MastersThesis diff --git a/docs/06_resultados_discusion.md b/docs/06_resultados_discusion.md deleted file mode 100644 index eafbebc..0000000 --- a/docs/06_resultados_discusion.md +++ /dev/null @@ -1,183 +0,0 @@ -# Capítulo 6: Resultados y Discusión - -## 6.1 Introducción - -Este capítulo presenta un análisis consolidado de los resultados obtenidos en las fases de benchmark comparativo y optimización de hiperparámetros. Se discuten las implicaciones prácticas y se evalúa el cumplimiento de los objetivos planteados. - -## 6.2 Resumen de Resultados - -### 6.2.1 Resultados del Benchmark Comparativo - -Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, PaddleOCR con configuración inicial (`use_textline_orientation=True`) obtuvo los siguientes resultados en las páginas 5-9: - -| Página | WER | CER | -|--------|-----|-----| -| 5 | 12.16% | 6.33% | -| 6 | 12.81% | 6.40% | -| 7 | 11.06% | 6.24% | -| 8 | 8.13% | 1.54% | -| 9 | 10.61% | 5.58% | -| **Promedio** | **10.95%** | **5.22%** | - -### 6.2.2 Resultados de la Optimización con Ray Tune - -Del archivo `src/raytune_paddle_subproc_results_20251207_192320.csv` (64 trials): - -| Métrica | Valor | -|---------|-------| -| CER mínimo | 1.15% | -| CER medio | 5.25% | -| CER máximo | 51.61% | -| WER mínimo | 9.89% | -| WER medio | 14.28% | -| WER máximo | 59.45% | - -### 6.2.3 Comparación Final (Dataset Completo - 24 páginas) - -Resultados del notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: - -| Modelo | CER | Precisión Caracteres | WER | Precisión Palabras | -|--------|-----|---------------------|-----|-------------------| -| PaddleOCR (Baseline) | 7.78% | 92.22% | 14.94% | 85.06% | -| PaddleOCR-HyperAdjust | 1.49% | 98.51% | 7.62% | 92.38% | - -## 6.3 Análisis de Resultados - -### 6.3.1 Mejora Obtenida - -| Forma de Medición | Valor | -|-------------------|-------| -| Mejora en precisión de caracteres (absoluta) | +6.29 puntos porcentuales | -| Reducción del CER (relativa) | 80.9% | -| Mejora en precisión de palabras (absoluta) | +7.32 puntos porcentuales | -| Reducción del WER (relativa) | 49.0% | -| Precisión final de caracteres | 98.51% | - -### 6.3.2 Impacto de Hiperparámetros Individuales - -#### Parámetro `textline_orientation` - -Este parámetro booleano demostró ser el más influyente: - -| Valor | CER Medio | Impacto | -|-------|-----------|---------| -| True | ~3.76% | Rendimiento óptimo | -| False | ~12.40% | 3.3x peor | - -**Reducción del CER**: 69.7% cuando se habilita la clasificación de orientación de línea. - -#### Parámetro `text_det_thresh` - -Correlación con CER: **-0.523** (la más fuerte de los parámetros continuos) - -| Rango | Comportamiento | -|-------|----------------| -| < 0.1 | Fallos catastróficos (CER 40-50%) | -| 0.3 - 0.6 | Rendimiento óptimo | -| Valor óptimo | 0.4690 | - -#### Parámetros con menor impacto - -| Parámetro | Correlación con CER | Valor óptimo | -|-----------|---------------------|--------------| -| text_det_box_thresh | +0.226 | 0.5412 | -| text_rec_score_thresh | -0.161 | 0.6350 | -| use_doc_orientation_classify | - | False | -| use_doc_unwarping | - | False | - -### 6.3.3 Configuración Óptima Final - -```python -config_optimizada = { - "textline_orientation": True, # CRÍTICO - "use_doc_orientation_classify": False, - "use_doc_unwarping": False, - "text_det_thresh": 0.4690, # Correlación -0.52 - "text_det_box_thresh": 0.5412, - "text_det_unclip_ratio": 0.0, - "text_rec_score_thresh": 0.6350, -} -``` - -## 6.4 Discusión - -### 6.4.1 Hallazgos Principales - -1. **Importancia de la clasificación de orientación de línea**: El parámetro `textline_orientation=True` es el factor más determinante. Esto tiene sentido para documentos con layouts mixtos (tablas, encabezados, direcciones) donde el orden correcto de las líneas de texto es crucial. - -2. **Umbral de detección crítico**: El parámetro `text_det_thresh` presenta un umbral mínimo efectivo (~0.1). Valores inferiores generan demasiados falsos positivos en la detección, corrompiendo el reconocimiento posterior. - -3. **Componentes opcionales innecesarios**: Para documentos académicos digitales (no escaneados), los módulos de corrección de orientación de documento (`use_doc_orientation_classify`) y corrección de deformación (`use_doc_unwarping`) no aportan mejora e incluso pueden introducir overhead. - -### 6.4.2 Interpretación de la Correlación Negativa - -La correlación negativa de `text_det_thresh` (-0.52) con el CER indica que: -- Umbrales más altos filtran detecciones de baja confianza -- Esto reduce falsos positivos que generan texto erróneo -- El reconocimiento es más preciso con menos regiones pero más confiables - -### 6.4.3 Limitaciones de los Resultados - -1. **Generalización**: Los resultados se obtuvieron sobre documentos de un único tipo (instrucciones académicas UNIR). La configuración óptima puede variar para otros tipos de documentos. - -2. **Ground truth automático**: El texto de referencia se extrajo programáticamente del PDF. En layouts complejos, esto puede introducir errores en la evaluación. - -3. **Ejecución en CPU**: Los tiempos reportados (~69s/página) corresponden a ejecución en CPU. Con GPU, los tiempos serían significativamente menores. - -4. **Parámetro fijo**: `text_det_unclip_ratio` permaneció fijo en 0.0 durante todo el experimento por decisión de diseño. - -### 6.4.4 Comparación con Objetivos - -| Objetivo | Meta | Resultado | Cumplimiento | -|----------|------|-----------|--------------| -| OE1: Comparar soluciones OCR | Evaluar EasyOCR, PaddleOCR, DocTR | PaddleOCR seleccionado | ✓ | -| OE2: Preparar dataset | Construir dataset estructurado | Dataset de 24 páginas | ✓ | -| OE3: Identificar hiperparámetros críticos | Analizar correlaciones | `textline_orientation` y `text_det_thresh` identificados | ✓ | -| OE4: Optimizar con Ray Tune | Mínimo 50 configuraciones | 64 trials ejecutados | ✓ | -| OE5: Validar configuración | Documentar mejora | CER 7.78% → 1.49% | ✓ | -| **Objetivo General** | CER < 2% | CER = 1.49% | ✓ | - -## 6.5 Implicaciones Prácticas - -### 6.5.1 Recomendaciones de Configuración - -Para documentos académicos en español similares a los evaluados: - -1. **Obligatorio**: `use_textline_orientation=True` -2. **Recomendado**: `text_det_thresh` entre 0.4 y 0.5 -3. **Opcional**: `text_det_box_thresh` ~0.5, `text_rec_score_thresh` >0.6 -4. **No recomendado**: Habilitar `use_doc_orientation_classify` o `use_doc_unwarping` para documentos digitales - -### 6.5.2 Impacto Cuantitativo - -En un documento típico de 10,000 caracteres: - -| Configuración | Errores estimados | -|---------------|-------------------| -| Baseline | ~778 caracteres | -| Optimizada | ~149 caracteres | -| **Reducción** | **629 caracteres menos con errores** | - -### 6.5.3 Aplicabilidad - -Esta metodología de optimización es aplicable cuando: -- No se dispone de recursos GPU para fine-tuning -- El modelo preentrenado ya tiene soporte para el idioma objetivo -- Se busca mejorar rendimiento sin reentrenar - -## 6.6 Resumen del Capítulo - -Este capítulo ha presentado: - -1. Los resultados consolidados del benchmark y la optimización -2. El análisis del impacto de cada hiperparámetro -3. La configuración óptima identificada -4. La discusión de limitaciones y aplicabilidad -5. El cumplimiento de los objetivos planteados - -**Resultado principal**: Se logró reducir el CER del 7.78% al 1.49% (mejora del 80.9%) mediante optimización de hiperparámetros, cumpliendo el objetivo de alcanzar CER < 2%. - -**Fuentes de datos:** -- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` -- `src/raytune_paddle_subproc_results_20251207_192320.csv` -- `src/paddle_ocr_fine_tune_unir_raytune.ipynb` diff --git a/instructions/plantilla_individual.pdf b/instructions/plantilla_individual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3e4a34fb4b7c70d9ec37d8fc252743beefa480b1 GIT binary patch literal 215733 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

k_ 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 literal 0 HcmV?d00001