AI Tools

Extraire le texte de CV DOCX en Python avec python-docx

Découvrez comment extraire le texte de CV Word en Python avec python-docx pour obtenir un contenu propre et prêt pour l’IA, avec une limite à connaître.

Photo de profil de Long Nguyen

Long Nguyen

Développeur fullstack · Ingénieur IA · Chercheur

3 min de lecture
seoExtraire le texte d’un CV DOCX en Python avec python-docx

Pourquoi le DOCX pose un problème différent

Dans la partie 3, nous avons extrait le texte de fichiers PDF. Mais de nombreux candidats envoient plutôt des fichiers Word. Pour remplir le même champ cv_text, nous devons donc aussi extraire le texte d’un CV DOCX en Python. Bonne nouvelle : le DOCX est bien plus facile à traiter qu’un PDF.

Un fichier DOCX n’est pas un format de mise en page comme le PDF : en coulisses, il s’agit de XML structuré. Le texte y est donc déjà enregistré comme un contenu réel et ordonné, plutôt que sous forme de glyphes dispersés sur une page. Nous n’avons ainsi pas à gérer les problèmes d’espacement et d’ordre des colonnes typiques des PDF. Une bibliothèque dédiée permet d’accéder directement à cette structure de façon propre.

Extraire du texte avec python-docx

La bibliothèque python-docx lit nativement les documents Word. Commencez par l’installer :

pip install python-docx

Pour un CV standard, l’extraction consiste simplement à ouvrir le document et à réunir ses paragraphes :

from docx import Document


def extract_text_from_doc(file_path):
    doc = Document(file_path)
    return "\n".join(p.text for p in doc.paragraphs)

doc.paragraphs vous fournit chaque paragraphe du document dans l’ordre, tandis que p.text contient son texte brut. En les réunissant avec des retours à la ligne, on obtient une chaîne propre et lisible — exactement le texte de CV prêt pour l’IA que nous recherchons. Pour l’immense majorité des CV, dont le contenu se présente sous forme de titres et de paragraphes classiques, cela suffit. Pas besoin de manipuler le XML ni de surdévelopper la solution : c’est la réponse directe au problème rencontré.

Une limite à connaître

Il existe une particularité de python-docx à garder à l’esprit : doc.paragraphs renvoie uniquement les paragraphes — il n’inclut pas le texte placé dans les tableaux. Certains modèles de CV organisent leurs sections (compétences, coordonnées, expérience) dans des cellules de tableau. Dans ces fichiers, le code ci-dessus ignorera donc ce contenu sans générer d’erreur.

Pour la plupart des CV, ce cas ne se présente jamais, et la version simple est le bon choix pour commencer. Mais c’est une amélioration intéressante à réaliser vous-même : python-docx expose également doc.tables, ce qui permet d’extraire le texte des cellules de tableau et de l’ajouter. La version plus complexe — et plus intéressante — consiste à préserver le véritable ordre de lecture en parcourant le corps XML sous-jacent du document, afin que les paragraphes et les tableaux apparaissent dans l’ordre où ils sont réellement affichés, au lieu d’avoir tous les paragraphes suivis de tous les tableaux. Si vous souhaitez perfectionner votre parseur, c’est un exercice qui en vaut la peine.

Avec les PDF et les DOCX désormais pris en charge, l’application peut enfin transformer n’importe quel CV importé en texte propre. Si vous préférez éviter toute la construction et partir directement du code complet, prêt pour la production, le code source est disponible dans le kit de démarrage — sinon, la partie 5 vous attend : l’IA entre alors en scène avec l’utilisation de l’OpenAI Agents SDK dans une véritable application Django.

FAQ

Questions fréquentes

python-docx lit-il automatiquement les tableaux ?

Non. Parcourir doc.paragraphs renvoie uniquement les paragraphes et ignore silencieusement tout texte situé dans des tableaux. Pour les CV dont le contenu se trouve dans des paragraphes classiques, cela convient parfaitement. En revanche, les modèles qui utilisent des tableaux pour leur mise en page perdront ce contenu, sauf si vous gérez les tableaux séparément.

La version simple, limitée aux paragraphes, est-elle suffisante ?

Pour la grande majorité des CV, oui — la plupart sont structurés autour de titres et de paragraphes classiques, et la version courte les transforme en texte propre, prêt pour l’IA. Il faut simplement considérer l’absence de contenu dans les tableaux comme une limite connue, et non comme une surprise.

python-docx peut-il lire les anciens fichiers .doc ?

Non. Il prend uniquement en charge le format .docx moderne. Les anciens fichiers .doc doivent d’abord être convertis, avec une bibliothèque ou un outil externe, avant de pouvoir être analysés.

Restez informé avec Netalith

Recevez des ressources de développement, des mises à jour produit et des offres spéciales directement dans votre boîte mail.