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-net télécharge une roue autonome qui regroupe le runtime .NET et toutes les bibliothèques natives nécessaires. Pas d’installation dotnet, 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 le snake_case, les valeurs d’énumération le UPPER_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énements asyncio reste libre.
  • Convivial aux agents IA. La roue installée inclut un fichier AGENTS.md afin 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 de llms.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"  # ![](images/img-001.png)

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 ConvertOptions acceptent None, 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


Support & feedback

Pour toute question ou assistance technique, veuillez utiliser notre Free Support Forum — nous serons ravis de vous aider.