EasyOCR : une bibliothèque OCR rapide et multilingue pour Python
EasyOCR : une bibliothèque OCR rapide et multilingue pour Python
Pourquoi EasyOCR ?
La reconnaissance optique de caractères (OCR) alimente tout, de la numérisation de PDF à la mise à jour des moteurs de recherche sur le Web.
Alors que de nombreux services d'API commerciaux existent, EasyOCR propose une alternative clé en main, gratuite, qui prend en charge 80+ langues et des écritures populaires comme l'alphabet latin, le chinois, l'arabe, le dévanagari, le cyrillique et bien d'autres.
Principaux avantages en un coup d'œil :
- Zéro coût – Pur open source, pas besoin de clé d'API.
- Inférence rapide – Construit sur PyTorch, les téléchargements de modèles sont légers (≈30 Mo). L'inférence accélérée par GPU est optionnelle.
- API conviviale – Pensez à easyocr.Reader() ; renvoie une liste de boîtes englobantes, de texte et de confiance.
- Extensible – Remplacez les moteurs de détection ou de reconnaissance ; branchez de nouveaux modèles avec peu de modifications.
- Prêt pour Hugging Face Spaces – Une démo Gradio est déjà publiée, ce qui facilite l’exposition de votre pipeline OCR.
Déploiement rapide & première exécution
# Version stable
pip install easyocr
Si vous désirez la version la plus récente ou souhaitez contribuer, installez à partir du code source :
pip install git+https://github.com/JaidedAI/EasyOCR.git
Astuce : Sous Windows, installez d'abord PyTorch avec la version CUDA appropriée :
pip install torch torchvision
import easyocr
# Créez un lecteur, en chargeant les modèles pour le chinois simplifié et l'anglais
reader = easyocr.Reader(['ch_sim', 'en'])
# Exécutez l'OCR sur un chemin d'image ou des octets de fichier
results = reader.readtext('chinese.jpg')
print(results)
Sortie : une liste de tuples contenant des boîtes englobantes à 4 points, du texte détecté et une valeur de confiance.
Simplification de la sortie
Si vous ne vous intéressez qu'aux chaînes de texte :
texts = reader.readtext('chinese.jpg', detail=0)
print(texts)
# ['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
Vous pouvez également fournir une image OpenCV (numpy.ndarray) ou des octets d'image bruts. Pour une infération uniquement CPU, passez gpu=False lors de la création du lecteur.
Déploiement Docker
Un Dockerfile préconçu est inclus. Créez-le localement ou récupérez-le depuis Docker Hub (si disponible) :
docker build -t easyocr .
docker run -p 7860:7860 easyocr
Le conteneur exécute une interface Gradio qui reflète la démo Web.
Démo Hugging Face Spaces
La bibliothèque est livrée avec un Espace Hugging Face prêt à l’emploi : https://huggingface.co/spaces/JaidedAI/EasyOCR.
- Parcourez la démo → téléversez une image ; voyez les prédictions en temps réel.
- Clonez le dépôt ; lancez localement avec
python app.py. - Modifiez l'espace pour vos propres cas d’utilisation — modifiez le modèle de détection, ajoutez un ensemble linguistique personnalisé, etc.
Entrainement de vos propres modèles (Optionnel)
EasyOCR est modulaire :
- Détection – CRAFT ou DB.
- Reconnaissance – CRNN (ResNet + LSTM + CTC) ou défini par l'utilisateur.
Le dépôt inclut des scripts d'entraînement dans le dossier trainer. Pour ajuster sur un jeu de données personnalisé, fournissez des images étiquetées, générez les annotations avec easyocr/utils/ocr_annotation.py, puis exécutez :
python -m trainer.trainer --config_path configs/train.yaml
Pour ceux qui ne souhaitent modifier que les hyperparamètres, le guide easyocr/custom_model.md les accompagne.
Feuille de route future
- Support manuscrit – Bientôt ajouter un modèle OCR dédié au manuscrit.
- Plug‑in modulable – Remplacez les modèles de détection (DB, EAST) ou de reconnaissance (Transformer) par une simple modification d'API.
- Inférence optimisée – Quantification et export vers ONNX.
Bonnes pratiques
- Priorité linguistique – Passer la liste exacte des langues accélère le téléchargement du modèle.
- Batching – Pour de grands ensembles d'images, traitez en lots afin de minimiser la consommation mémoire GPU.
- Post‑traitement – Utilisez la sortie
detail=0pour des listes de chaînes rapides, ou gardez les boîtes englobantes pour les applications conscientes de la mise en page. - Utilisation GPU – Gardez un seul GPU actif ; la bibliothèque gère en interne les inférences par lots.
- Contributions open-source – Les demandes de fonctionnalités ou bugs sont les bienvenus sous forme de PR. Le dépôt prend même en charge l’ajout de nouvelles langues.
Conclusion
EasyOCR combine vitesse, précision et capacité multilingue dans un seul paquet Python. Que vous prototypez un petit script ou construisiez une infrastructure OCR de production, EasyOCR vous fait gagner du temps et maintient les coûts à zéro. Téléchargez la bibliothèque dès maintenant, explorez la démo Hugging Face, et commencez à extraire du texte des images immédiatement.
Ressources
- Documentation : https://github.com/JaidedAI/EasyOCR
- Espace Hugging Face : https://huggingface.co/spaces/JaidedAI/EasyOCR
- Docker Hub : (si disponible)
- Guide de contribution : consultez le fichier CONTRIBUTING.md dans le dépôt.