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?
4 Réponses :
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:
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
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)
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
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?