eberhenriquez94 commited on
Commit
b5e6996
verified
1 Parent(s): e3f9a77
Files changed (1) hide show
  1. app.py +14 -6
app.py CHANGED
@@ -27,7 +27,7 @@ def crear_pdf_con_texto_incrustado(pdf_original, archivo_salida, idioma="spa"):
27
  comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf {shlex.quote(pdf_original)} {shlex.quote(archivo_salida)}"
28
  ejecutar_comando(comando)
29
  except RuntimeError as e:
30
- raise gr.Error(str(e))
31
 
32
  def leer_pdf(pdf_path):
33
  """Extrae texto de un archivo PDF."""
@@ -38,6 +38,7 @@ def leer_pdf(pdf_path):
38
  texto += pagina.extract_text() + "\n"
39
  return texto.strip() or "No se pudo extraer texto del PDF."
40
  except Exception as e:
 
41
  return f"Error al leer el PDF: {e}"
42
 
43
  def flujo_principal(pdf_file, idioma="spa"):
@@ -56,16 +57,15 @@ def flujo_principal(pdf_file, idioma="spa"):
56
  texto_original = leer_pdf(input_pdf)
57
 
58
  try:
 
59
  crear_pdf_con_texto_incrustado(input_pdf, output_pdf, idioma)
60
  texto_ocr = leer_pdf(output_pdf)
61
  return gr.File(input_pdf, label="PDF Original"), texto_original, gr.File(output_pdf, label="PDF con OCR"), texto_ocr
62
  except gr.Error as e:
63
- if os.path.exists(input_pdf):
64
- os.remove(input_pdf)
65
- if os.path.exists(output_pdf):
66
- os.remove(output_pdf)
67
  raise e
68
  finally:
 
69
  if os.path.exists(input_pdf):
70
  os.remove(input_pdf)
71
  if os.path.exists(output_pdf):
@@ -74,20 +74,28 @@ def flujo_principal(pdf_file, idioma="spa"):
74
  # Interfaz Gradio
75
  with gr.Blocks() as interfaz:
76
  gr.Markdown("## Procesador OCR para PDFs")
 
 
77
  with gr.Row():
78
  archivo_pdf = gr.File(label="Sube tu archivo PDF", file_types=[".pdf"])
79
  idioma_ocr = gr.Dropdown(["spa", "eng", "fra", "deu"], label="Idioma OCR", value="spa")
80
  boton_procesar = gr.Button("Procesar OCR")
 
 
81
  with gr.Row():
82
  texto_original = gr.Textbox(label="Texto Original", lines=10, interactive=False)
83
  texto_ocr = gr.Textbox(label="Texto con OCR", lines=10, interactive=False)
 
84
  with gr.Row():
85
  pdf_original_vista = gr.File(label="Descargar PDF Original", interactive=False)
86
  pdf_ocr_vista = gr.File(label="Descargar PDF con OCR", interactive=False)
 
 
87
  boton_procesar.click(
88
  fn=flujo_principal,
89
  inputs=[archivo_pdf, idioma_ocr],
90
  outputs=[pdf_original_vista, texto_original, pdf_ocr_vista, texto_ocr]
91
  )
92
 
93
- interfaz.launch()
 
 
27
  comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf {shlex.quote(pdf_original)} {shlex.quote(archivo_salida)}"
28
  ejecutar_comando(comando)
29
  except RuntimeError as e:
30
+ raise gr.Error(f"Error al procesar el archivo con OCR: {e}")
31
 
32
  def leer_pdf(pdf_path):
33
  """Extrae texto de un archivo PDF."""
 
38
  texto += pagina.extract_text() + "\n"
39
  return texto.strip() or "No se pudo extraer texto del PDF."
40
  except Exception as e:
41
+ logger.error(f"Error al leer el PDF: {e}")
42
  return f"Error al leer el PDF: {e}"
43
 
44
  def flujo_principal(pdf_file, idioma="spa"):
 
57
  texto_original = leer_pdf(input_pdf)
58
 
59
  try:
60
+ # Procesar con OCR
61
  crear_pdf_con_texto_incrustado(input_pdf, output_pdf, idioma)
62
  texto_ocr = leer_pdf(output_pdf)
63
  return gr.File(input_pdf, label="PDF Original"), texto_original, gr.File(output_pdf, label="PDF con OCR"), texto_ocr
64
  except gr.Error as e:
65
+ logger.error("Error durante el procesamiento del PDF.")
 
 
 
66
  raise e
67
  finally:
68
+ # Limpiar archivos temporales
69
  if os.path.exists(input_pdf):
70
  os.remove(input_pdf)
71
  if os.path.exists(output_pdf):
 
74
  # Interfaz Gradio
75
  with gr.Blocks() as interfaz:
76
  gr.Markdown("## Procesador OCR para PDFs")
77
+
78
+ # Carga de archivo y selecci贸n de idioma
79
  with gr.Row():
80
  archivo_pdf = gr.File(label="Sube tu archivo PDF", file_types=[".pdf"])
81
  idioma_ocr = gr.Dropdown(["spa", "eng", "fra", "deu"], label="Idioma OCR", value="spa")
82
  boton_procesar = gr.Button("Procesar OCR")
83
+
84
+ # Resultados del procesamiento
85
  with gr.Row():
86
  texto_original = gr.Textbox(label="Texto Original", lines=10, interactive=False)
87
  texto_ocr = gr.Textbox(label="Texto con OCR", lines=10, interactive=False)
88
+
89
  with gr.Row():
90
  pdf_original_vista = gr.File(label="Descargar PDF Original", interactive=False)
91
  pdf_ocr_vista = gr.File(label="Descargar PDF con OCR", interactive=False)
92
+
93
+ # Conectar la l贸gica con la interfaz
94
  boton_procesar.click(
95
  fn=flujo_principal,
96
  inputs=[archivo_pdf, idioma_ocr],
97
  outputs=[pdf_original_vista, texto_original, pdf_ocr_vista, texto_ocr]
98
  )
99
 
100
+ if __name__ == "__main__":
101
+ interfaz.launch()