Hermes sait désormais lire les documents PDF, Word, Excel, EPUB et RTF : guide pratique

Faire lire un document à une IA semble trivial, mais en pratique c’est étonnamment pénible : les PDF nécessitent une extraction du texte, les fichiers Word des bibliothèques d’analyse, et les formats hérités RTF ou EPUB ne disposent presque d’aucun outil prêt à l’emploi. Votre premier réflexe est généralement de « copier-coller le contenu dans le chat » — ce qui cesse de fonctionner dès qu’on se retrouve face à un rapport de 40 pages, un contrat mis en forme ou une feuille de calcul de plusieurs centaines de lignes.
Hermes Agent vient de réduire tout cela à une seule commande. read_file, l’outil le plus utilisé de la boîte à outils de l’agent, sait désormais lire directement les PDF, Word, Excel, EPUB, RTF et une douzaine d’autres formats de documents, en les convertissant en Markdown propre pour le modèle. Cet article s’appuie sur une vérification pratique du dernier code en amont : quels formats sont pris en charge, comment cela fonctionne sous le capot, que faire des documents scannés, et des cas d’usage réalistes pour chaque type de fichier.
Le résumé en un paragraphe
read_file embarque une extraction automatique intégrée pour trois formats — les notebooks Jupyter (.ipynb), Word (.docx) et Excel (.xlsx) — sans aucune dépendance supplémentaire.
Par-dessus, Hermes a introduit une dépendance optionnelle, firecrawl-anydoc (noyau Rust, importé sous le nom anydoc), qui élargit la couverture aux PDF, Office hérité (.doc/.ppt/.xls), OpenDocument (.odt/.ods/.odp), RTF et EPUB, tous convertis en Markdown via un modèle de document partagé. Une fois installé, lire ces formats ne se distingue plus de la lecture d’un simple fichier texte.
Matrice complète des formats
| Catégorie | Formats | Chemin d’extraction |
|---|---|---|
| Notebooks | .ipynb |
Intégré (stdlib, aucune dépendance) |
| Word | .docx |
Intégré (stdlib, aucune dépendance) |
| Excel | .xlsx |
Intégré (stdlib, aucune dépendance) |
.pdf |
anydoc (optionnel) | |
| Office hérité | .doc .docm .ppt .pps .pot .pptx .pptm .ppsx .ppsm .xls .xlsm .xlsb |
anydoc (optionnel) |
| OpenDocument | .odt .ods .odp |
anydoc (optionnel) |
| RTF | .rtf |
anydoc (optionnel) |
| EPUB | .epub |
anydoc (optionnel) |
Un détail de conception mérite d’être signalé : les extracteurs intégrés restent prioritaires pour .docx/.xlsx. Même avec anydoc installé, ces deux formats passent toujours par le chemin stdlib, de sorte que le comportement est identique, qu’anydoc soit présent ou non.
Comment l’utiliser : il suffit d’appeler read_file
Pas de nouvelle commande, pas de nouveau paramètre pour l’utilisateur. Il suffit de passer un chemin de document à read_file :
read_file(path="/tmp/quarterly-report.pdf")
Ce qui revient est un texte Markdown numéroté par lignes, avec la même pagination offset/limit, la même troncature selon le budget de caractères et la même masquage des informations sensibles que pour tout autre fichier. Les documents trop volumineux sont tronqués au budget de lecture unique, avec une indication pour continuer via offset — exactement comme pour la lecture d’un gros fichier texte.
Installation paresseuse : installé automatiquement à la première lecture, ne bloque jamais
anydoc n’est pas une dépendance obligatoire. Elle est enregistrée dans lazy_deps sous le nom tool.doc_extract (firecrawl-anydoc==0.1.6) et installée automatiquement la première fois que vous lisez ce type de fichier, avec prompt=False pour que read_file ne puisse jamais bloquer en attendant une confirmation.
Si l’installation échoue ou si le fichier est malformé, le ConvertError d’anydoc est mappé vers ExtractionError, et read_file retombe sur le traitement normal du chemin/binaire au lieu de planter. Les documents chiffrés, les PDF corrompus et les EPUB vides empruntent tous ce chemin de repli sûr.
Exemple de sortie vérifiée
Prenons un vrai contrat DOCX comme exemple. L’extracteur intégré analyse les paragraphes et les nœuds texte de word/document.xml :
1|Quarterly report: revenue up 23%
2|Second paragraph with contract terms.
Les tableaux, sauts de ligne et tabulations sont préservés ; le XLSX est émis feuille par feuille, les feuilles masquées étant ignorées :
1|# ── Sheet: Q1 ──
2|region revenue growth
3|APAC $12.4M 18%
4|EMEA $9.1M 12%
Documents scannés : le chemin OCR
Les PDF à base de texte s’extraient proprement, mais les PDF scannés (à base d’images) nécessitent un OCR. Dans ce cas, les chemins intégré/anydoc ne peuvent résoudre aucun texte, et le bon outil est la compétence ocr-and-documents (fournie par défaut avec Hermes, v2.3.0).
La compétence propose deux extracteurs locaux :
| Capacité | pymupdf (léger) | marker-pdf (haute qualité) |
|---|---|---|
| PDF à base de texte | ✅ | ✅ |
| PDF scanné (OCR) | ❌ | ✅ (90+ langues) |
| Tableaux | ✅ (basique) | ✅ (grande précision) |
| Équations / LaTeX | ❌ | ✅ |
| Blocs de code / formulaires | ❌ | ✅ |
| Détection de l’ordre de lecture | ❌ | ✅ |
| EPUB | ✅ | ✅ |
| Taille d’installation | ~25 Mo | ~3-5 Go |
| Vitesse | Instantané | ~1-14 s/page (CPU) |
pip install pymupdf pymupdf4llm
python scripts/extract_pymupdf.py scanned.pdf --markdown
Documents par URL : web_extract d’abord
Si le document est en ligne (articles arXiv, rapports d’entreprise, PDF publics), essayez web_extract en premier — il convertit le PDF en Markdown via Firecrawl, sans dépendance locale :
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
Ce n’est que lorsque le fichier est local, que web_extract échoue ou que vous avez besoin d’un traitement par lots qu’il faut passer en local. Le choix est limpide : URLs → web_extract, documents texte locaux → read_file, scans/mises en page complexes → ocr-and-documents.
Scénarios concrets
Scénario 1 : relire des contrats (Word / RTF)
Passez contract.docx ou un contract.rtf hérité directement à read_file et laissez le modèle extraire les clauses clés, signaler les termes risqués et comparer deux versions. Le RTF est le format hérité le plus courant dans les grandes entreprises — et il n’est désormais plus nécessaire de le convertir d’abord en DOCX à la main.
Scénario 2 : lire des rapports (Excel)
read_file émet le .xlsx sous forme de texte de tableau par feuille, si bien que le modèle peut calculer des totaux, repérer les anomalies et produire directement une synthèse d’analyse. Les feuilles masquées sont ignorées automatiquement, ce qui tient les zones de travail internes à l’écart du modèle.
Scénario 3 : analyse de PDF par lots
Donnez à Hermes une liste de chemins de rapports PDF et laissez-le lire chacun avec read_file, puis résumer. Combiné à un script execute_code qui parcourt un répertoire, une pile de plusieurs dizaines de documents peut être résumée en une seule session.
Scénario 4 : lire des ebooks (EPUB)
L’EPUB est le format standard des livres numériques. Passez un .epub à Hermes pour résumer les chapitres, en extraire les idées clés et construire des notes de lecture — anydoc comme marker-pdf prennent en charge l’EPUB.
Scénario 5 : articles de recherche
Les articles à base de texte vont directement à read_file ; les articles scannés passent par ocr-and-documents avec marker-pdf ; tout ce qui possède une URL passe par web_extract. Trois chemins couvrent tout le pipeline, du téléchargement du PDF à la lecture approfondie.
Mise à jour et disponibilité
La fonctionnalité est livrée en deux couches :
- Le trio intégré (.ipynb/.docx/.xlsx) : disponible avec Hermes depuis juin 2026 — un
hermes updatevers n’importe quelle version récente suffit. - L’extension anydoc (PDF/Office hérité/ODF/RTF/EPUB) : introduite par le commit
b2598b41e(fusionné dans main en amont le 2026-08-05), c’est la capacité la plus récente après v0.20.0 et elle ne fait pas encore partie d’une release étiquetée. Lancezhermes updatepour récupérer le dernier main ; la lecture d’un tel fichier déclenche alors automatiquement l’installation paresseuse d’anydoc.
Résumé
| Où se trouve le fichier | Quoi utiliser | Dépendances |
|---|---|---|
| Local, .ipynb/.docx/.xlsx | read_file |
Aucune |
| Local, PDF/Office hérité/ODF/RTF/EPUB | read_file + anydoc |
Installation paresseuse automatique |
| Local, scans/mises en page complexes | Compétence ocr-and-documents |
pymupdf ou marker-pdf |
| URL web | web_extract |
Aucune |
La lecture de documents est l’une des capacités les plus fondamentales — et les plus sous-estimées — d’un agent IA. Hermes a ramené ce pipeline à une seule commande, et l’installation paresseuse abaisse à zéro la barrière des capacités optionnelles. La prochaine fois que vous tomberez sur un contrat PDF, un rapport Excel ou un ebook EPUB, contentez-vous de le lire — fini le copier-coller.
Vous voulez continuer à explorer les capacités fichiers et données d’Hermes ? Consultez notre tour d’horizon des astuces de productivité, le guide d’optimisation du stockage, ou installez la dernière version d’Hermes via le guide d’installation.