71 lines
No EOL
3.2 KiB
Python
71 lines
No EOL
3.2 KiB
Python
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}") |