ay/test/test_extraction.py
2025-07-01 18:25:10 +02:00

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}")