eberhenriquez94 commited on
Commit
698d2af
verified
1 Parent(s): cd6f6b9
Files changed (1) hide show
  1. app.py +19 -6
app.py CHANGED
@@ -3,6 +3,7 @@ import subprocess
3
  import logging
4
  import tempfile
5
  import os
 
6
 
7
  # Configurar logging
8
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
@@ -19,21 +20,33 @@ def ejecutar_comando(comando, mensaje_exito="", mensaje_error=""):
19
  logging.error(error_message)
20
  raise RuntimeError(error_message)
21
 
 
 
 
 
 
 
 
 
 
22
  def procesar_pdf_con_ocr(pdf_subido, idioma="spa"):
23
  """Procesa un PDF subido con OCR y devuelve la ruta del archivo procesado."""
24
  if not pdf_subido:
25
  raise gr.Error("No se subi贸 ning煤n archivo.")
26
 
27
  try:
28
- input_pdf = pdf_subido.name
 
 
 
 
29
  output_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
30
 
31
- # Verificar que el archivo de entrada es un PDF
32
- if not input_pdf.endswith(".pdf"):
33
- raise gr.Error("El archivo subido no es un PDF v谩lido.")
34
 
35
- # Ejecutar ocrmypdf
36
- comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf '{input_pdf}' '{output_pdf}'"
37
  logging.info(f"Ejecutando comando: {comando}")
38
  ejecutar_comando(
39
  comando,
 
3
  import logging
4
  import tempfile
5
  import os
6
+ import shutil
7
 
8
  # Configurar logging
9
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
 
20
  logging.error(error_message)
21
  raise RuntimeError(error_message)
22
 
23
+ def reparar_pdf(pdf_entrada, pdf_reparado):
24
+ """Repara un PDF usando qpdf."""
25
+ comando = f"qpdf --linearize '{pdf_entrada}' '{pdf_reparado}'"
26
+ ejecutar_comando(
27
+ comando,
28
+ mensaje_exito="Archivo PDF reparado con 茅xito",
29
+ mensaje_error="Error al reparar el PDF"
30
+ )
31
+
32
  def procesar_pdf_con_ocr(pdf_subido, idioma="spa"):
33
  """Procesa un PDF subido con OCR y devuelve la ruta del archivo procesado."""
34
  if not pdf_subido:
35
  raise gr.Error("No se subi贸 ning煤n archivo.")
36
 
37
  try:
38
+ # Copiar el archivo subido a un nombre seguro
39
+ safe_input_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
40
+ shutil.copy(pdf_subido.name, safe_input_pdf)
41
+
42
+ reparado_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
43
  output_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
44
 
45
+ # Reparar el PDF
46
+ reparar_pdf(safe_input_pdf, reparado_pdf)
 
47
 
48
+ # Ejecutar OCR
49
+ comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf '{reparado_pdf}' '{output_pdf}'"
50
  logging.info(f"Ejecutando comando: {comando}")
51
  ejecutar_comando(
52
  comando,