Extraire texte de pdfs

Bonjour a tous,

J’essaye d’automatiser l’extraction du texte par page d’un pdf crée á partir de l’outil AutoCad pour faire des vérifications / contrôles dessus. J’ai essaye pypdf2 mais je ne vois pas du tout le texte qui est dedans .

    with open(pdf_path, 'rb') as f:
        pdf = PdfFileReader(f)
        number_of_pages = pdf.getNumPages()
        for i in range(number_of_pages):
            page = pdf.getPage(i)
            print(page.extractText())

Je vois le texte dans Acrobat Reader DC, je peux le chercher (ctrl +F) et je peux l’extraire en fichier .txt via ce dernier donc il y a du vrai texte dans le fichier.

La sortie que je veux:

Page 0 : "this is the text from page 1 ..."
Page 1 : "this is the text from page 2 ..."
...

Auriez-vous une idée / expérience de workflow pour tout ca ? Aujourd’hui ma meilleure idée est de splitter le pdf en un fichier par page ensuite les convertir en texte un par via le gui Acrobat et ensuite splitter par Form Feed ce qui n’est pas idéal…

UPDATE : apparement GitHub - pdfminer/pdfminer.six: Community maintained fork of pdfminer - we fathom PDF marche mieux pour extraire du texte … je vais essayer…

Merci !

Graham

Bonsoir.

Je viens de tester pdfminer sur un PDF contenant des maths et le résultat est plus que correct.

1 « J'aime »

Alors 2 solutions pour les PDF, soit t’es chanceux et ton PDF a du texte dedans, soit tu l’est moins, dans ce cas il restera l’ORC pour l’extraire des images, je te conseil tesseract pour l’OCR sous python. J’ai écrit bareader.rtfd.org sur le thème il y a quelques temps.

1 « J'aime »

Oui merci pdfminer.six semble faire l’affaire - c’est très lent (une bonne 20aine de secondes pour 11K caractères sur 13 pages, peut-être parce qu’il fait un gros travail d’analyse pour essayer de reconstruire des phrases a partir de blocs isoles de texte et la doc est tres light mais je vais partir la dessus je pense