Difficultés avec pytesseract

Le problème exposé dans ce sujet a été résolu.

Bonjour,

J’essaie de faire mumuse avec pytesseract, mais cela ne fonctionne pas.

voici mon code :

from PIL import Image
import pytesseract

img=Image.open(r"téléchargement.png")
print('image ouverte')
resultat=pytesseract.image_to_string(img)

J’obtiens l’erreur suivante :

Traceback (most recent call last):
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 252, in run_tesseract
    proc = subprocess.Popen(cmd_args, **subprocess_args())
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 966, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1435, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Utilisateur\Documents\Olivier\Python\RM\chall 5 - Captcha me\CMIYC2.py", line 67, in <module>
    resultat=pytesseract.image_to_string(img)
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 413, in image_to_string
    return {
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 416, in <lambda>
    Output.STRING: lambda: run_and_get_output(*args),
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 284, in run_and_get_output
    run_tesseract(**kwargs)
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 256, in run_tesseract
    raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.

Après différentes recherches, j’ai ajouté cette ligne

pytesseract.pytesseract.tesseract_cmd = r"C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\tesseract.exe"

Au passage si quelqu’un·e peut m’expliquer pourquoi il faut mettre ce r avant les " pour que ça fonctionne…

J’ai tenté d’ouvrir l’image avec opencv :

import cv2
img=cv2.imread("téléchargement.png")

mais du coup, j’obtiens une erreur :

TypeError: Unsupported image object

j’utilise Python 3.10, pytesseract 0.3.8

Quelqu’un·e aurait une piste.

Merci.

Olivier

La première erreur indique que le fichier est introuvable Je pense qu’en utilisant un chemin absolu, tu devrais résoudre ce problème

Quant à ta question sur r, il s’agit d’un prefixe qui sert à indiquer que la chaine qui suit sera alors une raw string et par conséquent les "\" seront interprété comme des caractères et non comme des délimiteurs
Je te laisse lire la documentation qui s’y réfère : https://docs.python.org/fr/3/reference/lexical_analysis.html

+0 -0

Merci

un chemin absolu, pour le fichier à analyser ? j’ai essayé mais ça ne fonctionne pas. Ça aurait été étonnant, d’ailleurs, car PIL le trouve (le 'image ouverte' apparait). Visiblement, c’est tesseract qui a un problème. Ou alors tu parlais d’un chemin absolu pour autre chose, mais je ne vois pas quoi.

Vu l’erreur suivante :

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it’s not in your PATH. See README

tu peux essayer d’ajouter tesseract au PATH. logiquement la ligne que tu as ajoutée devrait suffire mais c’est étrange que l’erreur subsiste

+0 -0

En modifiant la ligne ajoutée (c’est pytesseract.exe et non tesseract.exe), le message d’erreur change :

Traceback (most recent call last):
  File "C:\Users\Utilisateur\Documents\Olivier\Python\RM\chall 5 - Captcha me\CMIYC2.py", line 9, in <module>
    resultat=pytesseract.image_to_string(img)
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 413, in image_to_string
    return {
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 416, in <lambda>
    Output.STRING: lambda: run_and_get_output(*args),
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 284, in run_and_get_output
    run_tesseract(**kwargs)
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\lib\site-packages\pytesseract\pytesseract.py", line 260, in run_tesseract
    raise TesseractError(proc.returncode, get_errors(error_string))
pytesseract.pytesseract.TesseractError: (2, 'Usage: pytesseract [-l lang] input_file')

Si ça peut aider…

En modifiant la ligne ajoutée (c’est pytesseract.exe et non tesseract.exe), le message d’erreur change :

Olivier44

ce n’est pas ce que dit la doc https://github.com/madmaze/pytesseract/blob/master/README.rst

Install Google Tesseract OCR (additional info how to install the engine on Linux, Mac OSX and Windows). You must be able to invoke the tesseract command as tesseract. If this isn’t the case, for example because tesseract isn’t in your PATH, you will have to change the "tesseract_cmd" variable pytesseract.pytesseract.tesseract_cmd. Under Debian/Ubuntu you can use the package tesseract-ocr. For Mac OS users. please install homebrew package tesseract.

et même dans l’exemple de code :

# If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

OK.

Ceci dit l’exécutable s’appelle bien pytesseract.exe. Donc la ligne doit, je pense être :

pytesseract.pytesseract.tesseract_cmd = r"C:\Users\Utilisateur\AppData\Local\Programs\Python\Python310\pytesseract.exe"

non ?

par ailleurs, le fait de mettre pytesseract.exe au lieu de tesseract.exe a fait évoluer le message d’erreur.

Il semble que maintenant, il trouve l’executable. Il y a l’air d’y avoir un problème de paramètre de langue, mais j’ai essayé de l’ajouté et ça n’a rien changé.

Après, je ne suis jamais trop sûr de moi dans la lecture des messages d’erreur. C’est parfois évident, mais parfois, comme ici, c’est plus compliqué.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte