Hello,
Vous n'aurez certainement pas que 3 prénoms à vérifier, mieux vaudrait faire une recherche dans un objet
Set pour être plus efficace.
Remplacez aussi
range(len(...)) par
enumerate si on reste avec les indices, mais mieux serait ni un ni l'autre.
Si c'est pour l'école, c'est bien de tout détailler avec des commentaires comme vous le faîtes...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import pytesseract
from pytesseract import image_to_string
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
Prenoms = {'SACHA', 'PIERRE', 'BASILE'} # Utiliser un set pour des lookups plus rapides (O(1)).
def Prenom_francais(image): # Fonction qui prend un chemin d'image d'un CV.
txt = image_to_string(image) # Utilise image_to_string pour extraire le texte du CV.
txt_upper = txt.upper() # Convertir le texte en majuscules une seule fois.
splt_txt = txt_upper.split() # Sépare le texte en une liste de mots.
for word in splt_txt: # Pour chaque mot de la liste (sans enumerate, car l'indice n'est pas utilisé).
if word in Prenoms: # Vérifie si le mot correspond à un prénom accepté.
return True # Retourne True si c'est le cas.
return False # Si aucun prénom accepté n'est trouvé, retourne False.
Prenom_francais('cv.jpg') # Appel de la fonction avec le CV à traiter. |
Une solution pour améliorer,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import pytesseract
from pytesseract import image_to_string
from PIL import Image # Importer PIL pour le prétraitement de l'image.
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
Prenoms = {'SACHA', 'PIERRE', 'BASILE'} # Utiliser un set pour des lookups plus rapides (O(1)).
def Prenom_francais(image_path): # Fonction qui prend un chemin d'image d'un CV.
# Ouvrir l'image avec PIL.
img = Image.open(image_path)
# Pré-traitement pour optimiser l'OCR :
# Convertir en niveaux de gris.
img = img.convert('L')
# Agrandir l'image pour améliorer la reconnaissance (facteur 2).
img = img.resize((img.width * 2, img.height * 2))
# Extraire le texte avec pytesseract, en spécifiant la langue française et un mode de segmentation adapté (psm 6 pour bloc de texte uniforme).
txt = image_to_string(img, lang='fra', config='--psm 6')
txt_upper = txt.upper() # Convertir le texte en majuscules une seule fois.
splt_txt = txt_upper.split() # Sépare le texte en une liste de mots.
for word in splt_txt: # Pour chaque mot de la liste.
if word in Prenoms: # Vérifie si le mot correspond à un prénom accepté.
return True # Retourne True si c'est le cas.
return False # Si aucun prénom accepté n'est trouvé, retourne False.
Prenom_francais('cv.jpg') # Appel de la fonction avec le CV à traiter. |
Autre amélioration, respectez la PEP8 (pas de franglais, fonction sans majuscule, ...)
Partager