""" Wrapper autour de MarkItDown pour la conversion de fichiers en Markdown. Utilise la bibliothèque markitdown de Microsoft pour convertir les formats supportés (PDF, DOCX, PPTX, XLSX, images, HTML, CSV, JSON, etc.). """ from markitdown import MarkItDown from pathlib import Path # Initialisation globale du convertisseur # keep_data_uris=True → intègre les images en base64 dans le Markdown # llm_client=None → désactive la description d'images par IA _converter = MarkItDown(keep_data_uris=True, llm_client=None, llm_model=None) def convert(file_path: str) -> str: """ Convertit un fichier en Markdown. Args: file_path: Chemin absolu ou relatif vers le fichier à convertir. Returns: Contenu Markdown généré. Raises: FileNotFoundError: Si le fichier n'existe pas. ValueError: Si le format n'est pas supporté par MarkItDown. Exception: Relaie toute exception de la bibliothèque sous-jacente. """ path = Path(file_path) if not path.exists(): raise FileNotFoundError(f"Fichier introuvable : {file_path}") if not path.is_file(): raise ValueError(f"Le chemin n'est pas un fichier : {file_path}") try: result = _converter.convert(str(path)) return result.text_content except Exception as e: raise Exception( f"Erreur de conversion pour {path.name} : {str(e)}" ) from e