
OCR prêt à l'emploi avec plus de 80 langues prises en charge et toutes les écritures courantes, notamment le latin, le chinois, l'arabe, le dévanagari, le cyrillique, etc.
OCR prêt à l'emploi avec 80+ langues prises en charge et tous les systèmes d'écriture populaires, notamment : latin, chinois, arabe, devanagari, cyrillique, etc.
Essayez la démo sur notre site web
Intégré dans Huggingface Spaces 🤗 à l'aide de Gradio. Essayez la démo web :
24 septembre 2024 - Version 1.7.2



Installez avec pip
Pour la dernière version stable :
pip install easyocr
Pour la dernière version de développement :
pip install git+https://github.com/JaidedAI/EasyOCR.git
Remarque 1 : Sous Windows, veuillez d'abord installer torch et torchvision en suivant les instructions officielles ici https://pytorch.org. Sur le site pytorch, assurez-vous de sélectionner la bonne version de CUDA que vous avez. Si vous avez l'intention de n'utiliser que le mode CPU, sélectionnez CUDA = None.
Remarque 2 : Nous fournissons également un Dockerfile ici.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
La sortie sera sous forme de liste ; chaque élément représente respectivement une boîte englobante, le texte détecté et le niveau de confiance.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
Remarque 1 : ['ch_sim','en'] est la liste des langues que vous souhaitez lire. Vous pouvez passer plusieurs langues à la fois, mais toutes les langues ne peuvent pas être utilisées ensemble. L'anglais est compatible avec toutes les langues et les langues qui partagent des caractères communs sont généralement compatibles entre elles.
Remarque 2 : Au lieu du chemin de fichier chinese.jpg, vous pouvez également passer un objet image OpenCV (tableau numpy) ou un fichier image sous forme d'octets. Une URL vers une image brute est également acceptable.
Remarque 3 : La ligne reader = easyocr.Reader(['ch_sim','en']) sert à charger un modèle en mémoire. Cela prend du temps, mais il suffit de l'exécuter une seule fois.
Vous pouvez également définir detail=0 pour une sortie plus simple.
reader.readtext('chinese.jpg', detail = 0)
Résultat :
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
Les poids du modèle pour la langue choisie seront téléchargés automatiquement, ou vous pouvez les télécharger manuellement depuis le hub de modèles et les placer dans le dossier '~/.EasyOCR/model'
Si vous n'avez pas de GPU, ou si votre GPU a peu de mémoire, vous pouvez exécuter le modèle en mode CPU uniquement en ajoutant gpu=False.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
Pour plus d'informations, lisez le tutoriel et la documentation de l'API.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
Pour le modèle de reconnaissance, lisez ici.
Pour le modèle de détection (CRAFT), lisez ici.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
L'idée est de pouvoir intégrer n'importe quel modèle de pointe dans EasyOCR. Beaucoup de génies tentent de créer de meilleurs modèles de détection/reconnaissance, mais nous n'essayons pas d'être des génies ici. Nous voulons simplement rendre leurs travaux rapidement accessibles au public... gratuitement. (enfin, nous croyons que la plupart des génies veulent que leur travail ait un impact positif aussi rapidement et aussi largement que possible) Le pipeline devrait ressembler au schéma ci-dessous. Les emplacements gris sont des espaces réservés pour les modules bleu clair interchangeables.

Ce projet est basé sur la recherche et le code de plusieurs articles et dépôts open-source.
Toute l'exécution deep learning est basée sur Pytorch. ❤️
L'exécution de la détection utilise l'algorithme CRAFT de ce dépôt officiel et de leur article (Merci @YoungminBaek de @clovaai). Nous utilisons également leur modèle pré-entraîné. Le script d'entraînement est fourni par @gmuffiness.
Le modèle de reconnaissance est un CRNN (article). Il est composé de 3 composants principaux : l'extraction de caractéristiques (nous utilisons actuellement Resnet) et VGG, l'étiquetage de séquences (LSTM) et le décodage (CTC). Le pipeline d'entraînement pour l'exécution de la reconnaissance est une version modifiée du framework deep-text-recognition-benchmark. (Merci @ku21fan de @clovaai) Ce dépôt est un joyau qui mérite plus de reconnaissance.
Le code de recherche par faisceau (beam search) est basé sur ce dépôt et son blog. (Merci @githubharald)
La synthèse de données est basée sur TextRecognitionDataGenerator. (Merci @Belval)
Et une bonne lecture sur le CTC de distill.pub ici.
Faisons progresser l'humanité ensemble en rendant l'IA accessible à tous !
3 façons de contribuer :
Développeur : Envoyez une PR pour les petits bugs/améliorations. Pour les plus gros, discutez avec nous en ouvrant d'abord une issue. Il existe une liste de problèmes/améliorations potentiels étiquetés avec 'PR WELCOME'.
Utilisateur : Dites-nous comment EasyOCR vous profite, à vous ou à votre organisation, pour encourager le développement continu. Publiez également les cas d'échec dans la section des issues pour aider à améliorer les futurs modèles.
Leader technique/Gourou : Si vous trouvez cette bibliothèque utile, faites passer le mot ! (Voir le post de Yann Lecun à propos d'EasyOCR)
Pour demander une nouvelle langue, nous avons besoin que vous envoyiez une PR avec les 2 fichiers suivants :
Si votre langue a des éléments uniques (tels que 1. Arabe : les caractères changent de forme lorsqu'ils sont attachés les uns aux autres + écriture de droite à gauche 2. Thaï : certains caractères doivent être au-dessus de la ligne et d'autres en dessous), veuillez nous informer au mieux de vos connaissances et/ou fournir des liens utiles. Il est important de prêter attention aux détails pour obtenir un système qui fonctionne vraiment.
Enfin, veuillez comprendre que notre priorité devra aller aux langues populaires ou aux ensembles de langues qui partagent de grandes portions de leurs caractères entre elles (dites-nous également si c'est le cas pour votre langue). Il nous faut au moins une semaine pour développer un nouveau modèle, vous devrez donc peut-être attendre un certain temps avant que le nouveau modèle soit publié.
Voir la liste des langues en développement
En raison de ressources limitées, une issue datant de plus de 6 mois sera automatiquement fermée. Veuillez rouvrir une issue si elle est critique.
Pour le support entreprise, Jaided AI propose un service complet pour les systèmes OCR/AI personnalisés, de l'implémentation à l'entraînement/fin-tunage et au déploiement. Cliquez ici pour nous contacter.