import os import pypdf import docx import logging # Configurez un logger simple pour le test logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Copiez/collez la fonction extract_text_from_file ici def extract_text_from_file(filepath: str) -> str: file_extension = os.path.splitext(filepath)[1].lower() text_content = "" if not os.path.exists(filepath): raise FileNotFoundError(f"Le fichier n'existe pas : {filepath}") if file_extension == ".pdf": try: with open(filepath, 'rb') as f: reader = pypdf.PdfReader(f) for page in reader.pages: text_content += page.extract_text() or "" if not text_content.strip(): logger.warning(f"Le fichier PDF {filepath} a été lu mais aucun texte significatif n'a été extrait.") except Exception as e: logger.error(f"Erreur lors de l'extraction du texte du PDF {filepath}: {e}") raise ValueError(f"Impossible d'extraire le texte du fichier PDF. Erreur: {e}") elif file_extension == ".docx": try: document = docx.Document(filepath) for paragraph in document.paragraphs: text_content += paragraph.text + "\n" if not text_content.strip(): logger.warning(f"Le fichier DOCX {filepath} a été lu mais aucun texte significatif n'a été extrait.") except Exception as e: logger.error(f"Erreur lors de l'extraction du texte du DOCX {filepath}: {e}") raise ValueError(f"Impossible d'extraire le texte du fichier DOCX. Erreur: {e}") else: # Tente de lire comme un fichier texte try: with open(filepath, 'r', encoding='utf-8') as f: text_content = f.read() except UnicodeDecodeError: # Si UTF-8 échoue, tente latin-1 try: with open(filepath, 'r', encoding='latin-1') as f: text_content = f.read() except Exception as e: logger.error(f"Erreur lors de la lecture du fichier texte {filepath} avec UTF-8 et Latin-1: {e}") raise ValueError(f"Impossible de lire le fichier texte (problème d'encodage). Erreur: {e}") except Exception as e: logger.error(f"Erreur inattendue lors de la lecture du fichier texte {filepath}: {e}") raise ValueError(f"Impossible de lire le fichier texte. Erreur: {e}") return text_content # Remplacez par le chemin réel de votre fichier CV # Assurez-vous que le chemin est correct par rapport à l'emplacement de ce script de test cv_file_path = "../backend/uploads/6efe8ef7-52ee-4a55-8d88-7f10875c44bb.pdf" # ou .docx, .txt try: extracted_text = extract_text_from_file(cv_file_path) print("\n--- Texte extrait ---") print(extracted_text) print(f"\nLongueur du texte extrait: {len(extracted_text)} caractères") if not extracted_text.strip(): print("AVERTISSEMENT: Le texte extrait est vide ou ne contient que des espaces blancs.") except (FileNotFoundError, ValueError) as e: print(f"ERREUR lors de l'extraction: {e}") except Exception as e: print(f"ERREUR INATTENDUE: {e}")