Overglitch commited on
Commit
03e00e5
·
verified ·
1 Parent(s): 287692a

Update modules/preprocessing.py

Browse files
Files changed (1) hide show
  1. modules/preprocessing.py +21 -8
modules/preprocessing.py CHANGED
@@ -100,42 +100,55 @@ class PDFProcessor:
100
  def pdf_to_text(self, pdf_path):
101
  """
102
  Convierte un archivo PDF a texto usando OCR.
103
- Si el archivo no está en disco, lo guarda temporalmente.
104
  """
105
  # Asegurarse de que el archivo está disponible temporalmente
106
  temp_dir = Path("temp")
107
  temp_dir.mkdir(exist_ok=True)
108
-
109
  # Manejar el archivo temporalmente
110
  temp_file_path = temp_dir / Path(pdf_path).name
111
  if not temp_file_path.exists():
112
  shutil.copy(pdf_path, temp_file_path)
113
-
114
  try:
115
  # 1) Cargar el PDF
116
  doc = DocumentFile.from_pdf(temp_file_path)
117
-
 
 
 
 
118
  # 2) Limitar el número de páginas si es necesario
119
  if len(doc.pages) > self.max_pages:
120
  doc.pages = doc.pages[:self.max_pages]
121
-
122
  # 3) Aplicar el modelo OCR al documento
123
  ocr_result = self.ocr_model(doc)
124
-
125
  # 4) Extraer texto de cada bloque
126
  text_pages = []
127
  for page in ocr_result.pages:
128
  for block in page.blocks:
129
  text_pages.append(block.text)
130
-
131
  # 5) Unir todo el texto y devolverlo
132
  return "\n".join(text_pages)
133
-
 
 
 
 
 
 
 
 
134
  finally:
135
  # Limpiar el archivo temporal después del procesamiento
136
  if temp_file_path.exists():
137
  temp_file_path.unlink()
138
 
 
139
  @staticmethod
140
  def clear_temp_directory():
141
  """Limpia todos los archivos en el directorio temporal."""
 
100
  def pdf_to_text(self, pdf_path):
101
  """
102
  Convierte un archivo PDF a texto usando OCR.
103
+ Si el archivo no es válido o está corrupto, maneja la excepción.
104
  """
105
  # Asegurarse de que el archivo está disponible temporalmente
106
  temp_dir = Path("temp")
107
  temp_dir.mkdir(exist_ok=True)
108
+
109
  # Manejar el archivo temporalmente
110
  temp_file_path = temp_dir / Path(pdf_path).name
111
  if not temp_file_path.exists():
112
  shutil.copy(pdf_path, temp_file_path)
113
+
114
  try:
115
  # 1) Cargar el PDF
116
  doc = DocumentFile.from_pdf(temp_file_path)
117
+
118
+ # Verificar si el documento tiene páginas válidas
119
+ if not hasattr(doc, "pages") or not doc.pages:
120
+ raise ValueError("El archivo no contiene páginas procesables.")
121
+
122
  # 2) Limitar el número de páginas si es necesario
123
  if len(doc.pages) > self.max_pages:
124
  doc.pages = doc.pages[:self.max_pages]
125
+
126
  # 3) Aplicar el modelo OCR al documento
127
  ocr_result = self.ocr_model(doc)
128
+
129
  # 4) Extraer texto de cada bloque
130
  text_pages = []
131
  for page in ocr_result.pages:
132
  for block in page.blocks:
133
  text_pages.append(block.text)
134
+
135
  # 5) Unir todo el texto y devolverlo
136
  return "\n".join(text_pages)
137
+
138
+ except ValueError as ve:
139
+ print(f"Error al procesar el archivo PDF: {ve}")
140
+ return "El archivo PDF no es válido o está corrupto."
141
+
142
+ except Exception as e:
143
+ print(f"Error inesperado al procesar el PDF: {e}")
144
+ return "Ocurrió un error inesperado al procesar el archivo."
145
+
146
  finally:
147
  # Limpiar el archivo temporal después del procesamiento
148
  if temp_file_path.exists():
149
  temp_file_path.unlink()
150
 
151
+
152
  @staticmethod
153
  def clear_temp_directory():
154
  """Limpia todos los archivos en el directorio temporal."""