AI Tools

Extraire le texte de CV PDF en Python avec pdfplumber

Extrayez proprement le texte des CV PDF en Python avec pdfplumber et détectez les PDF numérisés avant qu’ils ne perturbent votre application d’entretien IA.

Photo de profil de Long Nguyen

Long Nguyen

Développeur fullstack · Ingénieur IA · Chercheur

3 min de lecture
Extraire proprement le texte d’un CV PDF en Python avec pdfplumber

Pourquoi l’extraction de texte PDF est plus complexe qu’il n’y paraît

Pour mener l’entretien, l’IA a d’abord besoin du CV du candidat sous forme de texte propre : cette étape explique donc comment extraire le texte d’un CV PDF en Python. Dans la partie 2, nous avons donné à l’application un emplacement pour enregistrer un entretien et son CV. Il est maintenant temps de remplir le champ cv_text.

Le problème, c’est qu’un PDF n’est pas un fichier texte. Il s’agit d’un format de mise en page qui décrit la position des glyphes sur une page, et non un flux de phrases propre. En pratique, le texte extrait peut donc contenir des espaces inhabituels ou des retours à la ligne mal placés, tandis que les CV en plusieurs colonnes peuvent être lus dans le désordre. Pour la plupart des CV réels au format texte, une bonne bibliothèque suffit toutefois à obtenir un résultat assez fiable pour alimenter directement une IA.

Extraire du texte avec pdfplumber

Parmi les bibliothèques PDF Python, pdfplumber offre le meilleur compromis pour les CV : elle préserve bien mieux la mise en page et les espacements que les extracteurs minimalistes, sans nécessiter la configuration lourde d’une véritable solution d’OCR. Commencez par l’installer :

pip install pdfplumber

L’extraction elle-même est très courte. Ouvrez le fichier, parcourez ses pages et regroupez le texte en une seule chaîne :

import pdfplumber


def extract_text_from_pdf(file_path):
    with pdfplumber.open(file_path) as pdf:
        return "\n".join(page.extract_text() or "" for page in pdf.pages)

Le or "" est le détail important ici. extract_text() renvoie None pour une page dont le texte ne peut pas être extrait, et regrouper une valeur None provoquerait une erreur. Utiliser une chaîne vide par défaut permet à la fonction de rester fiable avec des fichiers réels et hétérogènes — une petite protection qui vous évite un plantage à cause de l’unique page inhabituelle d’un CV par ailleurs parfaitement exploitable.

C’est tout pour le cas nominal : avec un PDF classique basé sur du texte, vous obtenez en quelques lignes un contenu propre, prêt pour l’IA. Pas besoin d’ajouter trop tôt des abstractions ou une chaîne de nettoyage dont vous n’avez pas encore besoin — il suffit de résoudre directement le problème rencontré. Extraire le texte brut est l’objectif de cette étape ; vérifier qu’il s’agit bien d’un CV est une question distincte, que nous traiterons plus tard au niveau de l’IA. Si vous préférez éviter toute la construction et partir du code complet, prêt pour la production, il est disponible dans un kit de démarrage — sinon, passez à la partie 4, où nous traiterons les CV DOCX, qui dissimulent une grande partie de leur contenu dans des tableaux.

FAQ

Questions fréquentes

Pourquoi choisir pdfplumber plutôt que PyPDF2 ou pypdf ?

pdfplumber préserve mieux la mise en page et les espacements, ce qui est important pour les CV, car leur structure porte une partie du sens. Les bibliothèques plus simples renvoient souvent un texte désordonné, plus difficile à transmettre proprement à une IA.

Comment détecter un PDF numérisé ?

Essayez d’en extraire le texte et mesurez la quantité obtenue. Un véritable PDF texte renvoie un nombre important de caractères ; un PDF numérisé, constitué uniquement d’images, en renvoie très peu, voire aucun. Un seuil de caractères défini pour chaque page constitue un contrôle simple et efficace.

Mon application doit-elle appliquer automatiquement l’OCR aux CV numérisés ?

C’est possible, mais l’OCR ajoute une réelle complexité ainsi que de nouvelles sources d’erreurs. Pour une première version, il est plus simple de détecter le fichier numérisé et de demander un CV basé sur du texte. La version de production traite ce cas de manière plus complète.

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.