pdf2md-agent-skill - PDF/文档转 Markdown

让 LLM agent 高效读懂任何文档:PDF/Word/PPT/Excel 转 Markdown,PDF 智能分流(文本页 PyMuPDF + 公式页/扫描页视觉 OCR)

Qu'est-ce que 文档转 Markdown ?

Ce skill permet à un agent LLM (comme Claude Code, Cursor, Codex) de convertir efficacement des documents PDF, Word, PPT, Excel et images en Markdown, afin de pouvoir lire et analyser leur contenu. Pour les PDF, il utilise une stratégie intelligente : il analyse chaque page pour déterminer son type (texte, formule, scan), extrait les pages de texte avec PyMuPDF (rapide, gratuit), et utilise la vision OCR Ark pour les pages de formules (transcrites en LaTeX) ou les pages scannées. Cela garantit à la fois la rapidité et la qualité, même pour des documents complexes contenant des équations ou des images. Le skill s'utilise via une commande Python unique qui gère automatiquement le routage, sans que l'utilisateur ait besoin de spécifier le type de PDF. Il nécessite Python 3.10+, les bibliothèques pymupdf, openai et markitdown, ainsi que la variable d'environnement ARK_API_KEY pour les pages nécessitant un OCR.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add taotaoboom/pdf2md-agent-skill

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait 文档转 Markdown ?

Quand déclencher

Lorsque vous devez lire le contenu d'un PDF, utilisez d'abord ce skill pour le convertir en Markdown.

Convertissez d'abord le PDF en Markdown, puis utilisez l'outil de lecture de texte de l'agent actuel pour lire le fichier de sortie.

Scénarios de déclenchement :

  • L'utilisateur a fourni le chemin d'un PDF et demande à le lire, le résumer, l'analyser, le traduire ou poser des questions
  • Vous devez référencer un contenu spécifique du PDF
  • Vous devez extraire des tableaux, des formules ou des références du PDF

Flux de travail standard

Résolvez d'abord <skill_dir> comme le répertoire contenant ce SKILL.md. Ne présumez pas que le skill est installé dans ~/.claude/skills, car les chemins diffèrent pour Codex, les installations personnalisées et Windows.

Exécutez dans l'ordre fixe :

# Étape 1 : Conversion (gère automatiquement tous les types de PDF, pas besoin de les distinguer)
python3 "<skill_dir>/scripts/md_convert.py" "<chemin_du_pdf>" -o "<répertoire_temporaire_du_projet>/<nom>.md"

# Étape 2 : Utilisez l'outil de lecture de texte de l'agent actuel pour lire le fichier .md généré

Exemple :

python3 "<skill_dir>/scripts/md_convert.py" \
  "/chemin/vers/un-article.pdf" \
  -o "./article.md"

Lisez ensuite ./article.md.

Pourquoi cette conception

Les PDF comportent plusieurs types de pages, nécessitant des stratégies différentes. Le script détermine automatiquement le type de chaque page, vous n'avez pas à vous en soucier :

Type de pageStratégie du scriptExplication
Pages de texte normalesExtraction PyMuPDFRapide, gratuit, fusion de paragraphes + tri en deux colonnes + filtrage d'en-têtes
Pages denses en formulesOCR visuel ArkTranscription des formules en LaTeX (\( E_i \)), évite la fragmentation
Pages scannéesOCR visuel ArkRendu en image + reconnaissance par modèle visuel
Pages mixtesRoutage automatique page par pageUn article ne sera OCRisé que sur les pages de formules, équilibrant vitesse et qualité

Stratégie hybride intelligente : Le script détecte la densité de symboles mathématiques par page. Les pages de formules (densité > 1,5 %) sont automatiquement OCRisées pour transcrire les formules en LaTeX, tandis que les pages de texte sont traitées par PyMuPDF.

Comportements interdits :

  • ❌ Ne déterminez pas le type de PDF avant d'appeler la commande – appelez directement, le script est entièrement automatique
  • ❌ N'utilisez pas la commande brute markitdown pour convertir des PDF (le backend pdfminer par défaut perd les espaces)
  • ❌ Ne lisez pas le PDF comme un fichier texte brut
  • ❌ N'omettez pas le paramètre -o (ce paramètre est obligatoire)

Paramètres

ParamètreDescriptionQuand l'utiliser
inputChemin du fichier d'entrée (obligatoire)Toujours
-o, --outputChemin du fichier .md de sortie (obligatoire)Toujours
--ocrForcer l'OCR complet sur tout le documentUniquement si la détection automatique échoue clairement (rare)
-m, --modelModèle visuel, par défaut doubao-seed-1-6-flash-250828Si vous devez changer de modèle
--allow-partialPermet de réussir même si des pages OCR échouentUniquement si l'utilisateur accepte explicitement une sortie incomplète
--no-llmDésactive l'augmentation LLM pour les formats non-PDFUniquement pour les formats non-PDF
--versionAffiche le numéro de versionPour vérifier la version

L'appel par défaut ne doit inclure aucun paramètre optionnel :

python3 "<skill_dir>/scripts/md_convert.py" input.pdf -o ./out.md

Formats non-PDF

Word/PPT/Excel/images sont également pris en charge, en utilisant le chemin natif de markitdown :

python3 "<skill_dir>/scripts/md_convert.py" rapport.docx -o ./rapport.md

Ces formats peuvent être lus directement avec les outils de document correspondants ; convertissez-les en Markdown uniquement si une structure unifiée est nécessaire.

Environnement et dépendances

Variables d'environnement :

  • ARK_API_KEY – Obligatoire pour les pages denses en formules, pages scannées ou pages vides déclenchant un OCR visuel. Les PDF textuels qui ne déclenchent pas d'OCR n'ont pas besoin de cette variable.
  • ARK_BASE_URL – Optionnel, par défaut https://ark.cn-beijing.volces.com/api/v3. Ark est vérifié ; les autres points de terminaison doivent être compatibles avec Chat Completions, les entrées visuelles et les data URL. Testez-les avant utilisation.

Dépendances :

  • pymupdf (extraction de texte PDF + rendu)
  • openai (client du modèle visuel Ark)
  • markitdown (backend pour les formats non-PDF)

Nécessite Python 3.10+.

Gestion des erreurs

Message d'erreurCauseTraitement
ARK_API_KEY non définiLes pages de formules/scannées/vides nécessitent un OCR visuelConfigurez la clé, ou utilisez une entrée ne déclenchant pas d'OCR
Fichier inexistantChemin erroné ou contenant des espaces sans guillemetsEntourez le chemin de guillemets
openai/markitdown/pymupdf non installéDépendance manquantepip install <nom_du_paquet>
PDF chiffréLe PDF est protégé par un mot de passeDéchiffrez d'abord le PDF
Pages OCR manquantes détectéesClé invalide / problème réseau / nom de modèleVérifiez l'erreur puis réessayez ; utilisez --allow-partial uniquement si une sortie incomplète est acceptée
Le chemin de sortie ne peut pas être identique au fichier d'entréeLa sortie écraserait le document originalSpécifiez un chemin différent pour le Markdown
Conversion réussie mais contenu videIl s'agit peut-être d'un PDF purement image mal interprétéAjoutez --ocr pour forcer un OCR complet

En cas d'échec de la conversion : ne réessayez pas la même commande à plusieurs reprises, consultez d'abord les messages d'erreur sur stderr pour identifier le problème.

Conventions de sortie

  • Le script écrit le Markdown dans le fichier spécifié par -o, et envoie les logs de traitement (type de chaque page, progression) sur stderr
  • En cas de succès, la dernière ligne est : OK: <entrée> -> <sortie> (XX Ko)
  • Par défaut, si une page OCR échoue, le script retourne un code de sortie non nul ; utilisez explicitement --allow-partial pour accepter une sortie incomplète
  • Lisez le fichier de sortie avec un outil de lecture de texte avant de poursuivre le travail basé sur son contenu

Répartition avec les autres outils

ScénarioOutil
Lire du contenu PDFCe skill (obligatoire)
Lire Word/PPT/ExcelCe skill ou l'outil document de l'agent actuel
Lire texte pur/code/MarkdownL'outil de lecture de texte de l'agent actuel

Skills associés