eberhenriquez94 commited on
Commit
430849c
verified
1 Parent(s): afc97e1
Files changed (1) hide show
  1. app.py +27 -7
app.py CHANGED
@@ -41,6 +41,25 @@ def crear_pdf_con_texto_incrustado(pdf_original, archivo_salida, idioma="spa"):
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:
@@ -52,16 +71,18 @@ def flujo_principal(pdf_file, idioma="spa"):
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
66
  with gr.Blocks() as interfaz:
67
  gr.Markdown("## Procesador de PDFs con OCR")
@@ -72,10 +93,9 @@ with gr.Blocks() as interfaz:
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,
81
  inputs=[archivo_pdf, idioma_ocr],
@@ -83,4 +103,4 @@ with gr.Blocks() as interfaz:
83
  )
84
 
85
  if __name__ == "__main__":
86
- interfaz.launch()
 
41
  logger.error(f"Error en ocrmypdf: {e}")
42
  raise
43
 
44
+ def mostrar_pdf(ruta_pdf):
45
+ """
46
+ Devuelve un HTML con un iframe que usa PDF.js para mostrar un archivo PDF.
47
+ """
48
+ if ruta_pdf:
49
+ # Aseg煤rate de usar rutas correctas para los archivos procesados
50
+ return f"""
51
+ <html>
52
+ <head>
53
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script>
54
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.min.js"></script>
55
+ </head>
56
+ <body>
57
+ <iframe src="{ruta_pdf}" width="100%" height="600px" style="border: none;"></iframe>
58
+ </body>
59
+ </html>
60
+ """
61
+ return "<p>No se pudo generar la vista previa del PDF.</p>"
62
+
63
  def flujo_principal(pdf_file, idioma="spa"):
64
  """Procesa un PDF subido con reparaci贸n, simplificaci贸n y OCR."""
65
  if not pdf_file:
 
71
  simplificar_pdf(temp_pdf.name, temp_pdf.name)
72
  crear_pdf_con_texto_incrustado(temp_pdf.name, temp_pdf.name, idioma)
73
  ruta_final = temp_pdf.name
74
+
75
+ # Crear vista previa para PDF.js
76
+ pdf_vista_html = mostrar_pdf(ruta_final)
77
+
78
+ return pdf_vista_html, gr.File(value=ruta_final, label="Descargar PDF procesado")
79
  except Exception as e:
80
+ logger.exception(f"Error durante el procesamiento: {e}")
81
  raise gr.Error(f"Error al procesar el PDF: {e}")
82
  finally:
 
83
  if os.path.exists(temp_pdf.name):
84
  os.remove(temp_pdf.name)
85
 
 
86
  # Interfaz Gradio
87
  with gr.Blocks() as interfaz:
88
  gr.Markdown("## Procesador de PDFs con OCR")
 
93
  boton_procesar = gr.Button("Procesar OCR")
94
 
95
  with gr.Row():
96
+ pdf_vista = gr.HTML(label="Visor PDF") # Cambiado a gr.HTML
97
  pdf_descarga = gr.File(label="Descargar PDF procesado", visible=False)
98
 
 
99
  boton_procesar.click(
100
  fn=flujo_principal,
101
  inputs=[archivo_pdf, idioma_ocr],
 
103
  )
104
 
105
  if __name__ == "__main__":
106
+ interfaz.launch()