Spaces:
Sleeping
Sleeping
app.py
CHANGED
@@ -34,24 +34,32 @@ def simplificar_pdf(input_pdf, output_pdf):
|
|
34 |
def crear_pdf_con_texto_incrustado(pdf_original, archivo_salida, idioma="spa"):
|
35 |
"""Procesa un PDF con OCR usando OCRmyPDF."""
|
36 |
comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf {shlex.quote(pdf_original)} {shlex.quote(archivo_salida)}"
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
def flujo_principal(pdf_file, idioma="spa"):
|
40 |
"""Procesa un PDF subido con reparaci贸n, simplificaci贸n y OCR."""
|
41 |
if not pdf_file:
|
42 |
raise gr.Error("No se subi贸 ning煤n archivo.")
|
43 |
|
44 |
-
with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
55 |
|
56 |
|
57 |
# Interfaz Gradio
|
@@ -64,8 +72,9 @@ with gr.Blocks() as interfaz:
|
|
64 |
boton_procesar = gr.Button("Procesar OCR")
|
65 |
|
66 |
with gr.Row():
|
67 |
-
pdf_vista =
|
68 |
-
pdf_descarga = gr.File(label="Descargar PDF procesado", visible=
|
|
|
69 |
|
70 |
boton_procesar.click(
|
71 |
fn=flujo_principal,
|
|
|
34 |
def crear_pdf_con_texto_incrustado(pdf_original, archivo_salida, idioma="spa"):
|
35 |
"""Procesa un PDF con OCR usando OCRmyPDF."""
|
36 |
comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf {shlex.quote(pdf_original)} {shlex.quote(archivo_salida)}"
|
37 |
+
try:
|
38 |
+
output = ejecutar_comando(comando)
|
39 |
+
logger.info(f"Salida de ocrmypdf: {output}")
|
40 |
+
except RuntimeError as e:
|
41 |
+
logger.error(f"Error en ocrmypdf: {e}")
|
42 |
+
raise
|
43 |
|
44 |
def flujo_principal(pdf_file, idioma="spa"):
|
45 |
"""Procesa un PDF subido con reparaci贸n, simplificaci贸n y OCR."""
|
46 |
if not pdf_file:
|
47 |
raise gr.Error("No se subi贸 ning煤n archivo.")
|
48 |
|
49 |
+
with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as temp_pdf:
|
50 |
+
try:
|
51 |
+
reparar_pdf(pdf_file, temp_pdf.name)
|
52 |
+
simplificar_pdf(temp_pdf.name, temp_pdf.name)
|
53 |
+
crear_pdf_con_texto_incrustado(temp_pdf.name, temp_pdf.name, idioma)
|
54 |
+
ruta_final = temp_pdf.name
|
55 |
+
return gr.File(value=ruta_final, label="PDF procesado"), ruta_final # gr.File para pdf_vista
|
56 |
+
except Exception as e:
|
57 |
+
logger.exception(f"Error durante el procesamiento: {e}") # Loggea la excepci贸n completa
|
58 |
+
raise gr.Error(f"Error al procesar el PDF: {e}")
|
59 |
+
finally:
|
60 |
+
# Elimina el archivo temporal al final, incluso si hay errores
|
61 |
+
if os.path.exists(temp_pdf.name):
|
62 |
+
os.remove(temp_pdf.name)
|
63 |
|
64 |
|
65 |
# Interfaz Gradio
|
|
|
72 |
boton_procesar = gr.Button("Procesar OCR")
|
73 |
|
74 |
with gr.Row():
|
75 |
+
pdf_vista = gr.File(label="Visor PDF") # Cambiado a gr.File
|
76 |
+
pdf_descarga = gr.File(label="Descargar PDF procesado", visible=False)
|
77 |
+
|
78 |
|
79 |
boton_procesar.click(
|
80 |
fn=flujo_principal,
|