#!/usr/bin/env python3
import os
import fitz  # PyMuPDF
import pytesseract
from PIL import Image

# Configurar tesseract path si es necesario
# pytesseract.pytesseract.tesseract_cmd = '/opt/homebrew/bin/tesseract'

def ocr_pdf(pdf_path, txt_path):
    print(f"Iniciando OCR para {pdf_path}...")
    doc = fitz.open(pdf_path)
    full_text = []
    
    for i in range(len(doc)):
        print(f"  Procesando página {i+1}/{len(doc)}...")
        page = doc.load_page(i)
        
        # Renderizar la página a pixmap (imagen) con alta resolución para mejor OCR
        pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))  # factor de zoom de 2x para mejorar DPI
        
        # Convertir a objeto de imagen de PIL
        img_data = pix.tobytes("png")
        from io import BytesIO
        img = Image.open(BytesIO(img_data))
        
        # Ejecutar OCR en español
        try:
            text = pytesseract.image_to_string(img, lang='spa')
        except Exception:
            # Fallback en inglés si español no está instalado
            text = pytesseract.image_to_string(img, lang='eng')
            
        full_text.append(f"--- Página {i+1} ---\n{text}\n")
        
    with open(txt_path, 'w', encoding='utf-8') as f:
        f.write("\n".join(full_text))
        
    print(f"OCR finalizado. Guardado en {txt_path}\n")

if __name__ == '__main__':
    actividades_dir = "."
    for filename in os.listdir(actividades_dir):
        if not filename.endswith(".pdf"):
            continue
        if "Evaluacion" in filename or "Evaluación" in filename:
            pdf_eval = os.path.join(actividades_dir, filename)
            ocr_pdf(pdf_eval, os.path.join(actividades_dir, "MA_Evaluacion_7_ocr.txt"))
        elif "Semana 7" in filename:
            pdf_semana = os.path.join(actividades_dir, filename)
            ocr_pdf(pdf_semana, os.path.join(actividades_dir, "MA_Semana_7_ocr.txt"))
