convert-pdf-to-md

Par github · awesome-copilot

Convertit les documents PDF (.pdf) en Markdown afin que leur contenu puisse être analysé, résumé, recherché ou extrait avec précision. Utilisez cette skill chaque fois que l'utilisateur partage, référence ou pose une question sur un fichier .pdf — même s'il ne dit pas explicitement « convertir » ou « markdown ». Cela inclut les demandes visant à « lire », « résumer », « réviser », « extraire des données de », « comparer » ou « analyser » un rapport, un article, une facture, un formulaire, un contrat ou un document scanné au format PDF. Exécutez toujours le script de conversion fourni pour produire le Markdown en premier ; ne tentez pas d'analyser le contenu PDF directement ni d'écrire du code d'extraction ad hoc. Utilisez également cette skill pour les demandes par lot portant sur un dossier entier de documents PDF. IMPORTANT : Lorsque l'utilisateur référence un dossier ou un ensemble de documents contenant plusieurs types de fichiers (.pdf, .docx, .xlsx), invoquez les trois skills associées — convert-pdf-to-md, convert-word-to-md et convert-excel-to-md — afin qu'aucun type de fichier ne soit ignoré silencieusement.

npx skills add https://github.com/github/awesome-copilot --skill convert-pdf-to-md

Convertir un PDF en Markdown

Quand utiliser cette skill

Déclenchez cette skill chaque fois qu'il y a un fichier .pdf qui doit être compris ou traité — par exemple, un utilisateur joint un PDF et pose des questions à son sujet, souhaite un résumé, veut extraire des données ou des tableaux spécifiques, ou veut traiter plusieurs PDFs d'un dossier ensemble. Le PDF est un format de mise en page/impression, pas lisible de manière fiable en texte brut, donc convertissez-le toujours en Markdown d'abord en utilisant le script de cette skill plutôt que d'essayer d'ouvrir ou d'analyser le fichier directement.

Cette skill ne supporte que le .pdf — c'est le seul format de la famille PDF de MarkItDown, donc il n'y a pas de format hérité à gérer ici (contrairement au .doc de Word ou au .xls d'Excel).

Types de fichiers mixtes : Lorsque l'utilisateur référence un dossier ou un ensemble de documents contenant plusieurs types de fichiers supportés (.pdf, .docx, .xlsx), cette skill ne traite que les fichiers .pdf. L'agent DOIT aussi invoquer les skills sœurs en parallèle :

  • convert-word-to-md pour tout fichier .docx
  • convert-excel-to-md pour tout fichier .xlsx

Ne traitez jamais un dossier et n'ignorez pas silencieusement un type de fichier supporté. Les trois skills doivent être invoquées ensemble quand des types mixtes sont présents.

Setup (une fois par environnement)

Avant la première conversion dans un environnement donné, suivez references/setup.md étape par étape pour vous assurer que Python, pip, markitdown et pymupdf (pour l'extraction d'images) sont installés. Faites-le de manière proactive plutôt que de deviner si l'environnement est prêt — le script lui-même échouera aussi avec un pointeur clair vers ce fichier si une dépendance s'avère manquante, donc il est sûr de simplement essayer la conversion d'abord si vous êtes raisonnablement confiant que le setup a déjà été fait.

Utilisation

Le script de conversion se trouve à scripts/convert_pdf_to_md.py.

Structure de sortie : Le convertisseur PDF de MarkItDown extrait le texte et les tableaux uniquement — il n'a aucune notion d'images intégrées du tout. Ce script extrait séparément les vraies images intégrées via PyMuPDF et écrit un dossier autonome par document :

<name>/
    img/
        page001_img001.<ext>
        page002_img001.<ext>
        ...
    <name>.md

Parce que le texte PDF de MarkItDown ne préserve pas de marqueurs fiables par page, il n'y a aucun moyen sûr de savoir exactement où une image doit être insérée. Plutôt que de risquer de mal placer des images à côté du mauvais paragraphe, le script ajoute une section ## Extracted Images à la fin du Markdown, avec un sous-titre ### Page N par page qui contient des images — lisez cette section séparément du texte du corps principal. Si le document n'a pas d'images intégrées, aucun dossier img/ ou section Extracted Images n'est créé.

Fichier unique :

python scripts\convert_pdf_to_md.py "C:\path\to\document.pdf"

Cela crée un dossier document\ à côté du fichier source (contenant document.md et, s'il est présent, document\img\). Pour contrôler le dossier de destination explicitement :

python scripts\convert_pdf_to_md.py "C:\path\to\document.pdf" -o "C:\path\to\output_folder"

Un dossier de PDFs (mode batch) :

python scripts\convert_pdf_to_md.py "C:\path\to\folder"

Ajoutez --recursive pour inclure aussi les sous-dossiers :

python scripts\convert_pdf_to_md.py "C:\path\to\folder" --recursive

Chaque .pdf trouvé obtient son propre dossier de sortie <name>\ à côté de lui par défaut. Passez -o "C:\path\to\output_parent" pour collecter tous les dossiers <name>\ générés sous un répertoire parent séparé à la place (la structure des sous-dossiers est préservée quand combinée avec --recursive).

Après la conversion, lisez le(s) fichier(s) .md résultant(s) pour effectuer l'analyse réelle que l'utilisateur a demandée — le travail du script est seulement de produire un Markdown (et des images) précis, pas d'interpréter le contenu.

Décider où va la sortie

Par défaut — toujours mettre la sortie à côté du fichier source. Le dossier <name>/ est créé dans le même répertoire que le .pdf source. C'est le défaut obligatoire pour tous les cas. NE L'OVERRIDE PAS sauf si l'utilisateur demande explicitement un emplacement différent.

N'utilisez -o que quand l'utilisateur fournit explicitement un chemin de sortie (par exemple, « sauvegardez la sortie dans C:\output », « mettez les résultats dans D:\work »). NE passez PAS -o en fonction du répertoire de travail actuel de l'agent, du dossier d'état de la session, ou de tout emplacement implicite.

Si le chemin du fichier source ne peut pas être complètement résolu — par exemple, l'utilisateur fournit seulement un nom de fichier sans répertoire, ou le chemin est ambigu — utilisez ask_user pour confirmer le chemin absolu complet avant d'exécuter la conversion. Ne devinez jamais et ne supposez jamais le répertoire.

Dépannage

Symptôme Cause probable Solution
ModuleNotFoundError: No module named 'markitdown' ou 'fitz' / code de sortie 2 MarkItDown ou PyMuPDF non installés Suivez references/setup.md
ERROR: Unsupported file type '...' / code de sortie 3 Pas un fichier .pdf Demandez à l'utilisateur le fichier correct, ou s'il s'agit de .doc/.docx/.xlsx, utilisez la skill sœur correspondante à la place
ERROR: Input path not found / code de sortie 3 Mauvais chemin, ou fichier déplacé Confirmez le chemin correct avec l'utilisateur
FAILED <file> -> ... dans la sortie batch Ce fichier spécifique est corrompu, protégé par un mot de passe, ou autrement illisible Signalez le(s) fichier(s) qui a/ont échoué ; les autres fichiers du batch réussissent quand même
NOTE: skipped N non-.pdf file(s) Le dossier contient des fichiers non-PDF Attendu — ces fichiers sont volontairement ignorés
Le corps du Markdown est vide ou presque vide malgré l'extraction d'images Le PDF est numérisé/image uniquement sans couche de texte intégrée ; MarkItDown n'effectue pas de OCR Dites à l'utilisateur que l'OCR n'est pas supportée — les images de page extraites sont toujours disponibles pour qu'il les visualise
Les images apparaissent dans une annexe au lieu d'être alignées avec le texte Limitation délibérée — le texte PDF de MarkItDown n'a pas de marqueurs fiables par page pour placer les images en ligne Comportement attendu ; effectuez une référence croisée entre le titre ### Page N et le contexte du texte environnant si nécessaire

Skills similaires