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 :

Besoin de parser un pdf venant d'un formulaire (pas de gestion de tables)


Sujet :

Python

  1. #1
    Membre �clair� Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par d�faut Besoin de parser un pdf venant d'un formulaire (pas de gestion de tables)
    Bonsoir

    Je ne parviens pas � trouve un module python (3.7) qui permet de parser un document pdf provenant d'un formulaire.

    Je ne peux pas, pour des raisons de confidentialit� poster le pdf, mais il faut imaginer comme une page HTML avec des cases ayant � chaque fois un titre et des valeurs.
    Exemple : une case avec une titre "Entreprise" qui contient adresse : 12 Rue Victor Hugo, Tel : xxxxxx, puis une case avec un autre titre "Facture" et plein de sous champs.
    Il ne s'agit pas de tables.

    J'ai test� de nombreux modules: pdfminer, PyPDF2, voir des modules exotiques... Ils ne remontent qu'une cha�ne de caract�res sans prendre en compte l'aspect hi�rarchique. Cha�ne contenant des d�limiteurs qui sont des "\n". Bref, si dans une case il y a des "\n" pour un champs (exemple adresse sur plusieurs lignes), c'est le chaos.

    Voici un exemple de mes recherches :
    https://stackoverflow.com/questions/...to-text-python

    -> Bref, PyPDF2 retourne une cha�ne (par page), je recherche un module qui retourne un dictionnaire ou une liste.


    Belle soir�e

  2. #2
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 775
    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 775
    Par d�faut
    Salut,

    Il y a longtemps j'avais utilis� pdfminer pour lire un document "structur�": des informations dans des bo�tes (bbox). Les boites qui contiennent du texte sont des LTTextBox ou des LTTextLine... et ces bbox sont des rectangles qui ont position, hauteur, largeur dans la page qui permette de savoir quoi regrouper.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invit�
    Invit�(e)
    Par d�faut
    Bonsoir !

    Tu as essay� ce genre de chose :
    Extraire une table : https://www.thepythoncode.com/articl...python-camelot
    PyPDF2 et formulaire : https://towardsdatascience.com/how-t...n-10b5e5f26f70
    Version barbare (OCR de Google) : https://codelabs.developers.google.c...er-v1-python#0

    Je suppose que tu as d�j� vu ces sites auparavant ce sont les premiers que me propose Google.

  4. #4
    Membre �clair� Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par d�faut
    Citation Envoy� par wiztricks Voir le message
    Salut,

    Il y a longtemps j'avais utilis� pdfminer pour lire un document "structur�": des informations dans des bo�tes (bbox). Les boites qui contiennent du texte sont des LTTextBox ou des LTTextLine... et ces bbox sont des rectangles qui ont position, hauteur, largeur dans la page qui permette de savoir quoi regrouper.

    - W
    Oui, j'ai vu cela, cela me parait compliqu� de param�trer les hauteurs et largeurs.

  5. #5
    Membre �clair� Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par d�faut
    Citation Envoy� par LeNarvalo Voir le message
    Bonsoir !

    Tu as essay� ce genre de chose :
    Extraire une table : https://www.thepythoncode.com/articl...python-camelot
    PyPDF2 et formulaire : https://towardsdatascience.com/how-t...n-10b5e5f26f70
    Version barbare (OCR de Google) : https://codelabs.developers.google.c...er-v1-python#0

    Je suppose que tu as d�j� vu ces sites auparavant ce sont les premiers que me propose Google.
    -> J'ai test�. visiblement mon document ne contient aucune page.

    -> Cela peut me remonter une cha�ne de caract�re (voir on post originel) avec le mode acroform

    Heu, j'avoue que le terme AI me rebute.

  6. #6
    Mod�rateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7 672
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7 672
    Par d�faut
    Bonjour,

    est-ce que tu ne gagnerais pas � pr�alablement convertir le pdf dans un format qui pourra �tre parcouru plus facilement ?
    si j'ai bien compris il s'agit de tableaux, donc
    pdf (-> txt) -> csv
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre �clair� Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par d�faut
    Citation Envoy� par N_BaH Voir le message
    Bonjour,

    est-ce que tu ne gagnerais pas � pr�alablement convertir le pdf dans un format qui pourra �tre parcouru plus facilement ?
    si j'ai bien compris il s'agit de tableaux, donc
    pdf (-> txt) -> csv
    ?
    si j'ai bien compris il s'agit de tableaux,
    Il ne s'agit pas de tableaux mais de formulaires.

  8. #8
    Mod�rateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7 672
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7 672
    Par d�faut
    une page HTML avec des cases ayant � chaque fois un titre et des valeurs
    je voyais �a comme une <table> (un "tableau").
    Il ne s'agit pas de tableaux mais de formulaires.
    je n'ai rien dit alors.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 775
    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 775
    Par d�faut
    Citation Envoy� par Bayard Voir le message
    Oui, j'ai vu cela, cela me parait compliqu� de param�trer les hauteurs et largeurs.
    Pas besoin de les param�trer, on g�n�re le document en m�moire et on va pouvoir r�cup�rer des informations "physiques" dedans.
    Le design de tout �a est document� ici : https://pdfminer-docs.readthedocs.io/programming.html

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 246
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 246
    Par d�faut
    Hello,
    en pi�ce jointe un exemple de formulaire PDF remplie. Est-ce que c'est sur ce type de formulaire que tu veux r�cup�rer des informations.

    Nom : formulairePDF.png
Affichages : 520
Taille : 217,5 Ko


    Ami calmant, J.P
    Images attach�es Images attach�es

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    Salut,
    Citation Envoy� par jurassic pork Voir le message
    en pi�ce jointe un exemple de formulaire PDF remplie. Est-ce que c'est sur ce type de formulaire que tu veux r�cup�rer des informations.
    Le pauvre Jurassic Pork, il a eu un accident de travail... Mais il travaille encore alors qu'il a bient�t 120 ans ??? Trop fort...

  12. #12
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 246
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 246
    Par d�faut
    Hello,
    avec ce code en utilisant mon fichier pdf exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    import PyPDF2 as pypdf
    pdfobject=open('d:/temp/s6201_remplie.pdf','rb')
    pdf=pypdf.PdfReader(pdfobject)
    print(pdf.get_fields())
    print(pdf.get_form_text_fields())
    voici ce que j'obtiens :
    {'nom organisme': {'/T': 'nom organisme', '/FT': '/Tx', '/V': 'Porcinou '}, 'adresse': {'/T': 'adresse', '/FT': '/Tx', '/V': '10 rue des porcins'}, 'adresse 2': {'/T': 'adresse 2', '/FT': '/Tx', '/V': '75000 PARIS'}, 'code organisme': {'/T': 'code organisme', '/FT': '/Tx', '/Ff': 29360128, '/V': '123456789'}, 'nom': {'/T': 'nom', '/FT': '/Tx', '/Ff': 2, '/V': 'Pork'}, 'pr�nom': {'/T': 'pr�nom', '/FT': '/Tx', '/Ff': 2, '/V': 'Jurassic'}, 'date naissance': {'/T': 'date naissance', '/FT': '/Tx', '/Ff': 29360128, '/V': '01021903'}, 'adresse victime': {'/T': 'adresse victime', '/FT': '/Tx', '/V': '25 rue de la pr�histoire'}, 'code postal': {'/T': 'code postal', '/FT': '/Tx', '/Ff': 29360128, '/V': '59000'}, 'num immat': {'/T': 'num immat', '/FT': '/Tx', '/Ff': 29360128, '/V': '1035959595890'}, 'cl� immat': {'/T': 'cl� immat', '/FT': '/Tx', '/Ff': 29360128, '/V': '29'}, 'ident employeur': {'/T': 'ident employeur', '/FT': '/Tx', '/V': 'Cochonkiri S.A'}, 'adresse employeur': {'/T': 'adresse employeur', '/FT': '/Tx', '/V': '43 rue des b�tises'}, 'code postal 2': {'/T': 'code postal 2', '/FT': '/Tx', '/Ff': 29360128, '/V': '59400'}, 'commune': {'/T': 'commune', '/FT': '/Tx', '/V': 'LILLE'}, 'commune 2': {'/T': 'commune 2', '/FT': '/Tx', '/V': 'CAMBRAI'}, 'num SIRET': {'/T': 'num SIRET', '/FT': '/Tx', '/Ff': 29360128, '/V': '23594939393939'}, 'gestion AT MP': {'/T': 'gestion AT MP', '/FT': '/Btn', '/V': '/Oui', '/Kids': [IndirectObject(62, 0, 31065760), IndirectObject(64, 0, 31065760)]}, 'date AT': {'/T': 'date AT', '/FT': '/Tx', '/Ff': 29360128, '/V': '22042022'}, 'date rechute AT': {'/T': 'date rechute AT', '/FT': '/Tx', '/Ff': 29360128}, 'date MP': {'/T': 'date MP', '/FT': '/Tx', '/Ff': 29360128}, 'date rechute MP': {'/T': 'date rechute MP', '/FT': '/Tx', '/Ff': 29360128}, 'l�sion': {'/T': 'l�sion', '/FT': '/Tx', '/V': 'bobo'}, 'si�ge l�sion': {'/T': 'si�ge l�sion', '/FT': '/Tx', '/V': "sur l'oreille"}, 'num AT MP': {'/T': 'num AT MP', '/FT': '/Tx', '/Ff': 29360128}}

    {'nom organisme': 'Porcinou ', 'adresse': '10 rue des porcins', 'adresse 2': '75000 PARIS', 'code organisme': '123456789', 'nom': 'Pork', 'pr�nom': 'Jurassic', 'date naissance': '01021903', 'adresse victime': '25 rue de la pr�histoire', 'code postal': '59000', 'num immat': '1035959595890', 'cl� immat': '29', 'ident employeur': 'Cochonkiri S.A', 'adresse employeur': '43 rue des b�tises', 'code postal 2': '59400', 'commune': 'LILLE', 'commune 2': 'CAMBRAI', 'num SIRET': '23594939393939', 'date AT': '22042022', 'date rechute AT': None, 'date MP': None, 'date rechute MP': None, 'l�sion': 'bobo', 'si�ge l�sion': "sur l'oreille", 'num AT MP': None}
    Ami calmant, J.P

  13. #13
    Membre �clair� Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par d�faut
    Merci Monsieur Pork.

    J'ai test� mes fichiers pdf avec PyPDF2 (m�me code) et j'ai Je teste tabula.

  14. #14
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 246
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 246
    Par d�faut
    Hello,
    Citation Envoy� par Bayard Voir le message
    J'ai test� mes fichiers pdf avec PyPDF2 (m�me code) et j'ai
    Si cela ne fonctionne pas c'est peut-�tre que ton formulaire pdf est de type xfa.
    Ami calmant, J.P

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. API C/C++ pour parser des PDF
    Par TheGzD dans le forum C++
    R�ponses: 6
    Dernier message: 20/07/2011, 21h23
  2. [PHP 5.2] PDF venant d'un webservice
    Par madevilts dans le forum Langage
    R�ponses: 2
    Dernier message: 16/05/2011, 15h59
  3. R�ponses: 0
    Dernier message: 05/11/2009, 18h12
  4. besoin aide - parser HTML - BeautifulSoup
    Par romses2 dans le forum R�seau/Web
    R�ponses: 2
    Dernier message: 20/07/2007, 14h42
  5. Parser XML -> PDF
    Par ebaynaud dans le forum Modules
    R�ponses: 2
    Dernier message: 12/10/2004, 14h07

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