0% ont trouvé ce document utile (0 vote)
353 vues36 pages

Facture OCR

Transféré par

Jihad Sabar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
353 vues36 pages

Facture OCR

Transféré par

Jihad Sabar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Projet De Stage

La reconnaissance automatique des factures à l'aide de l'OCR

Réalisé par : Encadré par :

Jihad Sabar Pr.Ikram El Asri

2024
Remerciements

À l'issue de ce travail, je tiens à exprimer ma profonde gratitude envers Dieu, le


Tout-Puissant, dont l'aide m'a permis d'accomplir cette tâche.

Je tiens à exprimer ma profonde gratitude envers l'Institut National des Postes


et Télécommunications (INPT) pour m'avoir offert l'opportunité de réaliser ce
stage au sein de leur établissement. Cette expérience m’a permis de renforcer
mes compétences et de découvrir des aspects passionnants du domaine de la
science de données.

Je tiens particulièrement à adresser mes remerciements à Madame Ikram El


Asri, qui m'a proposé un sujet de stage riche et stimulant, et qui m'a guidé tout
au long de ce projet avec ses précieux conseils et son soutien constant.
Résumé

La communauté des chercheurs a déployé des efforts considérables pour améliorer


les systèmes de reconnaissance optique de caractères (OCR). Cette technologie
permet d'extraire des informations textuelles à partir d'images ou de documents
numérisés, et de les convertir en texte numérique structure. Ce processus est
largement utilisé dans les entreprises pour optimiser la gestion des documents
financiers, améliorer la précision des données comptables, et réduire les coûts et le
temps consacrés à la saisie manuelle. Ce rapport présente une étude sur
l'automatisation de la reconnaissance de factures grâce à l'OCR (Optical Character
Recognition), en particulier avec l'utilisation de la bibliothèque Pytesseract. La
reconnaissance de texte dans des documents tels que les factures permet
d'automatiser l'extraction d'informations clés (numéro de facture, montant total,
dates, etc.) aux fins de gestion et de comptabilité. Nous aborderons d'abord l'état de
l'art des technologies OCR, puis nous présenterons une implémentation concrète
utilisant Pytesseract pour reconnaître et extraire automatiquement les informations
à partir d'images de factures. Les résultats démontrent une efficacité prometteuse
dans l'automatisation du traitement des documents financiers.

Mots-clés : Reconnaissance optique de caractères, Traitement d'image, Reconnaissance


de texte.

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.

Keywords: Optical Character Recognition (OCR), Image Processing, Text


Recognition.
Table des matières

Introduction générale ............................................................................................................... 1

Chapitre 1 : Reconnaissance Optique de Caractères

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

Chapitre 2 : Implémentation et résultats

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

Figure 1.1 Processus de reconnaissance optique de caractères………………………………..7


Figure 2.1 La configuration du matériel utilisé……………………………………………………….11
Figure 2.2 Architecture globale du système……………………………………………………………16
Figure 2.3 représente le code de lecture de l’image……………………………………………….16
Figure 2.4 représente le code de redimensionnement de l’image………………………….17
Figure 2.5 représente le code de conversion en niveau de gris de l’image……………..17
Figure 2.6 représente le code de binarisation de l’image……………………………………….18
Figure 2.7 représente le code de suppression de bruit de l’image………………………….18
Figure 2.8 représente le code de lissage…………………………………………………………………19
Figure 2.9 représente le code d’extraction des contours………………………………………..19
Figure 2.10 représente le code de reconnaissance du texte……………………………………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…………………………………21
Figure 2.13 représente le code d’extraction de valeur totale……………………………….…21
Figure 2.14 représente le résultat d’extraction de valeur totale……………………………..22
Figure 2.15 représente l’interface utilisateur………………………………………………………….22
Figure 2.16 représente la base de données des factures………………………………………..23
Figure 2.17 représente le résultat d’extraction de totale……………………………………….24
Introduction générale

Les techniques liées au traitement de l'information connaissent actuellement un


développement rapide, en particulier dans le domaine de l'interaction Homme-
Machine, où elles offrent un potentiel croissant. Depuis toujours, l'écriture a été un
moyen fondamental de communication pour l'humanité. Elle constitue non seulement
un pilier des civilisations, mais aussi le principal vecteur de transmission et de
préservation du savoir. En conséquence, l'homme n'a cessé de développer des
méthodes pour assurer la pérennité de l'écrit à travers les générations. Avec
l'avènement des nouvelles technologies de l'information, telles que l'électronique,
l'informatique, l'augmentation des capacités des machines et l'automatisation des
processus (lecture, recherche, archivage…) s'est imposée comme une nécessité. Ce
besoin d'automatisation a conduit à l'émergence de la reconnaissance optique de
caractères (OCR, pour Optical Character Recognition en anglais) [1].

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].

L'objectif de ce rapport est de développer un système de reconnaissance optique de


caractères pour automatiser la reconnaissance de factures en utilisant Pytesseract, un
wrapper Python de la célèbre solution open-source Tesseract OCR. On analyse les
algorithmes et les techniques existants dans ce domaine, et présenterons une
application pratique de Pytesseract pour la reconnaissance des factures, accompagnée
d'une analyse des résultats obtenus.

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

La reconnaissance optique de caractères (OCR, pour Optical Character Recognition


en anglais) est une technologie qui permet de convertir divers types de documents,
tels que des papiers scannés, des fichiers PDF ou des images numériques, en formats
modifiables et exploitables.
Ce chapitre commence par une définition de l'OCR, suivie d'une présentation des
principaux outils utilisés dans ce domaine. Nous abordons ensuite les différentes
étapes de traitement nécessaires pour structurer un système de reconnaissance
automatique de factures, en discutant des techniques appliquées à chaque étape.
Par la suite, nous examinons les principales applications de l'OCR. Enfin, nous
mettons en lumière les avantages et les inconvénients de cette technologie avant de
conclure.

2 Définition

La Reconnaissance Optique de Caractères (OCR) est un procédé qui permet de traduire


une image de texte numérisée en un document texte modifiable [4]. Les images sont
représentées sous forme de matrices de pixels. Le but d’un OCR est la segmentation
des images pour effectuer la reconnaissance de caractère. La segmentation de
caractères est une opération permettant de décomposer une image en une sous-image
de symboles individuels [5]. Un système de reconnaissance de caractères comprend
principalement trois phases : le prétraitement, la segmentation et la reconnaissance.

3 Les outils OCR

Il existe de nombreux logiciels de reconnaissance optique de caractères parmi ces


outils ona :

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 :

Easy OCR est un logiciel ou un système de reconnaissance optique de caractères


(OCR) qui a été conçu pour simplifier la tâche de lecture et de conversion de texte à
partir d'images ou de documents imprimés. L'acronyme OCR signifie « Optical
Character Recognition » en anglais, ce qui se traduit en français par « Reconnaissance
Optique de Caractères » [7]. Easy OCR se distingue par sa facilité d'utilisation et sa
capacité à lire des caractères imprimés, qu'il s'agisse de polices de caractères
standard ou de polices personnalisées. Il est généralement utilisé pour extraire du
texte à partir de documents numérisés, de photos oud'autres types d'images, ce qui
permet de le convertir en texte éditable et de le traiter informatiquement. Cela peut
être utile dans de nombreuses applications, notamment la numérisation de
documents, la recherche d'informations à partir d'images, la traduction
automatique, la gestion de documents, et bien d'autres. En résumé, Easy OCR est un
outil qui simplifie la reconnaissance de texte à partir d'images ou de documents
imprimés [7].

3.3 Ocular :

Ocular est un système OCR historique de pointe conçu pour fonctionner


efficacement sur des documents imprimés avec des presses manuelles, notamment
ceux rédigés en plusieurs langues. Ce système est particulièrement performant dans
le traitement des documents anciens, souvent complexes, grâce à plusieurs
caractéristiques innovantes [8] :

• Apprentissage non supervisé de polices inconnues : nécessite uniquement des


images de documents et un corpus de texte.
• Capacité à gérer des documents bruyants : encrage, espacement, alignement
vertical incohérents
• Prise en charge des documents multilingues, y compris ceux qui comportent
une commutation de code au niveau des mots considérable.
• Apprentissage non supervisé de modèles de variation orthographique, y
compris les orthographes archaïques et la sténographie d'imprimante.
• Transcription simultanée et conjointe sous forme diplomatique (littérale) et
normalisée.

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

La Reconnaissance Optique de Caractères (OCR) est un processus technologique


permettant de convertir des images de texte imprimé ou manuscrit en texte
numérique. Le fonctionnement de l'OCR comprend plusieurs étapes clés :

4.1 Acquisition de l'Image

La première étape du processus OCR est l'acquisition de l'image contenant le texte à


reconnaître. Cette étape consiste à numériser (scan) le document et le stocker en
tant qu’image, elle se fait par balayage optique. Le résultat du balayage optique est
stocké dans un fichier de pixel, sa taille dépend de la résolution [10]. Les valeurs des
pixels varient selon les types d’images [11] :

• 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.

Jusque-là, l’image n’est qu’une matrice de pixels à exploiter pour extraire de


l’information.

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 :

Binarisation : La binarisation permet de passer à une image binaire composée de deux


valeurs 0 et 1. Pour cerner et traduire les contrastes dans l’image, un seuil de binarisation
est défini. Cependant, si dans l’image la distribution de niveaux de gris n’est pas
clairement bimodale (une image peu
contrastées), il est difficile de fixer un seuil. La plus simple des façons pour le mesurer
est de calculer l’histogramme des niveaux de gris de l’image [12]. Dans ce cas, la valeur
du seuil est égale à la valeur du niveau de gris entre les deux pics de l’histogramme. Les
pixels appartenant au fond sont ceux qui ont un niveau de gris supérieur à la valeur du
seuil, les pixels ayant une valeur inferieur appartiennent donc à l’objet. La détermination
du seuil peut être local ou global [13], les méthodes locales sont déterministes mais elles
sont plus couteuse en termes de temps de calcul, contrairement aux méthodes globales
qui ne donnent pas d’exactes résultats mais en temps plus réduit [14].

Lissage : Durant le processus de l’acquisition, l’image est sujette à différents types de


bruit. Elle peut avoir des cavités (absence de pixels) ou une surcharge. Pour corriger
cela, nous appliquons le lissage sur les images bruitées. C’est l’analyse du voisinage
des pixels pour éliminer les pixels isolés et pour boucher les cavités. Une façon
classique pour appliquer le lissage consiste à parcourir l’image pixel par pixel,
l’analyse de chaque pixel se fait en se basant sur ses 8 voisins. Les pixels de valeur 1
sont mis à 0 s’il n’y a pas assez de pixels noirs autour d’eux et les pixels de valeur 0
sont mis à 1 s’il n’y a pas assez de pixels blancs autour d’eux. Une autre approche
consiste à inverser la valeur du pixel (entre 0 et 1) si la somme des pixels voisins est
inférieure à un seuil déterminé.

Squelettisation : L’image binaire est une succession de traits d’épaisseurs variables,


généralement avec bruit. Par conséquent, la squelettisation s’applique sur les images
après la binarisation, son but est de réduire l’épaisseur du tracé des caractères à un
pixel, en concevant sa continuité. La procédure consiste à faire des opérations
d’érosion conditionnelle successive jusqu’à ce que le but soit atteint [15]. Le squelette
obtenu doit préserver la forme du caractère, sa connexité, sa topologie et ses
extrémités, et ne doit pas introduire du bruit [16].

Réduction du Bruit : Élimination des artefacts indésirables (comme les taches ou le


grain) qui pourraient nuire à la reconnaissance des caractères.

Correction de l'Inclinaison : Rectification de l'orientation du texte si l'image est


inclinée, afin d'assurer un alignement correct des caractères pour leur reconnaissance.

Le redressement : Cela permet de corriger l’inclination de l’image due à un mauvais


5
positionnement du document sur le scanner ou à une mise en page irrégulière. La
première étape consiste à détecter l’angle de l’inclination puis à le corriger [17].

Normalisation de la Luminosité et du Contraste : Ce prétraitement est appliqué sur


les images pour réduire tous les types de variations, et pour obtenir des données
normalisées. Cependant, il peut engendrer une distorsion et élimine quelques
informations utiles. Usuellement, la normalisation porte sur la taille des caractères,
l’inclination des lignes et l’inclination des caractères [18].
Après l’application des prétraitements nécessaires, un document propre et amélioré
est obtenu pour la prochaine étape, en l’occurrence la segmentation. En principe, le
document après le prétraitement ne comporte que les informations significatives des
caractères.

4.3 Segmentation

La segmentation consiste à diviser l'image en différentes régions qui contiennent des


blocs de texte, des lignes, des mots, ou des caractères individuels. C'est une étape
critique qui permet de localiser précisément les éléments textuels à reconnaître [19].

4.4 Extraction des Caractéristiques

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].

4.5 Reconnaissance des Caractères

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] :

Correspondance de Modèles : Les caractères extraits sont comparés directement à


des modèles prédéfinis.

Apprentissage Automatique : Des algorithmes, comme les réseaux neuronaux


convolutifs (CNN), sont utilisés pour apprendre à partir de vastes ensembles de
données de caractèreset améliorer la précision de la reconnaissance.

4.6 Post-Traitement

Après la reconnaissance des caractères, un post-traitement est effectué pour


corriger les erreurs et améliorer la qualité du texte reconnu. Cela peut inclure [22] :

Correction Orthographique : Détection et correction des erreurs de reconnaissance


6
basées sur des dictionnaires ou des modèles linguistiques.

Reconstruction de la Mise en Page : Reconstitution de la structure du document


original, comme la disposition des paragraphes, la taille des caractères, ou
l'alignement.

4.7 Exportation du Texte

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.

Figure 1.1 Processus de reconnaissance optique de caractères

5 Applications de l'OCR

L'OCR (Reconnaissance Optique de Caractères) est utilisé dans de nombreux


domaines pour automatiser la conversion de documents papier en données
numériques, facilitant ainsi la gestion, l'analyse et le stockage des informations.
Parmi les applications les plus courantes de l'OCR [23] :

Numérisation de Documents

L'une des applications les plus populaires de l'OCR est la numérisation de


documents papier, tels que les livres, les contrats, les factures, et les archives
historiques, pour créer des versions numériques consultables. Cette numérisation
permet de préserver les documents, de faciliter leur accès et leur partage, ainsi
que d'effectuer des recherches textuelles à travers des bases de données de
documents.

7
Automatisation des Données

L'OCR est largement utilisé dans l'automatisation de la saisie de données,


particulièrement dans les secteurs où de grandes quantités de formulaires papier
sont traitées. Il aide à convertir ces formulaires en données structurées qui
peuvent être facilement analysées oustockées dans des systèmes de gestion.

Reconnaissance des Plaques d'Immatriculation (ANPR)

Dans le domaine de la sécurité et du contrôle du trafic, l'OCR est utilisé pour la


reconnaissance automatique des plaques d'immatriculation (ANPR). Ce système
est largement employé dans les péages routiers, les parkings, et par les forces de
l'ordre pour identifier les véhicules.

Accessibilité pour les Personnes Malvoyantes

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.

Traitement des Factures et Comptabilité

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.

Analyse de Documents Historiques

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.

6 Avantages et Inconvénients de l'OCR

La Reconnaissance Optique de Caractères (OCR) est une technologie puissante qui

8
offre denombreux avantages, mais elle présente également certains inconvénients
[23].

6.1 Avantages de l'OCR

Automatisation et Gain de Temps: L'OCR permet d'automatiser la conversion de


documents papier en texte numérique, ce qui réduit considérablement le temps
nécessaire pour saisir manuellement des informations. Cela est particulièrement
utile pour traiter de grands volumes de documents rapidement.

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.

6.2 Inconvénients de l'OCR

Précision Variable : La précision de l'OCR peut varier en fonction de la qualité de


l'image, du type de police, de l'alignement du texte et de la présence de bruit visuel.
Les documents mal imprimés, mal numérisés ou en mauvais état peuvent poser des
défis.

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

Ce chapitre a permis d'explorer les fondements de la reconnaissance optique de


caractères (OCR), en abordant ses définitions, les principaux outils utilisés, ainsi que
le processus de traitement des images pour l'extraction de texte. Nous avons
également examiné ses diverses applications dans des domaines tels que
l'automatisation de documents, la reconnaissance de plaques d'immatriculation et
l'accessibilité pour les personnes malvoyantes. Enfin, nous avons mis en lumière les
avantages et les inconvénients de cette technologie, soulignant à la fois son potentiel
d'automatisation et ses limitations en termes de précision et de traitement de
certaines langues ou polices. Ces éléments posent les bases pour une meilleure
compréhension de la manière dont l'OCR peut être intégré dans des systèmes
pratiques, notamment dans le cadre de la reconnaissance automatique de factures,
thème central de notre projet.

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.

2.1 Environnement matériel

La configuration du matériel utilisé dans notre implémentation est comme ce qui suit :

Figure 2.1 La configuration du matériel utilisé

2.2 Langage et bibliothèque

2.2.1 Le langage utilisé

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] :

Il est gratuit et multiplateforme : Windows, Mac OS X, Linux, Android, iOS, depuis


les mini-ordinateurs Raspberry Pi jusqu’aux supercalculateurs

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.

Bibliothèque standard étendue : Python possède une bibliothèque standard riche en


fonctionnalités qui couvre une grande variété de tâches courantes, ce qui permet aux
développeurs d'économiser du temps en utilisant des modules prêts à l'emploi.

Community et support actifs : Python bénéficie d'une communauté de développeurs


active et engagée, ce qui signifie que vous pouvez facilement trouver de la
documentation, des forums de discussion, des tutoriels et des bibliothèques tierces pour
résoudre divers problèmes.

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.

2.2.2 Bibliothèques utilisées

• 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.

Flexibilité du déploiement : Il prend en charge le déploiement sur différentes


plateformes, notamment sur des serveurs, des ordinateurs de bureau, des appareils
mobiles et des systèmes embarqués.

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.

Prise en charge de l'apprentissage automatique traditionnel : Bien que largement utilisé


pour le deep learning, TensorFlow prend également en charge les techniques
d'apprentissage automatique traditionnelles, ce qui en fait un outil polyvalent pour une
variété de problèmes.

• 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 (Open Source Computer Vision Library) :

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.

• Visual Studio Code (VS Code)

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.

3 Architecture globale du système

L'architecture globale de ce système semble être conçue pour le traitement d'images


de factures en vue d'extraire des informations spécifiques, notamment le montant
total.

Base de données : Contient les images de factures à traiter.

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.

Traitement et extraction de texte :


• Extraction du texte de la facture : Utilisation de techniques OCR pour
transformer le texte contenu dans l'image en texte numérique.
• Nettoyage du texte extrait : Nettoyage du texte pour supprimer les erreurs de
reconnaissance et les caractères indésirables.
• Extraction de la valeur totale : Identification du montant total de la facture en
analysant les données textuelles extraites.

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

Cette section décrit les différentes techniques du notre système de reconnaissance


de factures.

4.1 Chargement de l’image

L'image est chargée à partir du chemin spécifié par l'utilisateur (path) en utilisant la
bibliothèque OpenCV.

Figure 2.3 représente le code de lecture de l’image


16
4.2 Prétraitement

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.

L’objectif de ce module est la suppression du bruit pour ne conserver que


l'information significative des caractères, d’aiguiser les détails du tracé, de mettre les
caractères en tailles standards et réduire tous les types de variations. Ce module a
pour but de simplifier le module de l’extraction de caractéristiques.

• Redimensionnement

Le redimensionnement d'image est une opération courante en traitement d'images.


Elle consiste à modifier la taille d'une image (sa largeur et/ou sa hauteur) tout en
essayant de maintenir la qualité de l'image.

Figure 2.4 représente le code de redimensionnement de l’image

• 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 :

Figure 2.5 représente le code de conversion en niveau de gris de l’image


17
Ensuite, nous avons appliqué la binarisation par méthode de seuillage. Nous avons
utilisé un seuillage simple qui consiste à comparer les niveaux de gris de chaque pixel
de l’image avec un seuil fixé à 255. La fonction qui nous a permis de faire le seuillage
pour passer d’une image en niveau de gris à une image noir et blanc est la suivante :

Figure 2.6 représente le code de binarisation de l’image

• 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 :

Figure 2.7 représente le code de suppression de bruit de l’image

• Le lissage

Il permet de réduire au maximum les discontinuités introduites dans l’image et ainsi


de rétablir la régularité et la continuité du tracé des caractères. Nous avons utilisé
une fonction de dilatation suivie d’une fonction d’érosion pour cela. Cette suite de
deux fonctions s’appelle 𝑂𝑢𝑣𝑒𝑟𝑡𝑢𝑟𝑒 𝑚𝑜𝑟𝑝ℎ𝑜𝑙𝑜𝑔𝑖𝑞𝑢𝑒.
La dilatation étend les zones blanches (pixels de valeur élevée) dans l'image. Chaque
pixel blanc prend la valeur maximale de ses voisins dans la zone définie par le noyau
(5x5), ce qui agrandit les objets lumineux et remplit les petites lacunes ou trous dans
les objets.
L'érosion est l'opération inverse de la dilatation. Elle réduit les zones blanches en
prenant la valeur minimale des pixels voisins dans la zone du noyau. Cela diminue la
taille des objets lumineux et affine les contours.

18
Les fonctions que nous avons appliquées pour faire l’ouverture morphologique sont
les suivantes :

Figure 2.8 représente le code de lissage.

• Extraction des Contours

Les contours de l'image sont extraits avec extraction_contour. Cette étape est cruciale
pour isoler les formes distinctes présentes dans l'image.

Figure 2.9 représente le code d’extraction des contours.

4.3 Reconnaissance du Texte par OCR

• Extraction du texte de la facture


La fonction df_pytesseract utilise pytesseract, un outil de reconnaissance optique
de caractères (OCR), pour extraire les informations de texte présentes dans la
facture sous forme de DataFrame. df_pytesseract est utile pour transformer une
image en texte structuré sous forme de DataFrame, ce qui facilite l’analyse et le
filtrage du contenu textuel détecté dans une image.

Figure 2.10 représente le code de reconnaissance du texte.

19
Figure 2.11 représente le résultat de l’extraction du texte de facture.

• Nettoyage du texte extrait

La fonction, clean_df, permet de nettoyer et de prétraiter les données extraites


d’une image de facture à l'aide de la reconnaissance optique de caractères (OCR)
en utilisant Tesseract. Le but est de formater les données de texte pour une
meilleure lisibilité et une facilité d'exploitation dans les étapes de traitement
suivantes.

20
Figure 2.12 représente le code de nettoyage du texte extrait.

• Extraire la valeur totale

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".

Figure 2.13 représente le code d’extraction de valeur totale.

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é.

Figure 2.15 représente l’interface utilisateur.

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

Le deuxième chapitre de ce document décrit l’environnement matériel et logiciel


utilisé pour développer un système de reconnaissance automatique de factures. La
première section présente les composants et la configuration des équipements
informatiques nécessaires. La section suivante explore les outils de développement,
en justifiant le choix de Python et des principales bibliothèques et logiciels utilisés.
Ce chapitre introduit ensuite le modèle OCR mis en œuvre et ses étapes principales
: le prétraitement des images, le traitement et l’extraction du texte, le nettoyage du
texte extrait, et enfin l'extraction de la valeur totale de la facture. En conclusion, une
présentation des résultats de l'implémentation globale du modèle est fournie.

26
Conclusion Générale

En conclusion, ce travail a permis de concevoir et de développer une solution


efficace pour la reconnaissance automatique de factures, en utilisant des
techniques avancées de traitement d'images et de reconnaissance optique de
caractères (OCR). L’architecture mise en place et les outils utilisés, tels que
Python, TensorFlow, et OpenCV, ont permis de créer un système capable de
détecter et d’extraire automatiquement le montant total d’une facture avec
précision et rapidité. Cette solution est un premier pas vers une automatisation
plus complète de la gestion des documents financiers, simplifiant ainsi le
traitement des factures et minimisant les erreurs humaines.

La robustesse et la flexibilité de l’outil sont renforcées par une interface


utilisateur intuitive, facilitant l’usage de l’application par des utilisateurs variés
dans un contexte de gestion financière ou comptable. Pour aller plus loin, des
améliorations comme l'intégration de techniques de machine learning plus
avancées ou l’ajout de fonctionnalités pour la reconnaissance de plusieurs
langues pourraient optimiser encore davantage ce système.

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.

[6] Mithe, S. Indalkar, and N. Divekar, "Optical Character Recognition," International


Journal of Recent Technology and Engineering (IJRTE), vol. 2, no. 1, pp. 72-75, 2013.

[7] https://pyimagesearch.com/2020/09/14/getting-started-with-easyocr-for-optical-
character-recognition/

[8] Berg-Kirkpatrick, T., & Klein, D. (2013). Unsupervised translation of ancient


documents. Proceedings of the 51st Annual Meeting of the Association for
Computational Linguistics (Volume 1: Long Papers), Sofia, Bulgaria, August 4-9,
2013, 345–355. Association for Computational Linguistics

[9] Microsoft. (n.d.). Optical Character Recognition (OCR) - Azure AI services.


Microsoft Azure Documentation.

[10] Jonathan Sachs, "Digital Imaging Glossary," 2002.

[11] Andrew King and Paul Aljabar, MATLAB Programming for Biomedical
Engineers and Scientists.: Academic Press, 2017.

[12] Abderahmane Kefali, Toufik Sari, and Mokhtar Sellami, "Implémentation de


plusieurs techniques de seuillage d'images de documents Arabes anciens,"
inproceeding, May 2009.

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.

[16] Belaïd A, "Reconnaissance automatique de l'écriture et du document," Campus


scientifique, Vandoeuvre-Lès-nancy, 2001.

[17] Leila CHERGUI, Combinaison de classifieurs pour la reconnaissance de mots


arabes manuscrits. Constantine: Université Mentouri , 2013.

[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.

[21] Smith, R. (2007). An overview of the Tesseract OCR engine. In Proceedings of


the Ninth International Conference on Document Analysis and Recognition (Vol. 2,
pp. 629-633).

[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

Vous aimerez peut-être aussi