J’essaie de convertir mon fichier pdf en fichier png en utilisant la bibliothèque pdf2 de Python. J’utilise le code suivant pour convertir mon fichier pdf.
from pdf2image import convert_from_path, convert_from_bytes pdf_file_path = './samples/my_pdf.pdf' images = convert_from_path(pdf_file_path)
Je veux le faire afin de convertir ultérieurement mon fichier pdf en texte de chaîne en utilisant pytesseract .
Le problème que je continue à rencontrer est l’erreur FileNotFound suivante, même si le fichier est dans le bon chemin. Quelqu’un pourrait-il m’aider à comprendre ce que je fais mal?
--------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) in () 1 from pdf2image import convert_from_path, convert_from_bytes 2 pdf_file_path = './samples/my_pdf.pdf' ----> 3 images = convert_from_path(pdf_file_path) C:\Users\hamza.ameur\AppData\Local\Continuum\anaconda3\lib\site-packages\pdf2image\pdf2image.py in convert_from_path(pdf_path, dpi, output_folder, first_page, last_page, fmt) 22 uid, args, parse_buffer_func = __build_command(['pdftoppm', '-r', str(dpi), pdf_path], output_folder, first_page, last_page, fmt) 23 ---> 24 proc = Popen(args, stdout=PIPE, stderr=PIPE) 25 26 data, err = proc.communicate() C:\Users\hamza.ameur\AppData\Local\Continuum\anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors) 707 c2pread, c2pwrite, 708 errread, errwrite, --> 709 restore_signals, start_new_session) 710 except: 711 # Cleanup if the child failed starting. C:\Users\hamza.ameur\AppData\Local\Continuum\anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session) 995 env, 996 os.fspath(cwd) if cwd is not None else None, --> 997 startupinfo) 998 finally: 999 # Child is launched. Close the parent's copy of those pipe FileNotFoundError: [WinError 2] The system cannot find the file specified
Essayez d’utiliser le chemin complet.
Ex:
import os basePath = os.path.dirname(os.path.realpath(__file__)) pdf_file_path = os.path.join(basePath, "samples/my_pdf.pdf") images = convert_from_path(pdf_file_path)
Désolé pour la réponse tardive.
Après avoir creusé dans le code source de pdf2image
, l’erreur est causée par pdfinfo
, qui est une commande de base * nix, dans le package pdf2image
. En conséquence, lorsque vous utilisez ce package sur Windows avec la commande pdfinfo
manquante, cela provoquera l’erreur ci-dessus.
Code de pdf2image
:
#inside __page_count() function ... else: proc = Popen(["pdfinfo", pdf_path], stdout=PIPE, stderr=PIPE) ...
À partir du code ci-dessus, vous pouvez voir qu’il a appelé un sous-processus de pdfinfo
pour obtenir le nombre de pages du fichier pdf.
Télécharger les outils poppler de version de fenêtre à partir de: http://blog.alivate.com.au/poppler-windows/
décompressez-le et ajoutez l’emplacement de bin (comme C: \ somepath \ poppler-0.67.0_x86 \ poppler-0.67.0 \ bin) à votre environnement PATH.
redémarrez votre CMD et python virtualenv si vous ouvrez
Je viens d’avoir ce problème lors de l’exécution de Python 2.
Après avoir regardé à nouveau, la page pypi précise que le code n’est pas compatible avec Python 2.