2
votes

Erreur lors de la tentative d'extraction du texte d'un fichier pdf à l'aide de pdfminer.six

J'essaye d'extraire du texte de pdf en utilisant la bibliothèque pdfminer.six (comme ici ), je l'ai déjà installé dans mon environnement virtuel. voici mon code:

Traceback (most recent call last):
  File ".\pdfreader.py", line 9, in <module>
    text = miner.high_level.extract_text('pdfBulletins/corona1.pdf')
AttributeError: module 'pdfminer' has no attribute 'high_level'  

mais quand python pdfreader.py le code avec python pdfreader.py j'obtiens l'erreur suivante:

import pdfminer as miner

text = miner.high_level.extract_text('file.pdf')


print(text)  

Je soupçonne que cela a quelque chose à voir avec le chemin Python, car j'ai installé pdfminer dans mon environnement virtuel, mais je vois que cela a installé pdf2txt.py extérieur de mon installation système python. Ce comportement est-il normal? Je veux dire que quelque chose qui se passe dans mon venv ne devrait pas altérer l'installation de mon système Python.

J'ai extrait le texte avec succès à l'aide de l'utilitaire pdf2txt.py fourni avec la bibliothèque pdfminer.six (à partir de la ligne de commande et à l'aide de l'installation du système python), mais pas du code dans mon projet venv . Ma pdfminer.six version est 20201018

Quel pourrait être le problème avec mon code?


3 commentaires

Cette réponse vous aide-t-elle? stackoverflow.com/a/26495057/14316282


@RolvApneseth a essayé le code là-bas, ne fonctionne pas, je soupçonne que cela a quelque chose à voir avec le chemin Python, car j'ai installé pdfminer dans mon environnement virtuel, mais je vois que ce pdf2txt.py installé à l'extérieur de mon installation système python, est-ce comportement normal? Je veux dire que quelque chose qui se passe dans mon venv ne devrait pas modifier l'installation de mon système python


Ce comportement n'est certainement pas normal. D'autres modules que vous avez installés s'installent-ils sur le système plutôt que dans l'environnement virtuel?


4 Réponses :


1
votes

pdfminer high_level extract_text nécessite des paramètres supplémentaires pour fonctionner correctement. Ce code ci-dessous utilise pdfminer.six et extrait le texte de mes fichiers pdf.

from pdfminer.high_level import extract_text

pdf_file = open('my_file.pdf', 'rb')
text = extract_text(pdf_file, password='', page_numbers=None, maxpages=0, caching=True, codec='utf-8', laparams=None)
print(text)

Voici quelques articles supplémentaires que j'ai écrits sur l'extraction de texte à partir de fichiers PDF qui pourraient être utiles:


0 commentaires

1
votes

Essayez pdfreader pour extraire des textes (simples et contenant des opérateurs PDF) à partir d'un document PDF

Voici un exemple de code extrayant tout ce qui précède de toutes les pages du document.

from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

plain_text = ""
pdf_markdown = ""
try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        plain_text += "".join(viewer.canvas.strings)
        viewer.next()
except PageDoesNotExist:
    pass


0 commentaires

0
votes

Votre problème est d'essayer d'utiliser une fonction d'un module que vous n'avez pas importé. L'importation de pdfminer PAS automatiquement aussi pdfminer.high_level .

Cela marche:

from pdfminer.high_level import extract_text

text = extract_text('file.pdf')

print(text)


0 commentaires

0
votes

Vous devrez installer pdfminer.six au lieu de simplement pdfminer :

from pdfminer.high_level import extract_text

Seulement après cela, vous pouvez importer extract_text comme:

pip install pdfminer.six


0 commentaires