eberhenriquez94 commited on
Commit
b6ad860
·
verified ·
1 Parent(s): ea19521
Files changed (1) hide show
  1. app.py +22 -9
app.py CHANGED
@@ -20,13 +20,22 @@ def ejecutar_comando(comando, mensaje_exito="", mensaje_error=""):
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"):
@@ -40,18 +49,22 @@ def procesar_pdf_con_ocr(pdf_subido, idioma="spa"):
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,
53
- mensaje_exito="OCR completado",
54
- mensaje_error="Error en OCR"
55
  )
56
 
57
  # Verificar que el archivo de salida se haya creado
@@ -87,4 +100,4 @@ def interfaz_ocr():
87
  return app
88
 
89
  if __name__ == "__main__":
90
- interfaz_ocr().launch()
 
20
  logging.error(error_message)
21
  raise RuntimeError(error_message)
22
 
23
+ def reparar_pdf(input_pdf, output_pdf):
24
  """Repara un PDF usando qpdf."""
25
+ comando = f"qpdf --linearize '{input_pdf}' '{output_pdf}'"
26
  ejecutar_comando(
27
  comando,
28
+ mensaje_exito="PDF reparado correctamente.",
29
+ mensaje_error="Error al reparar el PDF."
30
+ )
31
+
32
+ def convertir_pdf_a_compatible(input_pdf, output_pdf):
33
+ """Convierte el PDF a un formato compatible usando pdftocairo."""
34
+ comando = f"pdftocairo -pdf '{input_pdf}' '{output_pdf}'"
35
+ ejecutar_comando(
36
+ comando,
37
+ mensaje_exito="PDF convertido a un formato compatible.",
38
+ mensaje_error="Error al convertir el PDF a un formato compatible."
39
  )
40
 
41
  def procesar_pdf_con_ocr(pdf_subido, idioma="spa"):
 
49
  shutil.copy(pdf_subido.name, safe_input_pdf)
50
 
51
  reparado_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
52
+ convertido_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
53
  output_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
54
 
55
  # Reparar el PDF
56
  reparar_pdf(safe_input_pdf, reparado_pdf)
57
 
58
+ # Convertir el PDF a un formato compatible
59
+ convertir_pdf_a_compatible(reparado_pdf, convertido_pdf)
60
+
61
+ # Ejecutar OCR en el PDF convertido
62
+ comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type pdf '{convertido_pdf}' '{output_pdf}'"
63
  logging.info(f"Ejecutando comando: {comando}")
64
  ejecutar_comando(
65
  comando,
66
+ mensaje_exito="OCR completado correctamente.",
67
+ mensaje_error="Error al ejecutar el OCR."
68
  )
69
 
70
  # Verificar que el archivo de salida se haya creado
 
100
  return app
101
 
102
  if __name__ == "__main__":
103
+ interfaz_ocr().launch()