Spaces:
Build error
Build error
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
output_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
|
| 30 |
|
| 31 |
-
#
|
| 32 |
-
|
| 33 |
-
raise gr.Error("El archivo subido no es un PDF v谩lido.")
|
| 34 |
|
| 35 |
-
# Ejecutar
|
| 36 |
-
comando = f"ocrmypdf -l {idioma} --force-ocr --deskew --output-type 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,
|