Intégrez vos documents dans les pipelines d’IA — directement depuis Python, en local, avec un seul pip install.
Aujourd’hui, nous publions la première version publique de GroupDocs.Markdown pour Python via .NET sur PyPI. La bibliothèque convertit les PDF, Word, Excel, EPUB et plus de 20 autres formats en Markdown propre et sémantique — le format avec lequel les LLM, les pipelines RAG et les générateurs de sites statiques fonctionnent le mieux.
Si vous avez suivi la release .NET de septembre (ou la refonte complète de l’API dans la version 26.3), la logique est la même : le formatage d’un document porte une sémantique, et préserver cette structure sémantique est ce qui permet à un système RAG de fournir de bonnes réponses. L’article précédent décrit le problème (l’OCR aplatit la structure, les LLM ont besoin de markdown) et la solution (un moteur de rendu basé sur le DOM qui parcourt le document et génère du Markdown) en détail — nous ne répéterons pas cette histoire ici.
Concentrons‑nous plutôt sur les nouveautés pour les développeurs Python.
Ce que vous obtenez
- Une seule roue, aucune dépendance d’exécution.
pip install groupdocs-markdown-nettélécharge une roue autonome qui regroupe le runtime .NET et toutes les bibliothèques natives nécessaires. Pas d’installationdotnet, pas de Microsoft Office, pas d’Adobe Acrobat, pas de services cloud. - Multiplateforme. Windows x64/x86, Linux x64, macOS x64 et Apple Silicon (ARM64). Python 3.5 à 3.14.
- Une API pythonique. Les classes utilisent le
PascalCase, les méthodes et propriétés lesnake_case, les valeurs d’énumération leUPPER_SNAKE_CASE. Les gestionnaires de contexte libèrent les documents chargés de façon déterministe. - Vraiment asynchrone. Chaque méthode statique et d’instance possède une version
_async. Les I/O de fichiers sont asynchrones et la conversion CPU‑intensive s’exécute sur un thread de travail — votre boucle d’événementsasyncioreste libre. - Convivial aux agents IA. La roue installée inclut un fichier
AGENTS.mdafin que les assistants de codage (Claude Code, Cursor, GitHub Copilot, Codex) découvrent automatiquement la surface d’API, les modèles d’utilisation idiomatiques et les astuces de dépannage. La documentation est également publiée sous forme dellms.txt, d’un corpus monofichier (llms-full.txt), de Markdown page par page, et d’un serveur MCP — voir la section AI‑friendly by design ci‑dessous pour les détails.
Mise en route
pip install groupdocs-markdown-net
La conversion la plus simple se fait en une seule ligne :
from groupdocs.markdown import MarkdownConverter
# Convertir en chaîne de caractères
md = MarkdownConverter.to_markdown("business-plan.docx")
# Ou écrire directement dans un fichier
MarkdownConverter.to_file("business-plan.docx", "business-plan.md")
C’est tout — aucune configuration, aucune option, aucun code boilerplate. Le mode d’évaluation traite les 3 premières pages et ajoute un filigrane. Pour supprimer ces limites, appliquez une licence :
from groupdocs.markdown import License
License().set_license("path/to/license.lic")
Ou définissez la variable d’environnement GROUPDOCS_LIC_PATH ; elle sera appliquée automatiquement lors de l’importation.
Formats pris en charge
Le package Python gère la même variété de formats que la bibliothèque .NET :
- PDF —
.pdf - Word / Rich Text —
.doc,.docx,.docm,.dot,.dotx,.dotm,.rtf,.odt,.ott - Feuilles de calcul —
.xls,.xlsx,.xlsb,.xlsm,.csv,.tsv,.ods,.ots - eBooks —
.epub,.mobi - Texte / Balises / Aide —
.txt,.xml,.chm
Exemples pythoniques
Options de conversion et stratégies d’image
from groupdocs.markdown import (
MarkdownConverter,
ConvertOptions,
MarkdownFlavor,
ExportImagesToFileSystemStrategy,
)
strategy = ExportImagesToFileSystemStrategy("output/images")
strategy.images_relative_path = "images" # 
options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.heading_level_offset = 1 # # Title -> ## Title
options.include_front_matter = True # préfixer les métadonnées YAML
options.image_export_strategy = strategy
MarkdownConverter.to_file("report.docx", "output/report.md", convert_options=options)
Inspection du document sans conversion
from groupdocs.markdown import MarkdownConverter
info = MarkdownConverter.get_info("business-plan.docx")
print(f"{info.file_format}, {info.page_count} pages, author: {info.author}")
Chargement d’un fichier protégé par mot de passe
from groupdocs.markdown import MarkdownConverter, LoadOptions, FileFormat
load_opts = LoadOptions(FileFormat.DOCX)
load_opts.password = "secret"
MarkdownConverter.to_file("protected.docx", "output.md", load_options=load_opts)
Flux et gestionnaires de contexte
from groupdocs.markdown import MarkdownConverter
with open("document.docx", "rb") as stream:
with MarkdownConverter(stream) as converter:
converter.convert("document.md")
API asynchrone — conversion de nombreux documents en parallèle
Comme les I/O de fichiers sont asynchrones, asyncio.gather() permet à un seul worker de traiter plusieurs documents sans blocage :
import asyncio
from groupdocs.markdown import MarkdownConverter
async def convert_many():
await asyncio.gather(
MarkdownConverter.to_file_async("a.docx", "a.md", None),
MarkdownConverter.to_file_async("b.pdf", "b.md", None),
MarkdownConverter.to_file_async("c.xlsx", "c.md", None),
)
asyncio.run(convert_many())
Cela rend la bibliothèque naturellement adaptée aux frameworks ASGI comme FastAPI — un seul worker peut servir de nombreuses requêtes de conversion concurrentes sans contention de threads.
Gestion des erreurs
Toutes les méthodes de conversion lèvent une exception en cas d’échec, avec des types d’exception spécifiques aux scénarios courants :
from groupdocs.markdown import (
MarkdownConverter,
DocumentProtectedException,
InvalidFormatException,
GroupDocsMarkdownException,
)
try:
MarkdownConverter.to_file("annual-report.docx", "annual-report.md")
except DocumentProtectedException:
print("Mot de passe incorrect ou manquant.")
except InvalidFormatException:
print("Le fichier est corrompu ou non pris en charge.")
except GroupDocsMarkdownException as ex:
print(f"Conversion échouée : {ex}")
Conçu pour les pipelines RAG et LLM
Le Markdown est le format d’entrée privilégié pour les modèles d’embeddding et les pipelines de récupération — il conserve les titres, listes, tableaux et emphases tout en étant facile à découper et à tokeniser. Un flux d’ingestion RAG typique ressemble à ceci :
import re
from groupdocs.markdown import MarkdownConverter, ConvertOptions, SkipImagesStrategy, MarkdownFlavor
options = ConvertOptions()
options.image_export_strategy = SkipImagesStrategy() # texte‑seul pour le RAG
options.flavor = MarkdownFlavor.COMMON_MARK
MarkdownConverter.to_file("business-plan.pdf", "business-plan.md", convert_options=options)
with open("business-plan.md", "r", encoding="utf-8") as f:
markdown = f.read()
# Découper par titres de niveau supérieur, puis embedder/indexer chaque fragment
chunks = [c for c in re.split(r"\n#{1,2} ", markdown) if c.strip()]
Comme la bibliothèque fonctionne entièrement en local, les documents sensibles ne quittent jamais votre environnement — une exigence courante pour les secteurs réglementés, les équipes juridiques et les bases de connaissances internes.
AI‑friendly by design
La plupart des SDK Python considèrent les assistants de codage IA comme une réflexion après coup — le développeur doit encore pointer l’agent vers la documentation, coller des exemples ou déboguer au coup par coup. GroupDocs.Markdown pour Python via .NET renverse ce paradigme : la bibliothèque est conçue pour que des agents comme Claude Code, Cursor, GitHub Copilot et Codex puissent la saisir sans aucune configuration manuelle.
AGENTS.md fourni dans la roue
C’est le premier package GroupDocs à inclure un fichier AGENTS.md directement dans la roue installée. Le fichier suit la convention émergente AGENTS.md — un README en Markdown destiné spécifiquement aux assistants de codage IA plutôt qu’aux humains.
Lorsque vous exécutez pip install groupdocs-markdown-net, un fichier apparaît à :
site-packages/groupdocs/markdown/AGENTS.md
Un assistant IA ouvrant votre projet peut le lire et apprendre immédiatement :
- La surface d’API publique complète (classes, méthodes, énumérations, exceptions) et leurs relations.
- Les modèles d’utilisation idiomatiques pour les scénarios les plus courants — API statique vs instance, sync vs async, stratégies d’image, front‑matter, gestion des erreurs.
- Les pièges courants et comment les éviter — par ex. quels surcharges de
ConvertOptionsacceptentNone, comment gérer les fichiers protégés par mot de passe, comment capturer les avertissements de conversion. - Le dépannage des problèmes spécifiques à la plateforme (libSkiaSharp sur macOS, ICU sur Linux).
En pratique, cela signifie que vous pouvez dire « utilise groupdocs-markdown-net pour convertir ce dossier de PDF en Markdown pour mon pipeline RAG » et l’agent génère du code fonctionnel du premier coup — aucune méthode halluciné, aucun ordre d’argument erroné, aucune importation devinée.
Documentation lisible par machine
Pour les agents qui ont besoin de consulter quelque chose qui ne figure pas dans AGENTS.md, la documentation produit complète est également publiée sous forme lisible par machine :
- Corpus monofichier — la documentation entière en un seul fichier Markdown, prête à être injectée dans la fenêtre de contexte d’un agent :
https://docs.groupdocs.com/markdown/python-net/llms-full.txt - Markdown page par page — ajoutez
.mdà n’importe quelle URL de docs pour récupérer la source brute :https://docs.groupdocs.com/markdown/python-net/quick-start-guide.md - Index
llms.txt— une table des matières de style llms.txt qui oriente les agents vers les pages nécessaires :https://docs.groupdocs.com/markdown/python-net/llms.txt
Serveur MCP pour les recherches de docs en direct
Pour les agents qui parlent le Model Context Protocol, nous exposons les docs via un serveur MCP. Ajoutez ceci à la configuration de votre Claude Code ou Cursor :
{
"mcpServers": {
"groupdocs-docs": {
"url": "https://docs.groupdocs.com/mcp"
}
}
}
Après cela, votre agent peut interroger la documentation à la demande au lieu de dépendre de données d’entraînement qui pourraient être obsolètes.
Markdown en entrée, Markdown en sortie
Il y a une belle symétrie : la sortie de la bibliothèque est du Markdown — le format que les LLM analysent le mieux pour le RAG — et sa documentation est également en Markdown, servie comme fichier unique pour une ingestion facile dans la fenêtre de contexte. Que vous demandiez à un agent d’écrire du code qui utilise la bibliothèque, ou de comprendre vos documents via la bibliothèque, le Markdown est le médium commun.
Exemple d’export
Les extraits ci‑dessus sont parmi les programmes les plus courts et utiles que l’on puisse écrire avec la bibliothèque. Voici la même idée empaquetée comme un projet exécutable : document source, script Python, sortie pré‑générée, requirements.txt et Dockerfile — pour que vous puissiez tester de bout en bout sans rien écrire de zéro.
DOCX source
Le fichier source business-plan.docx est un court plan d’affaires richement formaté avec titres, tableaux, images et métadonnées.
Script Python
from groupdocs.markdown import MarkdownConverter, ConvertOptions, MarkdownFlavor
def quick_example():
"""Convertir un document Word en Markdown avec le flavor GitHub et le front‑matter YAML."""
# One‑liner — renvoie une chaîne Markdown
md = MarkdownConverter.to_markdown("business-plan.docx")
# Avec options — écrit dans un fichier
options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.include_front_matter = True
options.heading_level_offset = 1
MarkdownConverter.to_file("business-plan.docx", "quick-example.md", convert_options=options)
if __name__ == "__main__":
quick_example()
Markdown de sortie
Le fichier de sortie quick-example.md commence par un bloc de front‑matter YAML extrait automatiquement des métadonnées du document, suivi du contenu converti avec les tables au format GitHub Flavored et une hiérarchie de titres décalée (prêt à être intégré dans un document plus grand).
Application d’exemple exécutable
Tout est regroupé : sample-app.zip. Décompressez, puis :
cd src
python -m venv .venv
# Windows : .venv\Scripts\activate
# Linux/macOS : source .venv/bin/activate
pip install -r requirements.txt
python quick_example.py
Ou exécutez‑le dans Docker — le Dockerfile inclus configure la dépendance ICU dont le runtime .NET empaqueté a besoin sous Linux :
cd src
docker build -t groupdocs-markdown-python-example .
docker run --rm -v "$(pwd)/output:/app/output" groupdocs-markdown-python-example
Résumé
GroupDocs.Markdown pour Python via .NET apporte le moteur complet de conversion document‑>Markdown à Python sous forme de roue autonome — aucune dépendance externe, aucun cloud, aucune surprise. Une API pythonique, le support async et une intégration de premier ordre avec les outils IA en font un choix pratique pour les équipes Python qui construisent des systèmes RAG, des générateurs de sites statiques ou des pipelines de traitement de documents.
En savoir plus
- Package PyPI : https://pypi.org/project/groupdocs-markdown-net/
- Page produit : https://products.groupdocs.com/markdown/python-net/
- Documentation : https://docs.groupdocs.com/markdown/python-net/
- Notes de version : https://releases.groupdocs.com/markdown/python-net/release-notes/
- Exemples de code sur GitHub : https://github.com/groupdocs-markdown/GroupDocs.Markdown-for-Python-via-.NET
- Informations de licence : https://about.groupdocs.com/legal/
- Article de sortie .NET connexe : GroupDocs.Markdown for .NET — First Public Release
Support & feedback
Pour toute question ou assistance technique, veuillez utiliser notre Free Support Forum — nous serons ravis de vous aider.