Facture OCR
Facture OCR
2024
Remerciements
Abstract
The research community has made significant efforts to enhance Optical Character
Recognition (OCR) systems. This technology enables the extraction of textual
information from images or scanned documents and converts it into structured
digital text. It is widely used in businesses to optimize financial document
management, improve the accuracy of accounting data, and reduce the costs and
time associated with manual data entry. This report presents a study on the
automation of invoice recognition using OCR, particularly through the use of the
Pytesseract library. Text recognition in documents such as invoices allows for the
automated extraction of key information (invoice number, total amount, dates, etc.)
for management and accounting purposes. We will first discuss the state of the art
in OCR technologies, followed by a practical implementation using Pytesseract to
automatically recognize and extract information from invoice images. The results
show promising efficiency in automating the processing of financial documents.
1 Introduction......................................................................................................................... 2
2 Définition ............................................................................................................................ 2
3 Les outils OCR .................................................................................................................... 2
3.1 Tesseract : .................................................................................................................... 2
3.2 Easyocr : ...................................................................................................................... 3
3.3 Ocular : ........................................................................................................................ 3
3.4 Azure OCR .................................................................................................................. 4
4 Le Fonctionnement de l'OCR .............................................................................................. 4
4.1 Acquisition de l'Image ................................................................................................. 4
4.2 Prétraitement de l'Image .............................................................................................. 5
4.3 Segmentation ............................................................................................................... 6
4.4 Extraction des Caractéristiques ................................................................................... 6
4.5 Reconnaissance des Caractères ................................................................................... 6
4.6 Post-Traitement ........................................................................................................... 6
4.7 Exportation du Texte ................................................................................................... 7
5 Applications de l'OCR ......................................................................................................... 7
6 Avantages et Inconvénients de l'OCR ................................................................................. 8
6.1 Avantages de l'OCR..................................................................................................... 9
6.2 Inconvénients de l'OCR ............................................................................................... 9
7 Conclusion ........................................................................................................................ 10
1 Introduction....................................................................................................................... 11
2 Environnement de développement .................................................................................... 11
2.1 Environnement matériel ............................................................................................ 11
2.2 Langage et bibliothèque............................................................................................. 11
2.2.1 Le langage utilisé ............................................................................................... 11
2.2.2 Bibliothèques utilisées........................................................................................ 12
3 Architecture globale du système ....................................................................................... 14
4 Implémentation et Réalisation .......................................................................................... 16
4.1 Chargement de l’image .............................................................................................. 16
4.2 Prétraitement .............................................................................................................. 17
4.3 Reconnaissance du Texte par OCR ........................................................................... 19
5 Résultat obtenu.................................................................................................................. 22
6 Conclusion ........................................................................................................................ 26
Conclusion Générale…………………………………………………………………………………..27
Référence……………………………………………………………………………..28.
Liste des Figures
L'OCR est une technologie qui permet de convertir divers types de documents qu'il
s'agisse de papiers numérisés, de fichiers PDF, ou d'images capturées par un appareil
photo numérique en données éditables et consultables. Elle analyse les images de texte
et les convertit en un format que l'ordinateur peut manipuler, facilitant ainsi la
recherche, l'édition et le stockage du contenu textuel. L'OCR est largement utilisée
pour automatiser la numérisation de documents, extraire des données et améliorer
l'accessibilité des contenus textuels [2].
D'un point de vue méthodologique, l'OCR adopte différentes approches selon le type
d'écriture : manuscrite ou imprimée. Deux domaines distincts sont souvent explorés :
la reconnaissance dite "statique" ou hors-ligne, et la reconnaissance dynamique ou
"en-ligne". Dans la reconnaissance en ligne, les caractères sont identifiés pendant le
processus d'écriture grâce à la capture numérique du tracé du stylo. En revanche, la
reconnaissance hors-ligne traite les images numérisées de documents déjà écrits [3].
Dans ce mémoire nous commencons par examiner l'état de l'art des technologies OCR,
avant de présenter une implémentation pratique utilisant Pytesseract pour la
reconnaissance et l'extraction automatique d'informations à partir d'images de
factures. Enfin, nous terminons ce mémoire par une conclusion générale.
1
Chapitre 1 : Reconnaissance Optique de Caractères
1 Introduction
2 Définition
3.1 Tesseract :
Tesseract est un moteur d’OCR développé par Google. Il s’agit d’un moteur OCR open
sourcelargement utilisé qui peut reconnaître et extraire du texte à partir d’images ou de
documents numérisés. Il a été initialement développé par Hewlett Packard dans les
années 1980 et plustard publié en tant que projet open-source en 2005 [6]. Il est
connu pour sa précision dans la reconnaissance du texte imprimé et sa capacité à
gérer plusieurs langues. Il prend en charge plus de 100 langues, y compris divers
scripts et jeux de caractères. Le moteur utilise des algorithmes d’apprentissage
automatique, en particulier des réseaux neuronaux, pour analyser l’image et
identifier des caractères ou des mots individuels. Il prétraite l’image d’entrée pour
2
améliorer la visibilité du texte et supprimer le bruit ou les distorsions, segmente
ensuite l’image en caractères individuels ou en lignes de texte et applique des
techniques de reconnaissance de formes pour identifier le contenu textuel
correspondant. Le texte reconnu est généralement généré dans un format lisible par
machine, tel que du texte brut ou HTML [6].
3.2 Easyocr :
3.3 Ocular :
3
3.4 Azure OCR
L'API Azure OCR dans le nuage permet aux programmeurs d'accéder à des
algorithmes avancés de lecture de texte qui fournissent des données structurées à
partir de photos numérisées. Les outils OCR de Microsoft Azure permettent
d'extraire des caractères d'imprimerie en plusieurs langues, des textes manuscrits
en plusieurs langues et des symboles monétaires à partir d'images, de chiffres et de
brochures PDF de plusieurs pages [9].
4 Le Fonctionnement de l'OCR
• Les images binaires : comme leur nom indique, elles ne contiennent que 2
valeurs de pixels, 0 pour la couleur noir et 1 pour la couleur blanche. Les pixels
dans ce type d’image est dit « monochrome ». L’image résultante est donc
composée de noir et blanc uniquement.
• Les images en niveau de gris : la valeur du pixel est un nombre qui représente
la luminosité du pixel. Les valeurs possibles varient de 0 à 255. Généralement,
zéro est considéré comme noir et 255 comme blanc. Les valeurs
intermédiaires constituent les différentes nuances de gris.
• Les images en couleurs : l’image est représentée en supposant un espace
colorimétrique RVB (RGB en Anglais pour Red-Green-Blue). Par conséquent,
la valeur du pixel est un vecteur de trois dimensions, chaque composante est
un nombre qui varie entre 0 et 255.
4
4.2 Prétraitement de l'Image
Avant que l'algorithme OCR puisse commencer à reconnaître le texte, l'image doit
souvent être améliorée pour maximiser la précision. Les techniques de
prétraitement incluent :
4.3 Segmentation
Après la segmentation, le système OCR analyse chaque segment pour en extraire des
caractéristiques distinctives, telles que les contours, les formes, les lignes, et les
courbes des caractères. Ces caractéristiques sont utilisées pour identifier et
différencier chaque caractère [20].
Cette étape est le cœur du processus OCR. Les segments de texte sont comparés aux
modèles de caractères préalablement enregistrés dans la base de données du
système OCR.Différentes techniques peuvent être utilisées, notamment [21] :
4.6 Post-Traitement
Enfin, le texte reconnu est exporté dans un format numérique, tel qu'un fichier texte,
un document Word ou un PDF consultable. Le texte peut être édité, recherché,
indexé ou analysé en fonction des besoins de l'utilisateur.
5 Applications de l'OCR
Numérisation de Documents
7
Automatisation des Données
L'OCR joue un rôle crucial dans l'accessibilité, en particulier pour les personnes
malvoyantesou aveugles. En combinant l'OCR avec des technologies de synthèse
vocale, les documents imprimés peuvent être convertis en texte numérique, puis
lus à haute voix.
L'OCR est utilisé dans la gestion financière pour automatiser le traitement des
factures, desreçus et d'autres documents comptables. Cela permet de réduire le
temps consacré à la saisie manuelle des données et d'améliorer la précision des
processus comptables.
Archivage et Recherche
Dans les entreprises et les administrations, l'OCR est utilisé pour archiver des
documents papier sous forme numérique, permettant une recherche facile à
travers des milliers de pages. Cela facilite également la conformité aux
réglementations en matière de conservation des documents.
Les chercheurs utilisent l'OCR pour analyser des documents historiques, tels que
des manuscrits anciens, des journaux ou des lettres, les rendant ainsi accessibles
pour une étudeapprofondie sans endommager les originaux.
8
offre denombreux avantages, mais elle présente également certains inconvénients
[23].
Réduction des Erreurs: L'OCR réduit les erreurs humaines associées à la saisie
manuelle de données. La technologie est capable de capturer des caractères de
manière précise, surtout avec les modèles modernes d'OCR utilisant l'apprentissage
automatique.
Accès Facilité aux Informations: Les documents numérisés avec OCR sont
consultables, ce qui facilite la recherche d'informations spécifiques dans de vastes
collections de documents. Cela améliore l'accessibilité et la gestion de l'information.
Limites pour les Langues et Polices Spécifiques : Bien que les systèmes OCR
modernes prennent en charge de nombreuses langues et polices, ils peuvent avoir
des difficultés à traiter les textes dans des langues peu courantes, avec des polices
personnalisées ou des écritures manuscrites complexes.
Coût Initial et Maintenance : La mise en place d'un système OCR, en particulier pour
des solutions avancées ou personnalisées, peut nécessiter un investissement initial
important. De plus, il peut y avoir des coûts associés à la maintenance et à la mise à
jour du système.
9
7 Conclusion
10
Chapitre 2 : Implémentation et résultats
1 Introduction
Dans ce chapitre, nous allons présenter le système OCR que nous avons élaboré.
Notre système englobe les trois grandes phases suivantes : le prétraitement,
l’extraction de caractéristiques et la reconnaissance qui est la phase de classification.
Chaque phase comporte un ensemble d’opérations. Notre système est basé
essentiellement sur la technique tesseract pour extraire le texte de l’image. Dans ce
qui suit, nous allons expliquer de manière détaillée les différentes techniques utilisées
pour la réalisation de ce système. Nous allons aussi présenter la base de données
utilisée pour effectuer le test. L’architecture globale de notre système est illustrée dans
la figure 2.2.
Le système a été implémenté en utilisant le langage python, dans ce qui suit, nous
allons donner une vue générale sur l’environnement du développement.
2 Environnement de développement
Dans cette section, nous présenterons les environnements matériel et logiciel de notre
travail.
La configuration du matériel utilisé dans notre implémentation est comme ce qui suit :
D’après notre recherche, le langage de programmation le plus adapté à notre projet qui
est la reconnaissance automatique de factures, c’est Python.
Python :
Python est un langage de script de haut niveau, structuré et open source. Le langage de
11
programmation Python a été créé en 1989 par Guido van Rossum, aux Pays-Bas. Le
nom Python vient d'un hommage à la série télévisée Monty Python's Flying Circus dont
G.van Rossum est fan. La première version publique de ce langage a été publiée en
1991. Python est utilisé dans divers domaines, y compris le développement
d'applications, la science des données, l'apprentissage automatique, le développement
web, l'automatisation, et bien d'autres. Ce langage de programmation présente de
nombreuses caractéristiques intéressantes [24] :
Simplicité de syntaxe : La syntaxe de Python est simple et lisible, ce qui le rend facile
à apprendre et à comprendre. Cette simplicité favorise également la rédaction de code
propre et efficace.
Langage de haut niveau : Python est un langage de haut niveau, ce qui signifie qu'il
offre des abstractions puissantes qui permettent aux développeurs de se concentrer sur
la résolution de problèmes plutôt que sur les détails techniques.
Langage interprété : Python est interprété, ce qui signifie que vous pouvez exécuter le
code directement sans avoir à le compiler, ce qui accélère le processus de
développement.
Open source : Python est un langage open source, ce qui signifie qu'il est gratuit à
utiliser et à distribuer, et que vous pouvez contribuer à son développement.
Portabilité : Les programmes Python sont portables, ce qui signifie qu'ils peuvent être
exécutés sur différentes plates-formes sans modification significative du code source.
• TensorFlow :
TensorFlow est une bibliothèque logicielle open source développée par Google qui
permet aux développeurs de créer, d'entraîner et de déployer des modèles
d'apprentissage automatique, en mettant l'accent sur les réseaux de neurones profonds.
Il offre uneinfrastructure flexible et évolutive pour la création de modèles d'intelligence
12
artificielle et est largement utilisé dans la recherche et l'industrie pour résoudre une
variété de problèmes, notamment la vision par ordinateur, le traitement du langage
naturel, la reconnaissance vocale, et bien d'autres. Les caractérestiques principale de
tensorflow sont [25] :
Traitement sur GPU : TensorFlow offre un support natif pour l'exécution sur les unités
de traitement graphique (GPU), ce qui permet d'accélérer considérablement les calculs
nécessaires pour l'entraînement des modèles.
Keras intégré : Depuis TensorFlow 2.0, l'API Keras est devenue l'API d'interface
utilisateur de haut niveau pour construire des modèles. Cela simplifie considérablement
le processus de création de réseaux de neurones.
• Keras :
Keras est une bibliothèque de réseaux de neurones de haut niveau, open source, écrite
en Python, qui facilite la création, la formation et l'évaluation de modèles
d'apprentissage automatique, en mettant l'accent sur la simplicité et la rapidité de
développement. Keras peut être utilisé en tant qu'interface utilisateur conviviale pour
différentes bibliothèques de backend, notamment TensorFlow, Theano et Microsoft
Cognitive Toolkit (CNTK). Il est largement utilisé dans la communauté de
l'apprentissage automatique pour la construction de réseaux de neurones
convolutionnels (CNN), de réseaux de neurones récurrents (RNN) et d'autres
architectures de deep learning [26].
• Matplotlib :
Est une bibliothèque open source de visualisation de données en Python. Elle offre aux
développeurs et aux chercheurs la capacité de créer des graphiques de haute qualité, des
tracés et des visualisations pour représenter des données sous forme de graphiques, de
diagrammes, d'histogrammes, de courbes et d'autres formats. Matplotlib est largement
utilisé dans les domaines de la science des données, de la recherche, de la visualisation
de données et de la génération de graphiques pour la publication [27].
• Numpy :
13
NumPy est une bibliothèque open source en Python qui fournit une prise en charge pour
les tableaux multidimensionnels, ainsi que des fonctions mathématiques de haut niveau
pour effectuer des opérations sur ces tableaux. NumPy est largement utilisé dans les
domaines de la science des données, de la recherche scientifique, de l'ingénierie et de
l'apprentissage automatique pour effectuer des calculs numériques efficaces, notamment
des opérations vectorielles et matricielles [28].
OpenCV, ou Open Source Computer Vision Library, est une bibliothèque open source
de vision par ordinateur et de traitement d'images. Elle offre aux développeurs et aux
chercheurs un ensemble complet d'outils et de fonctions pour la manipulation, l'analyse
et la compréhension des images et des vidéos. OpenCV est utilisé dans une variété
d'applications, notamment la détection d'objets, la reconnaissance de formes, la
surveillance vidéo, la vision industrielle, la robotique et bien d'autres domaines de la
vision par ordinateur [29].
• Pandas :
Pandas est une bibliothèque open source en Python qui offre des structures de données
puissantes et flexibles, telles que les DataFrames et les Series, ainsi que des outils de
manipulation et d'analyse de données. Elle est largement utilisée dans le domaine de
l'analyse de données et de la science des données pour importer, nettoyer, explorer,
transformer et analyser des données tabulaires. Pandas simplifie la manipulation des
données en fournissant des fonctionnalités pour la sélection, le filtrage, le tri, le
regroupement et la visualisation des données.
Est un éditeur de code source léger mais puissant, développé par Microsoft. Il est conçu
pour prendre en charge le développement dans plusieurs langages de programmation,
notamment JavaScript, Python, C++, et bien d'autres. Visual Studio Code est apprécié
pour ses fonctionnalités intégrées comme le débogage, la gestion des versions Git, la
coloration syntaxique, les suggestions intelligentes de code et les extensions. De plus,
sa nature open-source et multiplateforme (Windows, macOS, Linux) le rend largement
accessible et personnalisable selon les besoins des développeurs.
14
Prétraitement des images :
• Binarisation : Conversion de l'image en noir et blanc pour faciliter les étapes
suivantes.
• Suppression du bruit : Élimination des artefacts et bruits pour améliorer la
qualité de l'image.
• Lissage : Application de filtres pour réduire les variations soudaines et lisser
l'image.
• Normalisation : Ajustement de l'image pour s'assurer qu'elle respecte un format
ou une taille standard.
• Extraction des contours : Identification des contours importants dans l'image,
notamment pour isoler des zones d'intérêt comme les totaux ou les sections
spécifiques.
Fin du processus : Les informations extraites sont alors prêtes à être utilisées ou
stockées dans un système de gestion des données.
15
Figure 2.2 Architecture globale du système
4 Implémentation et Réalisation
L'image est chargée à partir du chemin spécifié par l'utilisateur (path) en utilisant la
bibliothèque OpenCV.
Le prétraitement des données constitue l'une des étapes cruciales dans le processus
de la reconnaissance optique de caractère. Nous avons initié ce processus en chargeant
notre fichier de données, puis en appliquant diverses techniques de prétraitement
d'images requis dans les systèmes OCR. Dans notre travail nous n’avons considéré que
La binarisation, Le lissage, La suppression du bruit et La normalisation.
• Redimensionnement
• La binarisation
C’est le processus de passer d’une image en couleur, représentée en RGB à une image
binaire, c’est-à-dire chaque pixel peut avoir la valeur 0 pour le noir et la valeur 1 pour
le blanc. Pour passer d’une image en RGB à une image binaire, il faut passer par une
image auxiliaire représentée en niveau de gris.
La fonction qui nous a permis de passer d’une image RGB à une image en niveau de
gris est la suivante :
• La suppression de bruit
Cette étape permet d’éliminer les pixels qui n’appartiennent à aucun composant
significatif de l’image. Pour cela, nous avons appliqué le filtre MedianBlur. Le
principe de ce filtre est de remplacer chaque entrée par la valeur médiane de son
voisinage.
La fonction qui nous a aidé à éliminer les pixels non significatifs est la suivante :
• Le lissage
18
Les fonctions que nous avons appliquées pour faire l’ouverture morphologique sont
les suivantes :
Les contours de l'image sont extraits avec extraction_contour. Cette étape est cruciale
pour isoler les formes distinctes présentes dans l'image.
19
Figure 2.11 représente le résultat de l’extraction du texte de facture.
20
Figure 2.12 représente le code de nettoyage du texte extrait.
La fonction search_total est conçue pour rechercher et extraire la valeur totale à partir
d'un DataFrame contenant des données de texte OCR d'une facture. Cette fonction est
optimisée pour extraire le montant total de la facture en recherchant spécifiquement les
chiffres pertinents associés au terme "total".
21
Figure 2.14 représente le résultat d’extraction de valeur totale.
5 Résultat obtenu
L'interface présentée est une application web simplifiée pour détecter et afficher le
montant total d'un reçu à partir d'une image téléchargée. Cette interface est simple et
intuitive, permettant aux utilisateurs de vérifier le montant total d’un reçu en quelques
étapes seulement. Elle pourrait être utilisée dans des applications de gestion de
dépenses ou de comptabilité.
La figure 2.16 ci-dessous montre une fenêtre d'explorateur de fichiers Windows avec
un dossier contenant plusieurs images de reçus. Cette interface permet à l’utilisateur
de naviguer et de sélectionner une image ou un document PDF pour extraction ou
analyse, ce qui peut être utile dans le cadre d'une application d'analyse de reçus.
22
Figure 2.16 représente la base de données des factures.
Les images en dessous présentent une détection de texte dans un reçu. Ils montrent
un exemple de reconnaissance optique de caractères (OCR) permettant d’extraire et
d’afficher automatiquement le total du reçu en texte, facilitant ainsi le traitement des
reçus. La section "Total détecté" affiche en vert, indiquant que l'application a détecté
avec succès le montant total sur le reçu et l'a converti en euros (symbolisé par €).
23
Figure 2.17 représente le résultat d’extraction de totale.
24
25
6 Conclusion
26
Conclusion Générale
27
Référence
[1] https://moov.ai/fr/blog/reconnaissance-optique-de-caracteres-ocr
[2] https://aws.amazon.com/fr/what-is/ocr/
[3] Plamondon, R., & Srihari, S. N. (2000). On-line and off-line handwriting recognition:
A comprehensive survey. IEEE Transactions on Pattern Analysis and Machine
Intelligence, 22(1), 63–84. DOI: 10.1109/34.824821.
[4] KAUR AMANDEEP, BAGHLA SEEMA, and KUMAR SUNIL, "STUDY OF VARIOUS
CHARACTER SEGMENTATION TECHNIQUES FOR HANDWRITTEN OFF-LINE CURSIVE
WORDS: A REVIEW,"International Journal of Advances in Science Engineering and
Technology, ISSN: 2321-9009, vol. 3, no. 3, July 2015.
[5] Amjad Rehman, Dzulkifli Mohamad, and Ghazali Sulong, "Implicit vs explicit based
script segmentation and recognition: A performance comparison on benchmark
database," International Journal Open Problems Compt. Math., vol. 2, no. 3, pp. 352--
364, 2009.
[7] https://pyimagesearch.com/2020/09/14/getting-started-with-easyocr-for-optical-
character-recognition/
[11] Andrew King and Paul Aljabar, MATLAB Programming for Biomedical
Engineers and Scientists.: Academic Press, 2017.
28
[13] ABA Safa and CHIKH Maroua, Reconnaissance Des Mots Arabes Manuscrites.
Tébessa: Université de Larbi Tébessi, 2016.
[14] [Oeivind Due Trier and Torfinn Taxt, "Evaluation of binarization methods for
document images," IEEE transactions on pattern analysis and machine intelligence,
vol. 17, no. 3, pp. 312-315, 1995.
[15] Sing T Bow, Pattern recognition and image preprocessing.: CRC press, 2002.
[18] Amit and Rishi, Rahul Choudhary and Savita Ahlawat, "A new character
segmentation approach for off-line cursive handwritten words," Procedia Computer
Science, vol. 17, pp. 88--95, 2013.
[19] https://liris.cnrs.fr/Documents/Liris-5568.pdf
[20] Pritpal Singh and Sumit Budhiraja, "Feature extraction and classification
techniques in OCR systems for handwritten Gurmukhi Script--a survey," International
Journal of Engineering Research and Applications (IJERA), vol. 1, no. 4, pp. 1736--
1739, 2011.
[22] Casey, R.G., & Lecolinet, E. (1996). A survey of methods and strategies in
character segmentation. IEEE Transactions on Pattern Analysis and Machine
Intelligence, 18(7), 690-706.
[23] https://aws.amazon.com/fr/what-is/ocr/
[24] https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1445304-
python-definition-et-utilisation-de-ce-langage-informatique/
[25] https://www.lemagit.fr/definition/TensorFlow
[26] https://datascientest.com/keras
[27] https://datascientest.com/matplotlib-tout-savoir
29
[28] https://numpy.org/doc/stable/user/whatisnumpy.html
[29] https://www.axopen.com/blog/2019/09/open-cv-cest-quoi/
30