Overglitch commited on
Commit
b6c116a
·
verified ·
1 Parent(s): 3f6d750

Update modules/preprocessing.py

Browse files
Files changed (1) hide show
  1. modules/preprocessing.py +16 -56
modules/preprocessing.py CHANGED
@@ -97,66 +97,26 @@ class PDFProcessor:
97
  self.ocr_model = ocr_predictor(pretrained=True)
98
  self.max_pages = max_pages
99
 
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."""
155
- temp_dir = Path("temp")
156
- if temp_dir.exists():
157
- for file in temp_dir.iterdir():
158
- if file.is_file():
159
- file.unlink()
160
 
161
 
162
  class FileHandler:
 
97
  self.ocr_model = ocr_predictor(pretrained=True)
98
  self.max_pages = max_pages
99
 
100
+ def pdf_to_text(self, file_path: str) -> str:
101
  """
102
  Convierte un archivo PDF a texto usando OCR.
 
103
  """
104
+ pdf_file = Path(file_path)
105
+ doc = DocumentFile.from_pdf(pdf_file)
106
+
107
+ # Asegúrate de que `doc` sea un objeto compatible con pages
108
+ if isinstance(doc, list):
109
+ pages = doc[:self.max_pages] if len(doc) > self.max_pages else doc
110
+ elif hasattr(doc, "pages"):
111
+ pages = doc.pages[:self.max_pages] if len(doc.pages) > self.max_pages else doc.pages
112
+ else:
113
+ raise ValueError("Formato inesperado para el documento PDF.")
114
+
115
+ raw_text = "\n".join(
116
+ [block.text for page in pages for block in page.blocks]
117
+ )
118
+ return Preprocessor().preprocess_text(raw_text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
 
 
 
 
 
 
 
 
 
120
 
121
 
122
  class FileHandler: