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 :

reconnaissance caractères dans fichiers pdf, dvi


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Par défaut reconnaissance caractères dans fichiers pdf, dvi
    Bonjour,
    Je suis toujours débutant...
    Pour rechercher des fichiers par leur contenu, j'ai écrit un bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            fichiertest="c:\gabriel\essai1.txt"
            # fichiertest="c:\gabriel\essai1.pdf"
            # fichiertest="c:\gabriel\essai1.dvi"
            f=open(fichiertest,"r")
            t=f.read()
            f.close()
    code qui fonctionne bien sur les fichiers du type *.tex, *.txt mais qui ne marche pas du tout avec les fichiers .pdf ou encore .dvi
    Y-a-t-il possibilité de stocker dans une chaine ou dans une liste les textes écrits dans les fichiers pdf et dvi?
    Merci pour vos réponses.
    Gabriel

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,
    Quelle est la version de Python que vous utilisez?
    "Ca ne marche pas" n'aide pas trop à savoir l'erreur que vous rencontrez.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Par défaut
    Bonsoir,
    J'utilise sous windows XP le langage python 3.1 (télécharger récemment).

    J'ai de nouveau testé le petit programme que voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import glob 
    import os
    #f=open("c:\gabriel\prepa\cours\exo2010\ex1.tex","r") #Sans pb
    f=open("c:\gabriel\joux\essai.pdf","r")
    #f=open("c:\gabriel\joux\essai.tex","r") #sans pb
    t=f.read()
    f.close()
    print(t)
    L'erreur affichée est:
    Traceback (most recent call last):
    File "C:/Gabriel/temporaire/essai02.py", line 7, in <module>
    t=f.read()
    File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 364: character maps to <undefined>
    J'ai remarqué aussi sur un autre fichier tex (très long) qu'il y avait blocage.

    Peut être que t=f.read() ne convient pas sur des fichiers tros gros et des fichiers qui ne sont pas type txt.

    Je viens d'essayer sur des fichiers .doc est j'ai le même type de message d'erreur...

    Merci pour votre aide.

    Gabriel

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,
    Par défaut, Python3 essaie de tranformer les bytes contenus dans un fichier texte en Unicode. Lorsque le contenu du fichier est autre que ASCII, il utilisera l'encoding que vous lui précisez (ou le défaut).
    Si vous voulez lire le fichier comme une suite d'octet (sans interpréter le contenu), il faut faire open(fichier, "r+b").
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Par défaut
    Bonsoir,
    Effectivement, en rajoutant "b", et "\\" pour le séparateur des racines, la fonction open() fonctionne. J'ai donc tapé ce programme afin de voir ce que ça donne:
    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
    23
    24
    25
    26
    27
     
    import glob 
    import os
    f=open("c:\\gabriel\\prepa\\hec10\\devoir2010\\DL01.pdf","r"+"b")
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    t=f.readline()
    print(t)
    f.close()
    et voilà le résultat:
    b'%PDF-1.4\n'
    b'5 0 obj\n'
    b'<< /S /GoTo /D [6 0 R /Fit ] >>\n'
    b'endobj\n'
    b'8 0 obj <<\n'
    b'/Length 5916 \n'
    b'/Filter /FlateDecode\n'
    b'>>\n'
    b'stream\n'
    b'x\xda\xdd=\xd9\x8e#\xc7\x91\xef\xf3\x15|\x13\x1br\xa5\xf3>\xec\x95\x00\xd9\x96\x8c5d\xcb\x96\xe6a\x00\x8f\x1f\xd8$g\xccEws\xc4n\xce\xce\xfe\xfdF\xe4Q\x95Y\x95U,v\xd7\x08\xda\x85\x00\r\xc9.FFF\xc6}$\xd9\x8a\xc2\x7fl%\x0cqV\xae\x94\xb2\xc4P\xb7\xda\xde\xbf\xa2\xab\xf7\xf0\x97?\xbfb\xf1\x89&>\xd2d\xcf\xfc\xe1\xf5\xab\xdf~\xa7\xe5\x8aQ\xe2\xe0\x93\xd7\xefZ8\x9a\x13c\xc4\xea\xf5\xee\x9f\xeb?\xed?\xde\x08\xbe>\x1en\x1a\xb6>\xdd4\xc2\xf2\xf5\xf7\xfe\xcd\xed\r|\xb0\xc7O\xe4\xfa\x01^\xbf\xa5T\xe3\xe7\xec\xe6_\xaf\xff\x02\x80U\x0eX\tb\x9c\x02T\x10\xe6O\xc7\xbb\xf3\x93\x87q\x84\xef=\xc4\xe7sD8\x15\x84\xc2\xcb\xf0\xfc7a\x91\x13<\xbc\xc7o\xe1j\xbb\xb0\xb4X\x7f\x80\x7f\x00\xbf\xf3)\xbc\xbd\x8b\x18\xddoN\xbbCxi\xc2_\x1e\xd3\xd7?\xc0\x8b\'|\xb1\xbf\xc7\xad\xdd\x02$\xc0\xe0\xd5\xb7\xaf[j\xb5\xf4\x84\x7f\x19GZ\xfd\xfc\xea\x9f\xff\xa2\xab\x1d\xd0\xf5/\xaf(l\xc5\xac\xfe\x1b^S"\x9c[\xdd\xbf2J\x13\xab\xe2\xdb\xbbW?\xbd\xfaG\x0b*\xfc\t\xde\xf9/\xd5N&=\xd10K\xa8\xd4\xc3\xd5\x84\xb3q5\xe6W\x13F\x10)e|_.\xd7\x9d\xb3\xa4Dk\xd1\x9e3g\x95s\x16\x94H\xc6<\x8d\xbf\xfd\xb4?m\x0f@\x99-\x12P\x9b\xf5C<O #\xe1\x88\x98\xcb`P@X\x10k\x8c\xff\xfa\xdfo\xb8]\x1f\x1f\x8f\x0f\x8f\xf1\xd1\xe2\xf45\x11B\xc6\xc3|s\xd3pc\xd7_\x85\xe7xq\xea\xc0v\xdc\xc4\xe7\xf6\xf1\x01\xb5\x02d\r\xfeY\x11j\xdcJ\x10\xa7\xac\x7f\xe2S\x05+E80^\xd3=D`7B\xac\xbf\xb9;\x9e\xaa\xa8)\xa2\x80\xe6aI]\xc1I\x11\xa9d\x0f%\x9e\xa3d3\x8c\xf8\x00gIx\xbb\xf3O\x95\xf5\r\xd1\xd6\xe5\xf8~\t\xe4\xe1\x1cxv\x88\n'
    b'\x032j9E\x1e;\xa4\x0e\xd0sb58cZ\xc1*\xbe\n'
    Je suppose que <<b>> désigne que le code est binaire (comme le <<u>> en unicode si j'ai bien compris la FAQ). Comme je souhaite pouvoir lire ce qui est écrit, existe-t-il une commande qui permettrait de transformer un codage binaire en un format texte? Ou peut une autre commande que readline()?

    Merci pour vos réponses.

    Gabriel

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Par défaut
    Ou alors, existe-t-il une commande qui permet de passer d'une chaine <<texte>> en une chaine binaire?

    Merci

    Gabriel

Discussions similaires

  1. [JSP/SERVLET] Moteur de recherche dans fichiers PDF
    Par crewstyle dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 27/04/2007, 16h18
  2. [Borland 6] Supprimer caractère dans fichier
    Par grmi91 dans le forum C++Builder
    Réponses: 1
    Dernier message: 16/04/2007, 16h18
  3. Écriture dans fichier PDF
    Par clairette dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/05/2006, 16h52
  4. [FPDF] Recherche chaine caractères dans fichier pdf
    Par licorne dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/10/2005, 11h55
  5. chaines de caractères dans fichier .rc ou .res
    Par raggadoll dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/03/2004, 15h19

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