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 :

Récupérer une information dans un fichier PDF


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut Récupérer une information dans un fichier PDF
    Bonjour à tous,

    Après avoir chercher sur le site et avec Google je ne trouve pas de réponse alors je me lance.

    Mon problème : un client me transmet des formulaires remplis au format PDF et je souhaite extraire une information précise du formulaire : l'adresse

    J'ai récupérer un bout de code utilisant pyPDF
    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
    19
    20
    #!/usr/bin/env python
    # -*- coding: iso-8859-1 -*-
     
    ## {{{ http://code.activestate.com/recipes/511465/ (r2)
    import pyPdf
     
    def getPDFContent(path):
        content = ""
        # Load PDF into pyPDF
        pdf = pyPdf.PdfFileReader(file("test.pdf", "rb"))
        # Iterate pages
        for i in range(0, pdf.getNumPages()):
            # Extract text from page and add to content
            content += pdf.getPage(i).extractText() + "\n"
        # Collapse whitespace
        content = " ".join(content.replace("xa0", " ").strip().split())
    ##    content = " ".join(content.replace("\xa0", " ").strip().split())
        return content
     
    print getPDFContent("test.pdf").encode("ascii", "xmlcharrefreplace")
    mais je ne sais pas comment traité le résultat dont voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ˘ˇˆ˝˛˛˚˜ !!˙ˆˇˆˆ˘ˆ˝˙˛˛˚˝˘˚˚ !˛˝˛˝"##$˚%!˝˘!&'˜(˝˙˛˛˚˝)˚&*ˆ˝˘˜+"##$ (&"#˘˘˘˘ˇˆˆ˙˝ˇˆ˛ˆ˙ˇˆ˚˙ˆ˙˜ˆˆˇ˙ˆ˙ˆˇ !"#$%&!'$())(*"*+,%*-%*-%,$"./,!0!0$*0$$*%/,$"ˆ(.%,,0%1!&%,!"$-&$#)"-$2!*$-/$,(3&('!$3˜$-!&˜)(-!24˜&#%*",%&$%*--!"&#!/.&$(#5"3(#,-3!-$2(#(*6())$#0!%,1.#1("$".*-$#& $&$#)"(2& !"!0$*0$˜1#('!-$-& %&ˆ(.0#$-!&& $#!+!*%,.& (#ˇ7 $!0$*"(#78(*$(#)(#$,$+%,,4#$0(+*!"$-1$#"(*"(#$*&!&!$"(22$#!*+& $(#5.*-$#& $&$#)"%*-0(*-!&!(*"(2& !"!0$*0$9%*-7ˆ(.7%+#$$%"2(,,(3":;ˇ$2!*!&!(*"˘&&#!/.&!(*˘)$%*"%05*(3,$-+!*+%,,& $1%#&!$"3 ( %'$0(*&#!/.&$-&(%*- %'$#!+ &"!*& $(#5(#(,,$0&!'$(#5.*-$#& !"!0$*0$ˇ˘(,,$0&!'$(#5˘)$%*"& $(#5!*!&"$*&!#$&4!*.*)(-!2!$-2(#)%,(*+3!& *.)/$#(2(& $#"$1%#%&$%*-!*-$1$*-$*&3(#5"˜%""$)/,$-!*&(0(,,$0&!'$3 (,$ˇ˘$#!'%&!'$(#5˘)$%*"%*43(#50#$%&$-/4& $$-!&!*+˜)(-!2!0%&!(*˜%-%1&%&!(*(#&#%*",%&!(*(2& $(#5!*%*4)$-!% (3$'$#3(#5& %&0(*"&!&.&$"(,,$0&!'$(#53!,,*(&/$0(*"!-$#$-$#!'%&!'$(#52(#& $1.#1("$(2& !"!0$*0$ˇ(#& $%'(!-%*0$(2-(./&˜3 $#$& $(#5!")."!0%,0()1("!&!(*(#"(.*-#$0(#-!*+˜& $"4*0 #(*!<%&!(*(2& $(#5!*&!)$-6#$,%&!(*3!& )('!*+!)%+$˘"4*0 !*+˘3!,,/$0(*"!-$#$-$#!'%&!'$(#52(#& $1.#1("$(2& !"!0$*0$ˇ˘!0$*0$˘)$%*"& !"#$%&!'$())(*"*+,%*-%*-%,$"./,!0!0$*0$%+#$$)$*&ˇ˘(*6())$#0!%,˘)$%*"˘*(&1#!)%#!,4!*&$*-$-2(#(#-!#$0&$-&(3%#-"0())$#0!%,%-'%*&%+$(#1#!'%&$)(*$&%#40()1$*"%&!(*˘ˇ $$=0 %*+$(2& $(#52(#(& $#0(14#!+ &$-3(#5"/4)$%*"(2-!+!&%,2!,$6" %#!*+(#(& $#3!"$" %,,*(&/$0(*"!-$#$-&(/$!*&$*-$-2(#(#-!#$0&$-&(3%#-"0())$#0!%,%-'%*&%+$(#1#!'%&$)(*$&%#40()1$*"%&!(*˜1#('!-$-& $#$!"*(1%4)$*&(2%*4)(*$&%#40()1$*"%&!(*!*0(**$0&!(*3!& & $$=0 %*+$(20(14#!+ &$-3(#5"ˇ˘#!+!*%,& (#˘)$%*"& $!*-!'!-.%,(#$*&!&43 (0#$%&$-& $(#5ˇ˘(#5˘)$%*"& $3(#51#(&$0&$-/40(14#!+ &3 !0 !"(22$#$-.*-$#& $&$#)"(2& !"!0$*0$ˇ(#& $1.#1("$(2& !"!0$*0$˜3 $**(&!*0(*"!"&$*&3!& & $0(*&$=&˜3(#-"!*& $"!*+.,%#*.)/$#!*0,.-$& $1,.#%,*.)/$#ˇ>ˇ!0$*0$$#)">ˇ; $!0$*"(# $#$/4+#%*&"&(ˆ(.3(#,-3!-$˜#(4%,&462#$$˜*(*6$=0,."!'$˜!0$*0$2(#(*6())$#0!%,."$%*-2(#& $-.#%&!(*(20(14#!+ &!*& $(#5ˇˆ(.)%4:0(14& $(#5?!*0(#1(#%&$& $(#5!*&((*$(#)(#$(,,$0&!'$(#5"?0(14& $(#5%"!*0(#1(#%&$-!*%*4(,,$0&!'$(#5?%*-1./,!" ˜-!"&#!/.&$˜%#0 !'$˜1$#2(#)(#(& $#3!"$-!""$)!*%&$& $(#5(#& $(#5%"!*0(#1(#%&$-!*%*4(,,$0&!'$(#5˜&(& $1./,!0!*%*4)%&$#!%,2(#)!*%*4)$-!3 $& $#*(35*(3*(# $#$%2&$#0#$%&$-ˇ˜ˆ(.)."&*(&:!)1("$%*4&$#)"(*& $."$&(/$)%-$(2& $(#5˜& $(#5%"!*0(#1(#%&$-!*(,,$0&!'$(#5& %&%,&$#(##$"&#!0&& $&$#)"(2& !"!0$*0$(#%*4#!+ &"+#%*&$-.*-$#!&(# %"& $$22$0&(#!*&$*&(2#$"&#!0&!*+& $%/!,!&4&($=$#0!"$& ("$#!+ &"?!)1("$%*4-!+!&%,#!+ &")%*%+$)$*&&$0 *(,(+4(*& $(#5˜& $(#5%"!*0(#1(#%&$-!*(,,$0&!'$(#5& %&%,&$#"(##$"&#!0&"& $&$#)"(2& !"!0$*0$(#%*4#!+ &"+#%*&$-.*-$#!&(# %"& $$22$0&(#!*&$*&(2#$"&#!0&!*+& $%/!,!&4&($=$#0!"$& ("$#!+ &"?)%5$%*4$#!'%&!'$(#5"?"./,!0$*"$& $(#5?"./@$0&& $(#5&(%*4-$#(+%&(#4&#$%&)$*&%"-$2!*$-!*& $(14#!+ &˜$"!+*"%*-%&$*&"&;ABBˇˆ˜ˆ(.)."&:)%5$#$2$#$*0$&(& !"!0$*0$/4*!2(#)$"(.#0$-$*&!2!$#˜"1(5$*3(#-(#%"%11#(1#!%&$&(& $)$-!."$-(*%,,0(1!$"(2& $(#5%*-(,,$0&!'$(#5"1./,!" $-˜-!"&#!/.&$-˜1$#2(#)$-(#(& $#3!"$-!""$)!*%&$-(#)%-$%'%!,%/,$&(& $1./,!0/4ˆ(.?#$0(+*!"$& $!0$*"(#7"˝#!+!*%,.& (#7"#!+ &(2%&&#!/.&!(*!*%*4(#5%*-(,,$0&!'$(#5& %&ˆ(.1./,!" ˜-!"&#!/.&$˜1$#2(#)(#(& $#3!"$-!""$)!*%&$&(& $1./,!0%*-$*".#$& %&ˆ(.0#$-!&& $!0$*"(#˝#!+!*%,.& (#%"%11#(1#!%&$&(& $)$-!."$-?%*-&(& $$=&$*&#$%"(*%/,41#%0&!0%/,$˜5$$1!*&%0&%,,*(&!0$"& %&#$2$#&(& !"!0$*0$˜!*1%#&!0.,%#& $˜!2%*4˜& %&& $!0$*"(#"1$0!2!$"&(/$%""(0!%&$-3!& & $(#5˜.*,$""".0 -($"*(&#$2$#&(& $0(14#!+ &*(&!0$(#,!0$*"!*+!*2(#)%&!(*2(#& $(#5ˇ-!&!(*%,#('!"!(*"2(#& !#-1%#&!$")%5!*+."$(2& $(#5>ˇ>ˇ.#& $#,!0$*0$2#()& $!0$*"(#%0 &!)$ˆ(.1./,!" ˜-!"&#!/.&$˜1$#2(#)(#(& $#3!"$-!""$)!*%&$& $(#5?(#& $(#5%"!*0(#1(#%&$-!*(,,$0&!'$(#5& $!0$*"(#%+#$$"&((22$#&(& $#$,$'%*&& !#-1%#&4)%5!*+."$(2& $(#5!*%*4(2& $%,&$#*%&!'$""$&(.&%/('$,!0$*0$&(."$& $(#5(*& $"%)$&$#)"%*-0(*-!&!(*"%"+#%*&$-&(ˆ(. $#$.*-$#ˇ>ˇCˇ !"!0$*0$-($"*(&%22$0&%*4#!+ &"& %&& $"$#)%4 %'$.*-$#%*4%11,!0%/,$,%3˜!*0,.-!*+2%!#."$˜2%!#-$%,!*+(#%*4(& $#,$+%,,4#$0(+*!"$-,!)!&%&!(*(#$=0$1&!(*&(0(14#!+ &!*2#!*+$)$*&ˇ (&,>ˇDˇ,#!+ &"*(&$=1#$"",4+#%*&$-/4& $!0$*"(#%#$ $#$/4#$"$#'$-˜!*0,.-!*+/.&*(&,!)!&$-&(˜& $$=0,."!'$#!+ &&(0(,,$0&˜3 $& $#!*-!'!-.%,,4(#'!%,!0$*"!*+/(-4˜".0 %"0(,,$0&!*+"(0!$&4˜#(4%,&!$"2(#%*4."$(2& $(#52(#%*4#$%"(*3 !0 #$".,&"!*0())$#0!%,%-'%*&%+$(#1#!'%&$)(*$&%#40()1$*"%&!(*ˇCˇ%##%*&!$"%*-!"0,%!)$#=0$1&%"#$E.!#$-/4,%3˜& $(#5!",!0$*"$-/4& $!0$*"(#(*%*˘%"!"˘%*-˘%"%'%!,%/,$˘/%"!"%*-3!& (.&%*43%##%*&4(2%*45!*-˜$!& $#$=1#$""(#!)1,!$-ˇDˇ!)!&(2!%/!,!&4/@$0&&(%*4,!%/!,!&43 !0 )%4*(&/$$=0,.-$-(#,!)!&$-/4,%3& $!0$*"(#" %,,*(&/$,!%/,$%*- $#$/4$=1#$"",4$=0,.-$"%,,,!%/!,!&42(#,(""(#-%)%+$ (3"($'$#%*-3 $*$'$#0%."$-&(ˆ(.ˇFˇ$#)!*%&!(* $#!+ &"+#%*&$-&(ˆ(..*-$#& !"!0$*0$" %,,&$#)!*%&$%.&()%&!0%,,4.1(*%*4/#$%0 /4ˆ(.(2& $&$#)"(2& !"!0$*0$ˇ*-!'!-.%,"(#$*&!&!$"3 ( %'$#$0$!'$-(,,$0&!'$(#5"2#()ˆ(..*-$#& !"!0$*0$˜ (3$'$#˜3!,,*(& %'$& $!#!0$*0$"&$#)!*%&$-1#('!-$-".0 !*-!'!-.%,"(#$*&!&!$"#$)%!*!*2.,,0()1,!%*0$3!& & ("$!0$*0$"ˇGˇ˙$*$#%,Gˇ;ˇ $'%,!-!&4(#$*2(#0$%/!,!&4(2& $#$)%!*!*+&$#)"(2& !"%+#$$)$*&!"*(&%22$0&$-/4& $ (,-!*+(2%*41#('!"!(*(2!&&(/$!*'%,!-(#.*$*2(#0$%/,$ˇGˇ>ˇ !"!0$*0$0(*"&!&.&$"& $$*&!#$!0$*0$#$$)$*&/$&3$$*& $1%#&!$"3!& #$"1$0&&(& $(#5,!0$*"$- $#$ˇ $#$%#$*(.*-$#"&%*-!*+"˜%+#$$)$*&"(##$1#$"$*&%&!(*"3!& #$"1$0&&(& $(#5*(&"1$0!2!$- $#$ˇ $!0$*"(#" %,,*(&/$/(.*-/4%*4%--!&!(*%,1#('!"!(*"& %&)%4%11$%#!*%*40()).*!0%&!(*!*%*42(#)ˇGˇCˇ1$#"(*3 (!"*(&1%#&4&(& !"!0$*0$" %,, %'$*(#!+ &".*-$#& $(*&#%0&"!+ &"(2 !#-%#&!$"&;AAA&($*2(#0$%*4(2!&"&$#)"ˇGˇDˇ !"!0$*0$" %,,/$+('$#*$-/4& $,%3(2*+,%*-%*-%,$"%*-& $1%#&!$"!##$'(0%/,4"./)!&&(& $$=0,."!'$@.#!"-!0&!(*(2& $(.#&"(2*+,%*-%*-%,$"ˇHˇ*& $#(,$(2#$%&!'$())(*"Hˇ;ˇ$!& $#& $!0$*"(#*(#& $"$#)%4."$& $#$%&!'$())(*",(+($=0$1&&(!*-!0%&$& %&& $(#5!",!0$*"$-.*-$##$%&!'$())(*"!0$*0$ˇ41$#)!&&$-."$ %"&(/$!*0()1,!%*0$3!& & $#$%&!'$())(*"&#%-$)%#5."%+$+.!-$,!*$"%&& $&!)$(2."$(2& $#$%&!'$())(*"&#%-$)%#5ˇ $"$+.!-$,!*$")%4/$2(.*-(*& $#$%&!'$())(*"3$/"!&$(#/$(& $#3!"$%'%!,%/,$.1(*#$E.$"&2#()&!)$&(&!)$ˇHˇ>ˇ#$%&!'$())(*"(#1(#%&!(*-($"*(&1#(2!&2!*%*0!%,,42#()!&"#(,$!*1#('!-!*+& !"!0$*0$%*-3!,,*(&!*'$"&!+%&$& $0,%!)"(2%*4!0$*"(#(#."$#(2& $!0$*0$ˇHˇCˇ*$(2& $0(*-!&!(*"& %&#$%&!'$())(*"(#1(#%&!(*#$E.!#$"(2& $!0$*"(#%*-ˆ(.!"%*%05*(3,$-+$)$*&(2!&",!)!&$-#(,$%*-%+#$$)$*&/4%,,3 (."$& $!0$*0$& %&& $(#1(#%&!(*!"*(&#$"1(*"!/,$&(%*4(*$2(#& $"&%&$)$*&"%*-%0&!(*"(2ˆ(.(#& $!0$*"(#(#%*4(*$$,"$%&&$)1&!*+&(."$(#."!*+& !"!0$*0$ˇHˇDˇ#$%&!'$())(*"(#1(#%&!(*!"*(&1%#&4&(& !"!0$*0$˜%*-)%5$"*(3%##%*&43 %&"($'$#!*0(**$0&!(*&(& $(#5(#!*0(**$0&!(*&(& $!0$*0$˜%*-!*%,,$'$*&"!"*(&,!%/,$2(#%*4,(""(#-%)%+$#$".,&!*+2#()& $!0$*"(#7"(#ˆ(.##$,!%*0$(*& !"!0$*0$(#(*!&"$*2(#0$%/!,!&4ˇHˇFˇˆHˇ;˜Hˇ>˜HˇC˜HˇD˙7ˆˆˇ (&-$˙˘˘˘&˘˙%˝˙˛˛˝˝˝˚&˛˝˜˘&ˆ&ˆ˚˜˘˘#˚.˚/0(1 ˆˇ˙˝˙˛˛˝˘˚˚ !˛˛˜˘˛!˛˜˘˛˛˜˘˚ˆ˘˝˙˛˛˝˝˝˚&˛˝˜˘&ˇˆ&˚˜˘˘#˚.˚"ˆ˝˘0(1 ˆ ˙˝˙˛˛˝˘˚˚ !˛˛˜˘˛!˛˜˘˛˛˜˘˚ˆ˘˘ˆ˝˘ˆ˝˘˝˙˛˛˝˘˚˚ !˛˛˜˘˛!˛˜˘˛ˆ˝˘˛˙˝˙˛˛˝˝˝˚&˛˝˜˘˘˘˘˘ &˜˘˜˘˙˝&ˆ&˝&ˆ&˝˘/˚,˚# ˆ˜ˆ˝˘˙˝˙˛˛˝˘˚˚ !˛˛˜˘˘˛!˛˜˘˘˛˛˘ˆ&'˜˘3ˆ ˘&˝˘&ˆ ˘˘!&ˆˆˆ&˚˜˘ (&4$˘ˆ˘˘˘˚ˇ˘˘&ˆ˝˘ˆ ˘˚$ˆ&2+ ˜˙3!˝6˚2&7ˆ˝!˜˘)#˚.˚/˚%˙3!˝6˚$ˆ˙%$ˆ2˘˜˘)#˚.˚/˚,"˚˘˘˚˘˘˘˘(˘˘˚$ˆ˙ˆˆ)˝˘ˆˆ˘'˘˘˘˘˚9ˆˆ˝˘˙˝˙˛˛˝!˚ˆˆˆ˛˛'˘˘ (&:$ˆˆ˙ ˙%˝)˝˘ˆˆˆ&˝˝!&ˇ˝6&(˚;&˘˘˘˘˘&˙˝˙˛˛˚%˝&˛<!<˛%˚˘˛!˛˝˛˝˚˝˘˘&ˇ˘˘&˙˙˝˘9˘˘˘˘&˙˘˙˘ˆ˚ ˘˝&˘˘&˙˘˝˙˛˛˝˝˚&˛˝%˚ (&.'ˆ%(0˘˘ˆ˝˘ˇˆ˘˚"!!˘ˆ6ˆ
    Pouvez vous me dire si :
    - la méthode est bonne ?
    - si oui comment passer à l'étape suivante : récupérer l'information que je souhaite ?

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 320
    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 320
    Points : 36 831
    Points
    36 831
    Par défaut
    Salut,
    La méthode semble correcte mais ce que çà affiche n'est pas très convainquant

    En gros, content retourné par extractText devrait être Unicode: un tableau de d'entiers - short -. (H1)

    Après l'opération encode ("ascii", "xmlcharrrefreplace") force la sérialisation de tout entier E >128 en une chaine de caractères de la forme:
    '&#' + représentation de la valeur de E + ";".
    Ce sont les "&#nnn;&#nnn;&#nnn;" qui sont probablement "justes" mais que vous n'avez pas envie de voir sous cette forme.
    Note : sans "xmlcharrrefreplace" çà plante, une autre option est "ignore" qui poubelise les E.

    Supposons H1.

    Quel est le "charset" que supporterait "stdout" pour afficher les caractères accentués de façon satisfaisante (histoire de dire c'est OK)?

    Que retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    print sys.stdout.encoding
    Note: faites l'opération en lancant Python en mode console!
    Quid de remplacer "ascii" par le charset retourné?
    - W

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut Récupérer une information dans un fichier PDF
    bonjour,

    le retour de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    print sys.stdout.encoding
    est None

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 320
    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 320
    Points : 36 831
    Points
    36 831
    Par défaut
    Ben çà n'aide pas - à trouver un charset raisonnable pour remplacer "ascii".
    Vous faites comment pour afficher depuis Python des caractères accentuées, style:
    >>> print "àéùç"
    - W

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    rien de spécial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
     
        ****************************************************************
        Personal firewall software may warn about the connection IDLE
        makes to its subprocess using this computer's internal loopback
        interface.  This connection is not visible on any external
        interface and no data is sent to or received from the Internet.
        ****************************************************************
     
    IDLE 2.6.5      
    >>> print "àéùç"
    àéùç

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 320
    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 320
    Points : 36 831
    Points
    36 831
    Par défaut
    Salut,
    Lancer Python en mode console est différent de "lancer idle".
    Mais vous êtes sous Windows, le code point (charset) peut être récupéré "hors Python" en lançant sous la console windows (cmd) la commande: chcp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xyz> chcp<return>
    Page de code active: nnn
    Vous remplacez "ascii" par "cpnnn"
    Courage
    - W

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    voici le résultat de chcp à partir de la console (via cmd)

    code de page active : 850

    j'ai remplacé ascii par cp850

    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
    19
    20
    21
    22
    #!/usr/bin/env python
    # -*- coding: iso-8859-1 -*-
     
     
    import sys
    print sys.stdout.encoding
    import pyPdf
     
    def getPDFContent(path):
        content = ""
        # Load PDF into pyPDF
        pdf = pyPdf.PdfFileReader(file("test.pdf", "rb"))
        # Iterate pages
        for i in range(0, pdf.getNumPages()):
            # Extract text from page and add to content
            content += pdf.getPage(i).extractText() + "\n"
        # Collapse whitespace
        content = " ".join(content.replace("xa0", " ").strip().split())
        return content
     
    print getPDFContent("test.pdf").encode("cp850", "xmlcharrefreplace")
    ## end of http://code.activestate.com/recipes/511465/ }}}
    mai le résultat reste illisible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    None
    ˘ˇˆ˙˝˛˚ ˜ˆ !!"˘˘ #$ %&
    merci de votre aide

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 320
    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 320
    Points : 36 831
    Points
    36 831
    Par défaut
    Salut,

    Si H1 est "vraie", 728, 711, ... sont des code points UCS.
    Ils sont >256: normal que encode("cp850",...) ne veuille pas y toucher.

    Le seul "coding" qui permette de représenter n'importe quel code point Unicode est UTF-8, i.e:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print getPDFContent("test.pdf").encode("utf-8")
    A partir de là, ce n'est plus un problème Python mais un problème de l'environnement "OS" : "comment afficher de l'utf-8" sur la console cmd.exe et mettre les polices de caractères qui vont bien pour que le dessin du caractère à représenter s'affiche comme attendu.

    Cherchez sur Google ce qui parle de "chcp 65001".
    La commande permet de faire passer la console en utf-8 mais ce n'est pas sans implications sur les autres utilisations du système.

    Courage,
    - W

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Merci wizctriks,

    je pensais que la solution serait plus simple, je vais faire des recherches sur "chcp 65001" mais n'étant pas informaticien ni programmeur ce n'est pas gagné


    Encore merci

  10. #10
    Membre averti Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Points : 329
    Points
    329
    Par défaut
    Et pour anticiper la suite, moi je me servais tout simplement d'un RegEx (expressions régulières) pour récupérer les infos dont j'avais besoin !
    Encore faut-il que ton pdf soit sous la même forme à chaque fois.

    ex: si l'info que tu recherches se trouve dans ton formulaire après "adresse:",
    tu "match" le pattern "adresse:" puis tu récupère les X occurences suivantes de ton tableau !

Discussions similaires

  1. récupérer une information dans un fichier
    Par guigz57 dans le forum C
    Réponses: 3
    Dernier message: 22/03/2010, 19h59
  2. [PB 9] Sauvegarder une dw dans un fichier pdf
    Par SandraG dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 20/12/2007, 11h56
  3. Réponses: 9
    Dernier message: 21/05/2007, 00h33
  4. récupérer une valeur dans un fichier .txt ?
    Par _n1n1_ dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/04/2007, 19h19
  5. Récupérer une string dans un fichier
    Par lynchmaniac dans le forum ANT
    Réponses: 3
    Dernier message: 27/12/2006, 16h22

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