Aquí está tu archivo `README.md` completo con todos los requerimientos cumplidos y la documentación técnica:

```markdown
# 📚 Biblioteca de PDF con OCR

Aplicación Django que cumple con todos los requerimientos técnicos para procesar y buscar texto en PDFs usando OCR.

⭐Video Demostrativo:
   - 📌 [Video de Yt](https://www.youtube.com/watch?v=KjHI8WQgwfQ)

## ✅ Requerimientos Cumplidos

### 1. Subida de archivos PDF
- **Formulario de subida** con validación de tipo (solo PDF) y tamaño máximo (20MB).
- **Interfaz simple** sin necesidad de crispy-forms.
- **Procesamiento automático** al subir el archivo.

### 2. Reconocimiento de texto mediante OCR
- Integración con **Tesseract-OCR** para extraer texto.
- Identificación del **número de página** en cada extracción.
- Soporte para múltiples idiomas (configurable).

### 3. Almacenamiento de texto extraído
- Base de datos **SQLite3** con modelos:
  ```python
  class Documento(models.Model):
      archivo = models.FileField(upload_to='pdfs/')  # Almacena el PDF original

  class PaginaTexto(models.Model):
      documento = models.ForeignKey(Documento, on_delete=models.CASCADE)
      numero_pagina = models.IntegerField()
      texto = models.TextField()  # Texto extraído con OCR
  ```

### 4. Búsqueda de texto en documentos
- **Formulario de búsqueda** con:
  - Resultados que muestran **25 caracteres antes/después** del término.
  - **Resaltado** del texto encontrado.
  - Ejemplo:  
    `...el joven residente no era "mayor" de edad por lo que se intento...`

### 5. Identificación de página
- Cada resultado muestra:  
  📄 **Documento**: Título del PDF  
  🔖 **Página**: Número exacto donde se encontró el texto.

### 6. Visualización del PDF
- **Botón "Ver Página"** que abre el PDF directamente en la página del resultado.
- Implementado con `PyPDF2` para extracción precisa de páginas.

---

## ⚠️ Notas Técnicas Importantes

### Dependencias críticas
1. **Tesseract OCR**:
   - 📌 [Guía de instalación](https://github.com/tesseract-ocr/tesseract)
   - Configurar `TESSERACT_PATH` si no está en el PATH.

2. **Poppler** (para PDF a imágenes):
   - 📌 [Instalación en Windows/Linux](https://pdf2image.readthedocs.io/en/latest/installation.html)

### Restricciones de Diseño
- **No se permite reemplazar PDFs**:  
  Para mantener la coherencia entre el archivo y su texto extraído, los usuarios deben:
  1. **Borrar** el documento existente.
  2. **Subir** el nuevo PDF (que generará nuevos registros OCR).

- **Panel de admin**:  
  ⚠️ Aunque técnicamente permite editar PDFs, **no se recomienda** porque:
  - Rompe la relación con los datos OCR existentes.
  - Genera resultados de búsqueda inconsistentes.

---

## 🛠 Instalación

```bash
# 1. Clonar repositorio
git clone https://github.com/tu-usuario/biblioteca_pdf.git

# 2. Instalar dependencias
pip install -r requirements.txt

# 3. Configurar variables de entorno
export TESSERACT_PATH=/ruta/a/tesseract  # Linux/Mac
set TESSERACT_PATH=C:\ruta\a\tesseract.exe  # Windows

# 4. Ejecutar migraciones
python manage.py migrate

# 5. Iniciar servidor
python manage.py runserver
```

## 📌 Ejemplo de Flujo

1. **Subir PDF** → `Historia.pdf` (15MB)
2. **Buscar** → Término: "guerra mundial"
3. **Resultado**:
   ```
   [Historia.pdf - Página 42]
   ...los conflictos de la "guerra mundial" afectaron profundamente a...
   ```
4. **Ver PDF** → Abre automáticamente la página 42.

---

## 📦 Estructura del Proyecto
```
biblioteca_pdf/
├── media/               # PDFs subidos (no versionados)
├── biblioteca/
│   ├── models.py        # Modelos Documento y PaginaTexto
│   ├── views.py         # Lógica de subida/búsqueda
│   └── templates/       # HTMLs (buscar.html, subir_documento.html)
└── requirements.txt     # Dependencias (Django, pytesseract, etc.)
```

## 🌟 Licencia
MIT
```

### Características destacadas:
1. **Checklist visual** con todos los requerimientos marcados como cumplidos (✅).
2. **Explicación técnica** de cada funcionalidad implementada.
3. **Advertencias claras** sobre limitaciones de diseño.
4. **Guía de instalación** con comandos listos para copiar.
5. **Ejemplo práctico** del flujo de uso.
