eberhenriquez94 commited on
Commit
7182873
verified
1 Parent(s): 0db9ac2
Files changed (1) hide show
  1. app.py +30 -9
app.py CHANGED
@@ -25,7 +25,7 @@ def crear_pdf_con_texto_incrustado(pdf_original, archivo_salida, idioma="spa"):
25
  """Procesa un PDF con OCR usando OCRmyPDF."""
26
  try:
27
  # Usa shlex.quote para manejar espacios en los nombres de archivo
28
- comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --clean --output-type pdf {shlex.quote(pdf_original)} {shlex.quote(archivo_salida)}"
29
  ejecutar_comando(comando)
30
  except RuntimeError as e:
31
  raise gr.Error(str(e)) # Mostrar el error en la interfaz de Gradio
@@ -46,19 +46,40 @@ def flujo_principal(pdf_file, idioma="spa"):
46
  if not pdf_file:
47
  raise gr.Error("No se subi贸 ning煤n archivo.")
48
 
49
- # Guardar el archivo subido en el directorio /tmp
50
- temp_dir = tempfile.mkdtemp()
51
- input_pdf_path = os.path.join(temp_dir, pdf_file.name)
 
52
 
53
- # Usar pdf_file.name para acceder al contenido del archivo
54
- with open(input_pdf_path, "wb") as f:
55
- f.write(open(pdf_file.name, "rb").read())
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
  # Interfaz Gradio
58
  with gr.Blocks() as interfaz:
59
  gr.Markdown("## Procesador OCR para PDFs")
60
  with gr.Row():
61
- archivo_pdf = gr.File(label="Sube tu archivo PDF")
62
  idioma_ocr = gr.Dropdown(["spa", "eng", "fra", "deu"], label="Idioma OCR", value="spa")
63
  boton_procesar = gr.Button("Procesar OCR")
64
  with gr.Row():
@@ -73,4 +94,4 @@ with gr.Blocks() as interfaz:
73
  outputs=[pdf_original_vista, texto_original, pdf_ocr_vista, texto_ocr]
74
  )
75
 
76
- interfaz.launch()
 
25
  """Procesa un PDF con OCR usando OCRmyPDF."""
26
  try:
27
  # Usa shlex.quote para manejar espacios en los nombres de archivo
28
+ comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf {shlex.quote(pdf_original)} {shlex.quote(archivo_salida)}"
29
  ejecutar_comando(comando)
30
  except RuntimeError as e:
31
  raise gr.Error(str(e)) # Mostrar el error en la interfaz de Gradio
 
46
  if not pdf_file:
47
  raise gr.Error("No se subi贸 ning煤n archivo.")
48
 
49
+ # Crear archivos temporales para el procesamiento
50
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_input:
51
+ temp_input.write(pdf_file.read())
52
+ input_pdf = temp_input.name
53
 
54
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_output:
55
+ output_pdf = temp_output.name
56
+
57
+ # Extraer texto original del PDF
58
+ texto_original = leer_pdf(input_pdf)
59
+
60
+ # Procesar el PDF con OCR
61
+ try:
62
+ crear_pdf_con_texto_incrustado(input_pdf, output_pdf, idioma)
63
+ texto_ocr = leer_pdf(output_pdf)
64
+ return gr.File(input_pdf, label="PDF Original"), texto_original, gr.File(output_pdf, label="PDF con OCR"), texto_ocr
65
+ except gr.Error as e:
66
+ if os.path.exists(input_pdf):
67
+ os.remove(input_pdf)
68
+ if os.path.exists(output_pdf):
69
+ os.remove(output_pdf)
70
+ raise e
71
+ finally:
72
+ # Limpieza de archivos temporales
73
+ if os.path.exists(input_pdf):
74
+ os.remove(input_pdf)
75
+ if os.path.exists(output_pdf):
76
+ os.remove(output_pdf)
77
 
78
  # Interfaz Gradio
79
  with gr.Blocks() as interfaz:
80
  gr.Markdown("## Procesador OCR para PDFs")
81
  with gr.Row():
82
+ archivo_pdf = gr.File(label="Sube tu archivo PDF", file_types=[".pdf"])
83
  idioma_ocr = gr.Dropdown(["spa", "eng", "fra", "deu"], label="Idioma OCR", value="spa")
84
  boton_procesar = gr.Button("Procesar OCR")
85
  with gr.Row():
 
94
  outputs=[pdf_original_vista, texto_original, pdf_ocr_vista, texto_ocr]
95
  )
96
 
97
+ interfaz.launch()