IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

extraire le contenu de documents pdf avec PyPDF2 [Python 3.X]


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut extraire le contenu de documents pdf avec PyPDF2
    Bonjour,

    J'aimerais extraire des tableaux de nombres de documents pdf.
    Candidement, je me suis dit que Python pourrait m'aider et je me mets donc à apprendre le language Python.
    J'en suis arrivé à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import PyPDF2
    from PyPDF2 import PdfFileReader
     
    myfile = "mon_fichier.pdf"
    with open(myfile, 'rb') as f:
        reader = PdfFileReader(f)
        print('Nombre de pages', reader.getNumPages())
        contents = reader.getPage(0).extractText().split('\n')
        print(contents)
    Le module PyPDF permet d'extraire le texte de certains documents mais pas de tous.
    Pour le moment, les tests que j'ai fait m'ont donné le nombre de pages et du blanc pour la plupart des fichiers. Pour certains pdf, j'ai le nombre de pages et le texte.
    Pourquoi ne puis-je pas lire tous les pdf ?

    Merci pour vos conseils.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bonjour.

    Le contenu de ces PDF est-il du caractère systématiquement ?

    Un copié collé du texte présent dans ces PDF se colle-t-il dans un éditeur de texte ?

    Quand le PDF est typé "PDF caractères", le texte qu'il renferme est sélectionnable. Quand le PDF est typé "PDF images", ça devient nettement plus délicat si les tableaux (exemple) présents dans le PDF sont en réalité des images et non du texte mis en forme.

    Pour mon travail, j'ai dû assez récemment concevoir un script scannant des dizaines de milliers de PDF afin de déterminer ceux qui était d'un type ou de l'autre. J'utilisais moi aussi la lib PyPDF2 (il existe PyPDF4 désormais aussi) pour certaines manipulations de PDF mais pour ce qui est de récupérer le contenu de chaque page d'un PDF, j'utilisais un utilitaire externe nommé 'pdftotext.exe' issu d'un package gratuit, PDFtools.

    Peut être qu'avec cet utilitaire, vous obtiendriez un résultat différent ?

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Merci de partager votre expérience.
    Les documents ont un logo en haut de page mais tout le reste est sélectionnable et permet un copy-paste.
    Je vais jeter un coup d'oeil sur vos utilitaires.
    Merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    J'ajoute que j'ai testé hier la librairie PyPDF2 (obsolète et plus suivie) avec un PDF à moi dont je sais qu'il contient du texte.

    Au mieux, via la méthode extractText() de PyPDF2.PdfFileReader, je n'ai récupéré qu'une liste ou un tuple de \n.

    Avec l'utilitaire dont je parle et que j'utilise depuis des années (j'ai fait du Perl avec, puis du Python) pour faire de la capture de texte, j'obtiens toujours de très bons résultats.

    Edit 2021-09-21 (08:45 GMT) :

    Sur ce site PDF Text Extraction in Python, il est question d'extraire du texte de fichiers PDF, avec PyPDF2 pour récupérer certaines informations, mais aussi avec PDFminer.

    Note : PyPDF2 et PDFminer ne sont plus maintenus. Pour le premier, voir PyPDF4 (en espérant qu'il soit toujours maintenu).

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Bonjour,
    Merci pour la référence à PDFMiner. J'ai vu qu'on en parle dans d'autre blogs mais je n'ai pas encore creusé cette mine.
    Entretemps, hier soir, j'ai trouvé tabula qui donne aussi des résultats intéressants en extrayant le tableau du pdf pour le mettre dans un DataFrame Panda
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import tabula
     
    # Read pdf into list of DataFrame
    df = tabula.read_pdf("MonFichier.pdf", pages='all')
     
    # convert PDF into CSV file
    tabula.convert_into("MonFichier.pdf", "Monfichier.csv", output_format="csv", pages='all')
    Cela mérite d'y jetter un coup d'oeil plus approfondi.
    Merci pour vos conseils.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Bonjour,
    Merci pour votre aide. Grâce à vous et à pdfMiner + Tabula / tabula-py je parviens à extraire le contenu que je cherche.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Splitter des documents PDF avec iText
    Par osmoz dans le forum Général Java
    Réponses: 2
    Dernier message: 11/03/2008, 17h58
  2. peut-on protéger des documents pdf avec 4d?
    Par longomarc dans le forum 4D
    Réponses: 2
    Dernier message: 06/10/2007, 13h11
  3. extraire le contenu d'un fichier avec perl
    Par titexe dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2006, 15h21
  4. ouvrir document pdf avec chemin absolu complet
    Par aurelie83 dans le forum Langage
    Réponses: 2
    Dernier message: 20/11/2006, 17h48
  5. Protection de document PDF avec RAVE Report.
    Par Delphi2703 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/02/2006, 08h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo