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

Python Discussion :

Extraire un tableau d'un PDF


Sujet :

Python

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut Extraire un tableau d'un PDF
    Bonjour tout le monde !

    Je suis en train d'essayer de faire un truc assez simple... Extraire un tableau d'un fichier PDF.
    Je suis sous Linux, et donc j'ai des outils comme pdftotext pour m'aider.
    Et ça fonctionne... presque .

    Je mets en PJ une image impression écran d'un extrait du pdf, et voici ce que je peux générer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     Foliotation   Numéros et dates retenues dans               Dates retenues par                   Dates retenues par                   Dates proposées par
                             l'éd. A de Courson                           A. de La Borderie                    W. Davies                            H. Guillotel
     
               1             n° I                832                      832, juin                            un jeudi avant juin 832              832, 5 juin. - Redon.
                                                                                                               puis un mercredi de juin 832
               1r-v          n° II               832, 18 juin             =                                    = (jeudi)                            = - Redon.
               1 v 2.        n° III              834, 20 juin             =                                    = (samedi)                           =
               2-3           n° IV               834, 17 juin             =                                    = (mercredi)                         = - Le Faux en Six-sur-Aff.
               3r-v          n° V                833, 15 mai              =                                    = (jeudi)                            = - Augan.
               3v-4          n° VI               833, 10 décembre         =                                    = (mercredi)                         =
               4r-v          n° VII              833, 9 février           =                                    = (dimanche)                         = - Redon.
               4v-5          n° VIII             833, 26 octobre          =                                    = (dimanche)                         = - Carentoir.
               5r-v          n° IX               833 - 834                833, 29 janvier à 834, 28 janvier    =                                    833, après le 28 janvier
                                                                                                                                                    834, avant le 27 janvier. - Ruffiac.
               5v-6          n° X                833, 28 décembre         =                                    = (dimanche)                         =
               6r-v          n° XI               834, 27 janvier          =                                    = (mardi)                            835, 27 janvier ?
               6v-7          n° XII              834, 18 janvier          =                                    = (dimanche)                         = - Ruffiac.
               7v-v          n° XIII             837, 1er décembre        834, 28 novembre                     = (samedi)                           =
    Problème : j'ai des espaces pour délimiter mes colonnes, visuellement ça fonctionne, mais ce n'est pas facile à intégrer ensuite dans un tableau type openoffice.
    Donc, plusieurs questions : sur l'image on voit des traits qui délimitent les colonnes, est-ce qu'il est envisageable de les retrouver ?
    Sinon, peut-on (avec python bien sûr) lire et extraire un pdf comme pdftotext mais en ayant la maîtrise complète des caractères lus ?
    Dans l'idéal, j'aurais voulu un csv, ou un délimiteur pour les colonnes, mais je n'y arrive pas...

    Merci d'avance pour votre aide !
    Images attachées Images attachées  
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour,
    voici une 1ère piste où pdfTable.txt est le fichier contenant le texte du tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    # -*- coding: utf-8 -*-
     
    pdfTableTextFile = open('pdfTable.txt', 'r')
    infos = []
     
    for oneLine in pdfTableTextFile.readlines():
        while '   ' in oneLine:
            oneLine = oneLine.replace('   ', '  ')
     
        infos.append(oneLine.split('  '))
     
    print(infos)
    L'utilisation de regex pourrait rendre les choses plus propres.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Pourquoi ne pas construire un fichier .CSV à partir du .PDF?
    Les colonnes seraient délimitées par "," ou autre et afficher ou récupérer le contenu dans une autre application serait "simplifié".
    Plus "riche" serait de produire un fichier .XML avec des champs typés.
    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Je veux bien faire un CSV. Comment ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour wiztricks.

    Citation Envoyé par wiztricks Voir le message
    Pourquoi ne pas construire un fichier .CSV à partir du .PDF?
    Est-ce que pdftotext permet cela ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut rambc,

    Le pdf2txt de pdfminer permet ce genre de chose "sur le papier", mais je n'ai jamais eu le temps d'insister assez pour arriver à le faire marcher.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Points : 7
    Points
    7
    Par défaut solution en ligne de commande
    Bonjour,

    Je vais me faire taper sur les doigts car je m'écarte de python, mais la demande initiale de progfou concernant linux, on peut remplacer le script de rambc par ce petit bout de code bash.

    Cela donne un convertisseur pdf2csv qui tient en une ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pdftotext  -layout  fichier.pdf - | sed 's/    */;/g'

Discussions similaires

  1. Extraire un tableau d'un PDF
    Par diozigre dans le forum Documents
    Réponses: 1
    Dernier message: 20/11/2014, 15h28
  2. Extraire un tableau d'un PDF
    Par progfou dans le forum Autres langages
    Réponses: 0
    Dernier message: 22/01/2011, 10h35
  3. [Toutes versions] Extraire du texte d'un pdf et l'importer dans un tableau Excel (VBA)
    Par speedfree dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2010, 09h03
  4. [FPDF] Extraire le texte d'un pdf
    Par SandraG dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 08/10/2009, 14h48
  5. [FPDF] Tableau sur document PDF
    Par pollux75012 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 09/02/2007, 18h01

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