eberhenriquez94 commited on
Commit
15611f3
verified
1 Parent(s): 49fb99d
Files changed (1) hide show
  1. app.py +10 -34
app.py CHANGED
@@ -5,7 +5,7 @@ from PyPDF2 import PdfReader
5
  import tempfile
6
  import os
7
  import shlex
8
- from gradio_pdf import PDF # Importamos el componente PDF espec铆fico de gradio_pdf
9
 
10
  # Configuraci贸n de logs
11
  logger = logging.getLogger(__name__)
@@ -30,22 +30,8 @@ def crear_pdf_con_texto_incrustado(pdf_original, archivo_salida, idioma="spa"):
30
  except RuntimeError as e:
31
  raise gr.Error(f"Error al procesar el archivo con OCR: {e}")
32
 
33
- def leer_pdf(pdf_path):
34
- """Extrae texto de un archivo PDF."""
35
- try:
36
- reader = PdfReader(pdf_path)
37
- texto = ""
38
- for pagina in reader.pages:
39
- text = pagina.extract_text()
40
- if text:
41
- texto += text + "\n"
42
- return texto.strip() or "No se pudo extraer texto del PDF."
43
- except Exception as e:
44
- logger.error(f"Error al leer el PDF: {e}")
45
- return f"Error al leer el PDF: {e}"
46
-
47
  def flujo_principal(pdf_file, idioma="spa"):
48
- """Procesa un PDF subido, realiza OCR y extrae texto."""
49
  if not pdf_file:
50
  raise gr.Error("No se subi贸 ning煤n archivo.")
51
 
@@ -56,45 +42,35 @@ def flujo_principal(pdf_file, idioma="spa"):
56
  with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_output:
57
  output_pdf = temp_output.name
58
 
59
- texto_original = leer_pdf(input_pdf)
60
-
61
  try:
62
  # Procesar con OCR
63
  crear_pdf_con_texto_incrustado(input_pdf, output_pdf, idioma)
64
- texto_ocr = leer_pdf(output_pdf)
65
- return pdf_file, texto_original, output_pdf, texto_ocr
66
  except gr.Error as e:
67
  logger.error("Error durante el procesamiento del PDF.")
68
  raise e
69
  finally:
70
- # Limpiar archivos temporales
71
  if os.path.exists(output_pdf):
72
  os.remove(output_pdf)
73
 
74
- # Interfaz Gradio usando el componente PDF
75
  with gr.Blocks() as interfaz:
76
- gr.Markdown("## Procesador OCR para PDFs en Hugging Face")
77
 
78
- # Carga de archivo y selecci贸n de idioma
79
  with gr.Row():
80
- archivo_pdf = PDF(label="Sube tu archivo PDF") # Usamos PDF en lugar de gr.File
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 = PDF(label="Vista del PDF Original", interactive=False)
91
- pdf_ocr_vista = PDF(label="Vista del 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__":
 
5
  import tempfile
6
  import os
7
  import shlex
8
+ from gradio_pdf import PDF
9
 
10
  # Configuraci贸n de logs
11
  logger = logging.getLogger(__name__)
 
30
  except RuntimeError as e:
31
  raise gr.Error(f"Error al procesar el archivo con OCR: {e}")
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  def flujo_principal(pdf_file, idioma="spa"):
34
+ """Procesa un PDF subido y realiza OCR."""
35
  if not pdf_file:
36
  raise gr.Error("No se subi贸 ning煤n archivo.")
37
 
 
42
  with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_output:
43
  output_pdf = temp_output.name
44
 
 
 
45
  try:
46
  # Procesar con OCR
47
  crear_pdf_con_texto_incrustado(input_pdf, output_pdf, idioma)
48
+ return input_pdf, output_pdf
 
49
  except gr.Error as e:
50
  logger.error("Error durante el procesamiento del PDF.")
51
  raise e
52
  finally:
53
+ # Limpiar archivos temporales si es necesario
54
  if os.path.exists(output_pdf):
55
  os.remove(output_pdf)
56
 
57
+ # Interfaz Gradio mejorada
58
  with gr.Blocks() as interfaz:
59
+ gr.Markdown("## Visualizador de PDFs con OCR")
60
 
 
61
  with gr.Row():
62
+ archivo_pdf = PDF(label="Sube tu archivo PDF")
63
  idioma_ocr = gr.Dropdown(["spa", "eng", "fra", "deu"], label="Idioma OCR", value="spa")
64
  boton_procesar = gr.Button("Procesar OCR")
65
 
 
 
 
 
 
66
  with gr.Row():
67
+ pdf_original_vista = PDF(label="PDF Original", interactive=False)
68
+ pdf_ocr_vista = PDF(label="PDF con OCR", interactive=False)
69
 
 
70
  boton_procesar.click(
71
  fn=flujo_principal,
72
  inputs=[archivo_pdf, idioma_ocr],
73
+ outputs=[pdf_original_vista, pdf_ocr_vista]
74
  )
75
 
76
  if __name__ == "__main__":