Vous êtes sur la page 1sur 55

République de Côte d’Ivoire

Union – Discipline – Travail

Ministère de l’Enseignement Supérieur et Ministère de l’Economie et des Finances


de la Recherche Scientifique

International Data Science Institute SAHAM Assurance

MEMOIRE DE FIN DE CYCLE


En vue de l’obtention du Diplôme de Master Data Science / Big Data

Thème Mémoire :

RECONNAISSANCE D’IMAGES SUIVI


D’OCR

Présenté par :

KOUASSI Dhom Badou Hugues Paterne

Encadreur Pédagogique Sous la supervision de

Prof. Georges LOUM M. Ahmed EL MESKINE


Professeur Titulaire au DFR GEE de l'INP-HB Data Scientist

Année Académique : 2019 – 2020


SOMMAIRE

DEDICACE....................................................................................................................................II

REMERCIEMENTS ................................................................................................................... III

AVANT-PROPOS ....................................................................................................................... IV

SIGLES ET ABREVIATIONS .................................................................................................... V

LISTE DES TABLEAUX ........................................................................................................... VI

LISTE DES FIGURES................................................................................................................ VI

RESUME ..................................................................................................................................... VII

INTRODUCTION GENERALE .................................................................................................. 1

Partie 1 : STRUCTURE D’ACCUEIL ET PRESENTATION DU STAGE........................ 2

PRESENTATION DE L’ENTREPRISE .............................................................................................. 3


LA DIGITAL FACTORY ......................................................................................................................... 5
PRESENTATION DU STAGE............................................................................................................... 10
Partie 2 : RECONNAISSANCE D’IMAGES DE DOCUMENTS.......................................... 12

I. DEFINITIONS............................................................................................................................... 14
II. PRESENTATION DES DONNEES ............................................................................................ 22
III. PREPROCESSING ....................................................................................................................... 27
IV. IMPLEMENTATION ET RESULTATS .................................................................................... 28
Partie 3 : OCR ............................................................................................................................. 36

I. DEFINITIONS............................................................................................................................... 38
II. PRESENTATION DES DONNEES ............................................................................................ 38
III. PREPROCESSING ....................................................................................................................... 39
IV. IMPLEMENTATION ET RESULTATS .................................................................................... 39
CONCLUSION GENERALE ..................................................................................................... 43

WEBOGRAPHIE ......................................................................................................................... 44

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation I


DEDICACE

À ma famille pour tout le soutien, les encouragements et les prières !


À mes amis !

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation II


REMERCIEMENTS

C’est avec un immense sentiment de gratitude et un cœur rempli de reconnaissance que


nous voulons adresser nos sincères remerciements à l’entreprise Sanlam Pan Africa pour cette
opportunité qu’elle nous a donné d’effectuer un stage au sein de sa filiale marocaine Saham
Assurance et plus particulièrement à la Digital Factory.
Arrivé au sein de cette entité managée par M. Hicham BEDREDDINE, nous avons été accueillis
par une équipe formidable, disponible et enthousiaste qui nous a fait nous sentir dans une famille.
Nous leur disons infiniment merci pour cette marque d’attention.
De façon spéciale, un grand merci à la « Team Data » pour leur solidarité et leur affection et
particulièrement à Ahmed EL MESKINE notre encadreur et Zouhair JAMAL-BENNIS notre
coach agile.
Nous n’oublions pas dans cette page des remerciements, la direction de l’International Data Science
Institute (IDSI) dirigé par Dr Lambert TANOH et avec elle tout le corps enseignant qui ont
contribué à notre formation. Ils nous ont donné les armes nécessaires pour affronter cette aventure
professionnelle et si le stage est une réussite c’est parce qu’ils ont su nous amener au travail. Grand
merci aussi à notre encadreur pédagogique le professeur Georges LOUM pour avoir suivi notre
travail avec diligence.
Nous finirons cette page en remerciant notre famille, nos amis et tous ceux qui ont contribué d’une
façon ou d’une autre à la réussite de cette formation et de ce stage.
Une mention spéciale à l’endroit de notre mère, Dieu seul sait combien toute notre vie elle a été et
continue d’être une aide et un soutien inconditionnel dans toutes les situations douloureuses comme
heureuses de notre vie.
Merci au tout puissant pour son amour continu et infini ainsi que sa présence constante à nos côtés.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation III


AVANT-PROPOS

Ce mémoire s’inscrit dans le cadre du stage de fin d’étude du Master en Data Science – Big
Data au sein de l’International Data Science Institute. Il constitue une occasion de mettre en
application les compétences techniques acquises durant le parcours d’études sur un problème réel
d’entreprise. Pour cela, il nous a été demandé de réfléchir sur la reconnaissance d’Images de
documents suivie de la reconnaissance textuelle sur des documents d’identités. En plus de la
consolidation de nos acquis, ce travail permettra à l’entreprise de disposer de moyens permettant
le développement d’applications plus intelligentes facilitant les interactions entre le client et sa
maison d’assurance. Les difficultés rencontrées dès le début de ce stage nous ont très vite appris à
être beaucoup plus autonome, ouvert d’esprit et structuré dans le travail. En clair, cette expérience
de stage a été beaucoup formatrice pour nous car elle s’est effectuée à distance, dans une structure
qui pour nous, dispose d’une nouvelle manière de travailler (utilisation de la méthode agile).

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation IV


SIGLES ET ABREVIATIONS
CNN : Convolutionnal Neural Network

OCR : Optical Character Recognition


PDF : Portable Document Format

API : Application Programming Interface

Cg : Carte grise

CNI : Carte Nationale d’identité

RN : Réseaux de neurones

ML : Machine Learning

ReLU : Rectified Linear Unit

Pc : Permis de conduire

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation V


LISTE DES TABLEAUX
Tableau 1 : statistique_base1 ..................................................................................................................... 24
Tableau 2: statistique_base2...................................................................................................................... 26
Tableau 3: Architectures_utilisées ............................................................................................................. 33
Tableau 4: resultat_modele1 ..................................................................................................................... 33
Tableau 5: resultat_modele2 ..................................................................................................................... 34
Tableau 6 : resultat_detction_contours..................................................................................................... 35
Tableau 7 : resultat_extract_chassis_num ................................................................................................ 41
Tableau 8 : resultat_extract_carburant_field ............................................................................................ 42
Tableau 9 : resultat_extract_brand_field .................................................................................................. 42
Tableau 10 : performance_algo_redressement......................................................................................... 42

LISTE DES FIGURES


Figure 1 : logo_saham ................................................................................................................................. 2
Figure 2 : schema_organisationnel .............................................................................................................. 5
Figure 3: logo_reconnaissance ................................................................................................................... 12
Figure 4: logo_ml ........................................................................................................................................ 14
Figure 5: logo_rn ......................................................................................................................................... 16
Figure 6: neurone_simple ........................................................................................................................... 17
Figure 7: fonction_sigmoide ....................................................................................................................... 18
Figure 8: fonction_relu ............................................................................................................................... 19
Figure 9: convolution .................................................................................................................................. 20
Figure 10: padding ...................................................................................................................................... 21
Figure 11: strides_1..................................................................................................................................... 21
Figure 12: strides_2..................................................................................................................................... 22
Figure 13: organisation_data_modele1 ..................................................................................................... 23
Figure 14: ot_doc1 Figure 15: ot_doc2 ....... 24
Figure 16 : organisation_data2................................................................................................................... 25
Figure 17: cni_img Figure 18: cg_recto Figure 19 : cg_verso ............... 26
Figure 20: pc Figure 21 : ot_ill1 Figure 22: ot_ill2 ................... 27
Figure 23: reconnaissance_pipeline ........................................................................................................... 28
Figure 24: Page1.jgp.................................................................................................................................... 29
Figure 25: Page1.PDF .................................................................................................................................. 29
Figure 26:Page1.jpg .................................................................................................................................... 31
Figure 27: Page1_1.jpg................................................................................................................................ 31
Figure 28: Page1_0.jpg................................................................................................................................ 31
Figure 29: carte_grise_verso.jpg ................................................................................................................ 32
Figure 30: images_issues_de_lextraction .................................................................................................. 32
Figure 31: ocr_img ...................................................................................................................................... 36
Figure 32: cg_ocr ......................................................................................................................................... 38
Figure 33: ocr_pipeline ............................................................................................................................... 39
Figure 34: redressement_image ................................................................................................................. 40

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation VI


RESUME

Ce mémoire se subdivise en deux parties essentielles que sont d’une part, la reconnaissance
d’images et d’autre part, l’extraction de textes sur des documents d’identités : cas de la carte grise.

Pour la reconnaissance d’images, il s’agit de mettre en œuvre une palette d’algorithmes en


l’occurrence des algorithmes des modèles de Deep Learning pour la classification d’images. Nous
entrainons d’un côté un ensemble d’algorithmes pour classifier des images qui contiennent des
documents d’identités des autres images et d’un autre côté un ensemble d’algorithmes permettant
de catégoriser les images de pièces d’identités (CNI, permis de conduire, carte grise). Des deux
côtés, nous retenons le meilleur modèle. Ces deux modèles couplés à l’algorithme de détection de
contours nous permettent de réaliser la première tâche de reconnaissance d’images de pièces dans
un document PDF avec une performances de plus de 96%.

Dans l’exécution de cette tâche, nous nous sommes heurtés à un faible volume d’images et un
manque de GPU sur notre poste de travail, rendant ainsi lent l’exécution de cette tâche.

Dans la deuxième partie de notre travail, nous utilisons essentiellement la bibliothèque OpenCV
de python pour le traitement de nos images (gestion des contours de l’image, réduction des bruits,
seuillage, etc. …). Ensuite nous isolons les parties de l’image dont nous voulons extraire une
information textuelle et grâce à la bibliothèque Pytesseract de python, l’information pertinente de
cette image est extraite sous forme de texte.

Souvent dans le corpus d’un document PDF, certaines pages présentent plusieurs pièces. Dans ce
cas, avant toutes actions, nous décomposons le document en sous-documents contenant chacun une
seule pièce, grâce à une détection de contours. Cette opération permet de faciliter le processus
d’extraction de caractères sur la pièce dont le résultat est fortement tributaire de la qualité des
images.

Malgré tout, la mise en place d’applications pour la souscription d’un contrat d’assurance depuis
son domicile devient possible car disposant d’un moyen permettant en back de vérifier la nature et
la conformité (ou l’exactitude) des documents fournis par le client à chaque champ.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation VII


ABSTRACT
This thesis is subdivided into essential parts which are on the one hand, image recognition and on
the other hand, the extraction of texts from identity documents: case of the gray card.

For image recognition, it is a question of implementing a range of algorithms, in this case the
algorithms of Deep Learning models for the classification of images. We train on the one hand a
set of algorithms to classify images which contain identity documents of other images and on the
other hand a set of algorithms allowing to categorize the images of identity documents (CNI,
permits of driving, gray card). On both sides, we choose the best model. These two models, coupled
with the edge detection algorithm, allow us to perform this first task of recognizing part images in
a PDF document with a performance of over 96%.

In performing this task, we encountered low image volume and a lack of GPUs on our workstation
making it slow to complete this task.

In the second part of our work, we mainly use the python OpenCV library for the processing of our
images (management of image contours, noise reduction, thresholding, etc.). Then we isolate the
parts of the image from which we want to extract textual information and thanks to python's
Pytesseract library, the relevant information from that image is extracted as text.

Often in the document corpus (a document is a PDF of several pages), some pages of some
documents have several parts. In this case, before any actions, we break down the document into
several, each containing a single part, thanks to an outline detection. By doing this, our algorithm
gives the information of the different parts present in the document. This operation makes it
possible to use the different parts present separately and thus facilitate the process of extracting
characters from the part. These extraction operations are done with many errors given the quality
of the images.

However, the implementation of applications for the subscription of an insurance contract from
his home becomes possible because it has a means to verify the nature and the veracity of the
documents provided by the customer in each field.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation VIII


INTRODUCTION GENERALE
L'avènement du mobile, de l’internet et des appareils photo numériques, en particulier ceux
intégrés aux smartphones modernes, a entraîné une augmentation exponentielle du volume de
nouvelles images et vidéos numériques créées quotidiennement. Plus qu'à tout autre moment de
l'histoire, les gens capturent et exploitent des quantités inouïes de données visuelles, et les partagent
avec leurs réseaux personnels, sociaux comme professionnels via une multitude d'applications, de
sites Web, de réseaux sociaux et d'autres canaux numériques.

Ces différents canaux suscités ont d’une manière ou d’une autre façonné le quotidien voire le
naturel d’un bon nombre de personnes. Par soucis d’innovation et de réponse aux besoins actuels
des clients, c’est tout naturellement que les entreprises cherchent sinon entreprennent le
développement de nouveaux moyens techniques équipés de systèmes intelligents répondant le plus
aux nouveaux besoins du consommateur. Pour cela les entreprises comptent tirer parti des données
produites par leurs clients afin de fournir des services facilitant et améliorant l’expérience client à
travers des systèmes intelligents se renforçant grâce aux données. Ainsi, dans le cas de SAHAM
ASSURANCE MAROC la reconnaissance d’images et la détection optique de caractères est au
centre des réflexions pour la fiabilisation des documents échangés et la facilitation du processus de
souscription aux contrats d’assurance.

Ce passage à des systèmes plus intelligents pour améliorer le business fait inévitablement intervenir
l’Intelligence Artificielle (IA) plus précisément le Deep Learning. Cette dernière méthode a montré
son efficacité dans le traitement des images et leur classification au fil des années lors des
différentes éditions du concours annuel : ILSVRC1.

C’est dans ce contexte que le thème intitulé : Reconnaissance d’images suivi d’OCR nous a été
attribué dans le cadre de notre stage de fin d’étude du Master en Data Science – Big Data. Au terme
de ce stage, SAHAM ASSURANCE disposera en interne de sa solution pour les tâches de
reconnaissance d’images et d’OCR. Ce qui lui donnera une autonomie vis-à-vis des solutions
externes mais aussi lui permettra financièrement de faire des économies.

1
ImageNet Large Scale Visual Recognition Challenge ou "Compétition ImageNet de Reconnaissance Visuelle à
1
Grande Échelle

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation


Partie 1 : STRUCTURE D’ACCUEIL ET PRESENTATION
DU STAGE

Figure 1 : logo_saham

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 2


PRESENTATION DE L’ENTREPRISE

En octobre 2018, Sanlam, premier groupe d’assurance en Afrique avec une capitalisation
boursière de 16 milliards de dollars, a procédé à l’acquisition de la totalité des filiales Saham
Assurance du groupe SAHAM, en augmentant sa participation de 46,6% à 100% dans le capital de
Saham Finances.
Sanlam est un groupe financier de référence qui est coté sur le JSE Limited (Bourse de
Johannesburg) et sur le Namibian Stock Exchange (Bourse de la Namibie).
Fondé en 1918 en tant que compagnie d'assurance vie, le groupe Sanlam, basé en Afrique du Sud,
s'est par la suite transformé en une entreprise de services financiers diversifiés.
Le groupe développe des solutions financières complètes et personnalisées au profit des clients
particuliers et institutionnels dans tous les segments du marché, et ce, à travers l’ensemble de ses
pôles d'activités : Sanlam Personal Finance, Sanlam Emerging Markets, Sanlam Investments,
Santam et la société nouvellement créée Sanlam Corporate. Les domaines d’expertise du groupe
incluent l’assurance (vie et générale). Le groupe opère dans l'assurance, l’ingénierie financière, la
retraite, les fiducies, les testaments, les dommages, la gestion d'actifs, la gestion des risques, les
activités de marchés de capitaux et la gestion de fortune.
Au Maroc, SAHAM Assurance devenu membre du groupe Sanlam Pan Africa est leader dans le
domaine de l’assurance Non-Vie, N°1 de l’Automobile et de la Santé.
Avec plus de 481 agents généraux, SAHAM Assurance dispose du réseau exclusif le plus étendu
au Maroc, lui permettant d’assurer une présence régionale très forte et de développer au mieux une
politique de proximité avec l’ensemble de ses clients.
Ainsi, partant du constat que le comportement du client évolue rapidement, et qu’il y a une
impérieuse nécessité de placer l’assuré au cœur des process de la compagnie, la Digital Factory a
été créée dans l’objectif principal d’offrir la meilleure proposition de valeur, en s’appuyant pour
cela sur l’innovation, le travail collaboratif et la méthode Agile.
Espace collaboratif par excellence, la Digital Factory regroupe des équipes aux profils
pluridisciplinaires engagées autour de la transformation globale de la Compagnie. C’est ainsi que
des experts métier planchent aux côtés de jeunes développeurs, de « Scrum Masters », « Experts
de la donnée » et autres profils formés aux dernières technologies.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 3


C’est fort de cette initiative de digitaliser ses process et avoir des ressources humaines
compétentes dans des technologies avant-gardistes permettant d’accroitre la compétitivité du
groupe, que nous avons été recrutés pour un stage de six (6) mois au sein de cette Digital Factory
plus précisément au sein de sa « Team Data ».

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 4


LA DIGITAL FACTORY

La Digital Factory se veut ‘Customer centric’ et proactive pour livrer des produits efficaces et utiles
pour les métiers en un temps beaucoup plus court. Pour cela, en plus des compétences recrutées et
de leurs expériences, elle mise sur une approche organisationnelle du travail : L’agilité2 à travers
la méthode Scrum3.
Pour cela, elle est subdivisée en plusieurs équipes scrum (squads) chargées de missions bien
précises et travaillant en synergie sur des projets. En plus des squads, une équipe managériale dite
transverse assure le management global de tous les projets au sein de la Digital Factory.

1. Aperçu du schéma organisationnel

Data Fraude

Equipe Transverse

Sinistres Business
Figure 2 : schema_organisationnel

2
Est un ensemble de pratiques de pilotage et de réalisation des projets prônant quatre valeurs fondamentales que sont
5
les individus et leurs interactions, être à même de fournir des logiciels opérationnels, la collaboration constante avec
l’utilisateur final et l’adaptation au changement.
3
Méthodologie de l’agilité se caractérisant par les éléments fondamentaux que sont la définition des rôles, les
évènements(meeting), les artefacts (le plan de réalisation de l’objectif général, des objectifs spécifiques et comment
l’on suit ces évolutions jour après jour), et les règles.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation


2. Missions des Squads
Chacune des équipes de l’organisation regroupe différents profils et compétences parmi lesquels
des Data scientistes, des Data Engineer, Full Stacks développeurs, des UX Designer, des scrum
masters et des Product Owner. Nous décrivons par la suite les missions respectives des différentes
squads.
➢ Business

Cette équipe est focalisée sur la partie acquisition des clients, en charge de transformer l'Entrée en
Relation, l'expérience de souscription des clients (comme permettre aux clients de souscrire aux
contrats d’assurances depuis leurs domiciles) et de mettre en place le modèle opérationnel de
gestion du renouvellement.

➢ Sinistres

Cette équipe a la charge de transformer la gestion des sinistres, aussi bien à travers la refonte de la
gestion des parcours et de celle des sinistres matériels et corporels, que dans la structuration de
l'écosystème de partenaires (par ex. garagistes, experts automobiles, avocats, ...), afin d'améliorer
l'expérience client final tout en réduisant les coûts.

➢ Fraude

Cette équipe a la charge de transformer la gestion de la Fraude chez Saham, aussi bien la fraude
sur sinistres matériels, sur sinistres corporels que fraude à la souscription.

➢ Data Factory

Cette équipe a la charge d’être une source de valeur fondamentale de la Digital Factory. Elle met à
disposition l'ensemble des données à chaque use-case pour exposer les données, faciliter la prise
de décision (reporting, business intelligence) et créer de l'intelligence métier (Advanced Analytics
/ Machine Learning).

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 6


3. Méthode Scrum
L'équipe Scrum est auto organisée et pluridisciplinaire, c'est-à-dire qu'elle choisit la meilleure
façon d’accomplir son travail et qu'elle possède toutes les compétences nécessaires à
l'accomplissement du projet. La flexibilité, la créativité et la productivité de l'équipe sont ainsi
optimisées.
Le principe de base est que les équipes avancent ensemble et soient toujours prêtes à réorienter le
projet au fur-et-à-mesure de sa progression. Pour cela, la méthode Scrum se compose des éléments
fondamentaux que sont les rôles, les évènements et les artefacts.
a. Rôles Scrum
Une équipe Scrum se compose de

• un Scrum Master
• Un Product Owner (ou propriétaire du produit en français)
• Une équipe de développement
Le Scrum Master est responsable de la compréhension, de l'adhésion et de la mise en œuvre de la
méthode Scrum qu'il maîtrise parfaitement. C'est un facilitateur qui aide à améliorer la
communication au sein de l’équipe et cherche à maximiser la productivité et le savoir-faire de celle-
ci. Il est considéré comme le coach de l'équipe de développement.

Le Product Owner porte la vision du produit à réaliser. Il travaille en interaction avec l’équipe de
développement qui doit suivre ses instructions. C'est lui qui établit la priorité des fonctionnalités à
développer ou à corriger, et qui valide les fonctionnalités terminées. Il est responsable de la gestion
du Product backlog (ou carnet de produit en français).

L'équipe de développement est chargée de transformer les besoins définis par le Product Owner
en fonctionnalités utilisables. Elle est pluridisciplinaire et possède toutes les compétences
nécessaires pour réaliser le projet, sans faire appel à des prestations externes. Il n'y a pas de notion
de hiérarchie, toutes les décisions sont prises ensemble.

b. Evènements Scrum

La vie d'un projet Scrum est rythmée par un ensemble de réunions définies avec précision et
limitées dans le temps.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 7


➢ Le Sprint

Un Sprint est un intervalle de temps maximum pendant lequel une version terminée et utilisable du
produit est réalisée. Chaque sprint a un objectif et une liste de fonctionnalités à réaliser.

➢ Planification d'un Sprint (sprint planning)

Les tâches à accomplir pendant le Sprint sont déterminées par l'ensemble de l'équipe Scrum lors de
la réunion de planification de Sprint. La durée de cette réunion est limitée à 8 heures pour les
Sprints d'un mois. Cette réunion permet à l'équipe d'établir les éléments qu'elle traitera au cours de
ce Sprint et comment elle procédera.

➢ Revue du Sprint (sprint Review)

Il s'agit du bilan du Sprint réalisé. Une fois le Sprint terminé, l'équipe Scrum et les parties prenantes
se réunissent pour valider ce qui a été accompli pendant le Sprint.

➢ Rétrospective du Sprint (sprint retrospective)

Le but est l'adaptation aux changements qui peuvent survenir et l'amélioration continue du
processus de réalisation.

➢ Mêlée quotidienne (Daily scrum)

Cette réunion quotidienne de 15 minutes est très importante. Il peut en avoir deux c’est-à-dire une
en début de journée et l’autre en fin comme c’est le cas au sein de la Digital Factory. Le but est de
faire un point sur la progression journalière du Sprint. Elle permet à l'équipe de synchroniser ses
activités et de faire un plan pour les prochaines 24 heures. Chaque membre de l'équipe de
développement doit répondre à ces trois questions :

1. Qu'est-ce qu'ils ont réalisé ?


2. Qu'est-ce qu'ils vont accomplir ?
3. Quels sont les obstacles qui les retardent ?

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 8


c. Artefacts Scrum
➢ Le Product backlog (ou carnet du produit)
Il s'agit d'une liste hiérarchisée des exigences initiales du client concernant le produit à réaliser. Ce
document évolue sans cesse durant le projet, en fonction des besoins du client. Le Product Owner
est responsable du Product backlog.

➢ Le Sprint backlog (ou carnet de sprint)

C'est le plan détaillé de la réalisation de l'objectif du Sprint, défini lors de la réunion de planification
du Sprint. Le Sprint backlog est mis à jour régulièrement par l'équipe afin d'avoir une vision précise
de la progression du Sprint.

➢ L'incrément

Il s'agit de l'ensemble des éléments terminés du Product backlog pour le Sprint en cours, ainsi que
ceux des Sprints précédents. L'incrément doit fonctionner et être utilisable.

➢ Le Burndown chart (ou graphique d'avancement)

Ce graphique simple indique l'état d'avancement dans la réalisation des tâches du Sprint backlog.
Le Burndown Chart est actualisé tous les jours par le Scrum Master après la mêlée quotidienne.
Dans le cas de la Digital Factory une application « Jira Software » permet d’avoir pour chaque
membre de l’équipe, une visibilité de ses tâches à accomplir, ses tâches en cours et celles qui
doivent être testées ou validées et donc considérées comme achevées.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 9


PRESENTATION DU STAGE

Dans cette partie, nous décrivons l’environnement de travail c’est-à-dire le matériel physique et le
software à disposition dans lequel nous avons évolué tout au long de ce stage. Aussi, nous mettons
en lumière l’existant en matière de solutions pour la reconnaissance d’images et d’OCR. Pour finir
cette partie, nous présentons le cahier de charges qui nous a guidé tout au long de ce stage.

1. Environnement de travail

Le stage devrait initialement se tenir dans les locaux de la Digital Factory de Saham Assurance
Maroc mais pour cause de crise épidémique Covid-19, nous avons effectué notre stage depuis nos
domiciles en Côte d’Ivoire par télétravail. Pour effectuer nos travaux nous avons utilisé nos
ordinateurs portables personnels (Marque : Dell Latitude E6540, Mémoire vive :16Gb,
Processeur : Intel(R) Core (TM) i5-4310M CPU @ 2.70GHz, 2701 MHz). Au niveau logiciel,
nous avons travaillé avec l’IDE Jupyter Notebook, écris nos algorithmes et entrainer nos modèles
grâce au langage de programmation python.

2. Etat de l’existant

La mise en place d’une solution d’OCR et aussi de reconnaissance d’images est un projet de
l’équipe business de la Digital Factory. L’utilisation d’une telle solution est essentielle si l’on veut
proposer des solutions digitales telles les applications pour la facilitation des processus de
souscription aux contrats d’assurance. Pour cela, l’équipe s’est penchée sur une solution externe
de Microsoft Azur pour réaliser les tâches de reconnaissance et vers Kofax pour l’OCR.

Dans le cadre de ce stage, nous avons adopté une solution interne pour éviter la dépendance aux
produits externes qui pourraient constituer une source d’exposition des données à caractère
personnel des clients SAHAM. Dans le même temps réaliser une telle solution en interne, serait
source d’économie pour la société.

3. Objectifs du projet
❖ Benchmark des algorithmes prédictifs permettant la reconnaissance.
❖ Définition des applications de la reconnaissance d’images sur le parcours client assurance
automobile (souscription -gestion du sinistre-gestion de la fraude-Production automobile…)

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 10


❖ Elargir le proof of Concept à la partie reconnaissance textuelle (OCR)

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 11


Partie 2 : RECONNAISSANCE D’IMAGES DE DOCUMENTS

Figure 3: logo_reconnaissance

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 12


Introduction

Cette première partie de notre travail est dédiée à l’identification de documents


administratifs dans des documents PDF scannés. Elle a pour objectif principal de déterminer si le
document contient une CIN, une carte grise recto ou carte grise verso.
Cette tâche consiste en un premier temps à convertir chaque page du document en une image.
Chaque image passe par un modèle pour déterminer s’il contient un document d’identité. Si oui,
on extrait de façon précise l’image de la pièce d’identité contenue dans l’image via une détection
de contours couplée à un modèle de classification pour la reconnaissance desdites images. Nous
allons donc explorer les différentes méthodes de classification d’images basées sur différents
algorithmes de Deep Learning pour la mise en place des deux modèles évoqués ci-dessus. Pourquoi
les réseaux de neurones convolutionnels dans le cas du Deep Learning ? Parce qu’ils ont la
spécificité de prendre en compte l’information spatiale présente dans les images à travers les
différentes variations de pixels sur toute l’image.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 13


I. DEFINITIONS

1. Machine Learning
Le machine Learning (apprentissage automatique en Français) est une discipline de
l'intelligence artificielle qui se fonde sur des approches mathématiques et statistiques pour donner
à l’ordinateur, la capacité d'« apprendre » à partir de données qu’on lui fournit. Elle se constitue de
plusieurs types d’apprentissage que sont : l’apprentissage supervisé, l’apprentissage non-supervisé
et l’apprentissage par renforcement.

Figure 4: logo_ml

a. Apprentissage supervisé
C’est une méthode dans laquelle la fonction d’apprentissage est construite sur un ensemble de
données dont la variable cible est connue en amont. En guise d’exemple, on utilisera une méthode
d’apprentissage supervisé dans le cas où l’on veut mettre en place un modèle de détection de fraude

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 14


sur un jeu de données répertoriant un ensemble de transaction dont une colonne du jeu nous donne
l’information des transactions frauduleuses et celles qui ne le sont pas.
b. Apprentissage non supervisé
Contrairement à l’apprentissage supervisé, dans ce mode d’apprentissage, nous construisons notre
fonction de prédiction sur notre jeu de données sans étiquettes ou sans informations préalables de
groupes auxquels appartiennent nos données. Ainsi dans la grande partie des cas, il s’agira de
découvrir des structures sous-jacentes au sein de l’ensemble des données ou de former des groupes
d’individus4 présentant des similarités.

c. Apprentissage par renforcement


C’est un ensemble de méthode de l’apprentissage automatique dans lequel, on fait apprendre à la
machine de ses erreurs.

2. Deep Learning
Le Deep Learning ou apprentissage profond en français est une sous-catégorie du Machine
Learning qui se réfère à un ensemble de techniques et de technologies d’apprentissage automatique,
basées sur les réseaux de neurones artificiels.

3. Computer vision

La computer vision est un ensemble de méthodes ou de technologies qui permettent d’automatiser


une tâche spécifique à partir d’une image. Les tâches peuvent être la détection, l’analyse et
l’interprétation d’un ou plusieurs éléments d’une image afin de prendre une décision et d’effectuer
une action comme la classification.

4. Reconnaissance d’images
La reconnaissance d’images, sous-catégorie de la Computer Vision et de l’Intelligence
Artificielle, représente un ensemble de méthodes de détection et d’analyse d’images.

4
Une ligne de notre jeu de données.
15

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation


5. Réseaux de Neurones
Un réseau de neurones (dans notre cas réseau de neurones artificiels) est un système
informatique schématiquement inspiré du fonctionnement des vrais neurones humains. Un neurone
dans ce réseau constitue une unité de calcul de base. Le réseau de neurones est donc un réseau
fortement connecté de processeurs élémentaires fonctionnant en parallèle. Chaque processeur
élémentaire calcule une sortie unique sur la base des informations qu'il reçoit.

a. Structure d’un réseau de neurones


Un réseau de neurones est en général composé d'une succession de couches dont chacune prend
ses entrées sur les sorties de la précédente. Chaque couche i est une composée de Ni neurones,
prenant leurs entrées sur les Ni-1 neurones de la couche précédente. À chaque synapse (connexion
entre deux neurones formels) est associée un poids synaptique, de sorte que les Ni-1 sont multipliés
par ce poids, puis additionnés par les neurones de niveau i.

Figure 5: logo_rn

b. Structure simplifiée d’un neurone artificiel

Un neurone artificiel est une entité unique du réseau portant une information et permettant la
communication de l’information au sein du réseau. Pour une entrée x = (X1, X2, …, Xn), le neurone
effectue un ensemble d’opérations schématisées ci-dessous.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 16


Biais

Figure 6: neurone_simple

c. Fonction de combinaison
Les xi représentent les neurones d’entrée, les wij sont les poids de
connexion et netj la sortie. La fonction de combinaison est utilisée
pour calculer la somme des entrées de la manière suivante :
𝑁

𝑛ⅇ𝑡𝑗 = (∑ 𝑤𝑗𝑖 𝑥𝑖 ) + 𝐵𝑖𝑎𝑖𝑠


𝑖=1

d. Poids de connexion
Un poids de connexion quantifie l’information échangée entre deux neurones d’un réseau.
Les valeurs des poids des couches sont apprises par rétropropagation du gradient : on calcule
progressivement pour chaque couche, en partant de la fin du réseau, les paramètres qui minimisent
la fonction de perte régularisée.

e. Fonction d’activation
La fonction d'activation est une fonction mathématique appliquée à un signal en sortie d'un
neurone artificiel. Considérons un neurone avec N cellules en entrée notées Ci : 1 ≤ i ≤ N et N poids
de connexion wij (connexion entre le neurone i de Ci et le neurone j), pour obtenir la valeur Y.
En sortie, on utilise une fonction d’activation qui peut être de plusieurs types. Le choix de la
fonction d'activation dépend de l'application. Ci-après quelques fonctions d’activation.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 17


➢ Fonction d’activation linéaire
Ici la valeur d’activation est égale la fonction de pré-activation. En sortie, on a une valeur dans IR

➢ Fonction d’activation sigmoïde


Elle représente la fonction de répartition de la loi logistique. La forme de la dérivée de sa fonction
inverse est extrêmement simple et facile à calculer, ce qui améliore les performances des
algorithmes. Ces valeurs sont comprises entre 0 et 1.

Courbe de la fonction sigmoïde

Figure 7: fonction_sigmoide

➢ Fonction d’activation softmax


Appelée aussi fonction exponentielle normalisée, cette fonction est une généralisation de la
fonction logistique qui a pour entrée, un vecteur Z = (Z1, Z2, …, Zk) de k nombres réels et en
sortie, un vecteur v(z) de k nombres réels strictement positifs et de somme égale à 1.

ⅇ𝒛 𝒋
𝝈(𝒛)𝒋 =
∑𝒌=𝟏 ⅇ𝒛𝒌

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 18


Elle est très pratique pour la classification d’images. En effet, la fonction softmax est utilisée
pour transformer les logits dans un vecteur de probabilités, indiquant la probabilité
que x appartienne à chacune des classes de sortie.

➢ Fonction d’activation relu


On la définit mathématiquement de la façon suivante :

𝒇(𝒙) = 𝒙+ = 𝒎𝒂𝒙(𝒙, 𝟎)
Où x représente la sortie d’un neurone. Cette fonction est appelée le redresseur. Les unités
linéaires rectifiées, par rapport à la fonction sigmoïde ou à des fonctions d'activation similaires,
permettent un apprentissage plus rapide et efficace des architectures neuronales profondes sur
des ensembles de données volumineux et complexes.

Figure 8: fonction_relu

6. Réseaux de neurones convolutifs


a. Définition

Un réseau de neurones convolutifs est un réseau de neurones comprenant des couches de


convolutions. Ces couches convolutives lui apporte la particularité de prendre en compte les
corrélations spatiales présentes sur une image. Ce qui lui permet de repérer la présence d’un motif
dans une image.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 19


b. La couche de convolution

La construction d’un réseau de neurones convolutifs requiert obligatoirement la formation d’une


couche convolutive. A cette couche le réseau opère des opérations de convolution sur l’image.
C’est une opération mathématique permettant l’extraction de caractéristiques sur une image via des
opérations de filtrages.

On multiplie les pixels


de l’image par ceux du
Filtre filtre à position égale.
On somme tous
les chiffres de la
matrice obtenue
40 précédemment.

Figure 9: exemple_de_convolution

c. Quelques paramètres de l’opération de convolution


i. Padding

Padding est une opération qui consiste à ajouter des bordures à une image. Dans la plupart des cas,
on ajoute des zéros pour constituer la bordure. Cela permet après plusieurs opérations de
convolutions, de conserver sinon limiter la réduction de dimensions de l’image. Ci-dessous un
exemple d’une image de dimension 4x4 avant et après le Padding.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 20


Figure 10: exemple_de_padding

ii. Strides

Le paramètre stride se comporte comme le pas de convolution. Nous donnons l’exemple ci-dessous
pour illustration.

Stride = 1

Figure 11: exemple_de_strides_1

Stride = 2

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 21


Figure 12: exemple_de_strides_2

iii. Kernel ou noyau

Le noyau de la convolution est une petite image permettant de réaliser l’opération de convolution.
Elle peut être de n’importe quelle taille selon les cas de figure.

Exemple :

• 3x3
• 21 x 21
d. Transfer Learning

Le Transfer Learning est la réutilisation d’architectures de réseaux de neurones entrainées sur un


autre jeu de données pour la même tâche.

II. PRESENTATION DES DONNEES


1. Augmentation de données

Au cours de notre étude nous procédons à l’augmentation des images. Pour cela de chaque image,
on en tire plusieurs via des opérations de transformation telles que la rotation dans plusieurs angles,
un floutage, un zoom, un filtrage, etc… Cette opération a pour but de fournir un peu plus d’images
à nos modèles pour améliorer leur apprentissage.
2. Pour la construction du modèle permettant d’indiquer ou non la présence d’u
document d’identité (Modèle 1)

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 22


a. Description des données
i. Structuration de la base d’images

Pour cette première partie nous décrivons la structuration des données pour la mise en place du
modèle indiquant la présence d’une pièce d’identité sur une image. Pour cela, nous organisons nos
différentes images dans des dossiers selon la structure suivante :

Data

ot

id

Figure 13: organisation_data_modele1

*ot : contient les images de tout types ne contenant pas de pièces d’identité.

*id : contient les images contenant une pièce d’identité.

Cette structuration a pour but de faciliter la labellisation de nos différentes images et donc de
construire les modèles plus aisément.

ii. Statistiques de la base d’images

Les images sont de types couleur et blanc noir dont la taille minimale des images est de 149×96×3
et une taille maximale de 1700×2337×3.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 23


Tableau 1 : statistique_base1

Type d’images Nombre Nombre après


augmentation

ot 284 6532
id 224 5152
Total 508 11684

iii. Aperçu de quelques images de la base

Figure 14: ot_doc1 Figure 15: ot_doc2

3. Pour la construction du modèle permettant d’indiquer le type du


document d’identité (Modèle 2)
a. Description des données
i. Structuration de la base

Dans cette partie, notre corpus de documents est composé essentiellement d’images de documents
administratifs en l’occurrence d’images de Carte nationale d’Identité CNI, de carte grise, de permis

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 24


de conduire et aussi d’images de tout autre type. Nous organisons nos différentes images dans des
dossiers selon l’arborescence suivante :

Data

Carte Nationale d’Identité (CNI)

Carte grise recto (cg_recto)

Carte grise verso (cg_verso)

Permis de conduire (pc)

Autres documents (ot)


Figure 16 : organisation_data2

*Chaque sous dossier contient les images du type indiqué par le nom de celui-ci.

ii. Statistiques de la base

Les images de notre base sont de types couleur ou blanc et noir et ont une taille minimale de 86×
146×3 et une taille maximale de 2339×1702×3.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 25


Tableau 2: statistique_base2

Type d’images Nombre Nombre après


augmentation

CNI 60 1380
Carte grise recto 20 460
Carte grise verso 19 437
Permis de conduire 14 322
Autres documents 273 6279
Total 386 8878

iii. Aperçu de quelques images de la base

CNI Carte grise recto Carte grise verso

Figure 17: cni_img Figure 18: cg_recto Figure 19 : cg_verso

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 26


Permis de conduire Autres Autres

Figure 20: pc Figure 21 : ot_ill1 Figure 22: ot_ill2

III. PREPROCESSING
1. Construction des ensembles : d’apprentissage et de test

Pour faciliter l’utilisation des images dans nos différents algorithmes nous mettons en place un
certain nombre de traitements. Dans un premier temps nous chargeons l’ensemble de nos images
dans notre environnement de développement (dans python) nous redimensionnons les images sous
un format unique pour les remettre sous un format uniforme. Dans un second temps, nous
transformons ces images en des tableaux. Ceci fait, la concaténation des tableaux de toutes les
images constitue l’entrée de nos algorithmes. Il est aussi important de souligner que les images
sont concaténées par catégorie. Ainsi, l’ensemble constitué est par la suite subdivisé pour
l’apprentissage et pour le test.

2. Construction des labels

La structuration de la base telle que définie ci-dessus, permet de labelliser de façon très aisée notre
base de données. Nous codons par « 0 » une carte grise verso, par « 1 » une carte grise recto, par
« 2 » un permis de conduire, par « 3 » une CNI et « 4 » pour les documents de tout autre type. Par
suite, on crée un vecteur pour chaque classe d’images, de longueur le nombre d’images contenues
dans cette classe. Ainsi, notre variable Y est construite en additionnant ces vecteurs.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 27


IV. IMPLEMENTATION ET RESULTATS
1. Implémentation

Dans cette première partie de notre travail dédiée à la reconnaissance d’images de documents
d’identité dans un PDF, nous avons implémenté un script sous forme d’API qui comprend deux
modèles de CNN (modèle 1 et modèle 2) et un algorithme de détection de contours pour l’extraction
des images de pièces présentes sur une image.

Tout d’abord, en entrée du script nous prenons un document PDF de plusieurs pages. Ensuite nous
convertissons chacune des pages en des images qui passeront dans le modèle 1 en vue de vérifier
si elles contiennent ou non un document d’identité. Si non, l’image est abandonnée. Dans le cas
contraire, l’image passe dans un script de détection de contours qui repère les pièces en présence
sur l’image. Enfin via le modèle 2, on identifie et enregistre les pièces telles que la carte grise face
recto, la carte grise face verso et la CIN.

Le schéma illustratif de l’algorithme de reconnaissance est fourni à la figure 23.

P0.jpg

P1.jpg

P2.jpg

Figure 23: reconnaissance_pipeline

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 28


a. Illustration de l’algorithme

i. Etape de conversion du PDF en image (Exemple d’une page du


PDF)

A cette étape de l’algorithme, chaque page du document PDF est transformée en image. Les figures
24 et 25 donnent l’illustration avec une page du PDF. Elle est réalisée à l’aide d’un script python.

Figure 24: Page1.jgp


Figure 25: Page1.PDF

ii. Modèle1

Comme l’illustre la figure 23, le modèle 1 intervient dans l’algorithme pour classer les images
contenant au moins une des pièces d’identité (CNI, Carte grise, Permis de conduire) et celles qui

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 29


n’en contiennent pas. En effet, cela permet d’accélérer le processus en évitant aux scripts de
détection de contours et au modèle 2 de s’exécuter sur les pages du PDF ne contenant pas les
informations recherchées.

iii. Detection de contours

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 30


Cette étape nous permet de détecter les différents contours présents sur le document. Cela nous
donne à partir des coordonnées des contours détectés de séparer les pièces présentes sur le
document en sous-images.

Figure 28: Page1_0.jpg

Figure 26:Page1.jpg Figure 27: Page1_1.jpg

iv. Modèle 2
Le modèle 2 est un modèle de classification dont le but est de donner la classe de l’image en
entrée. Les différentes classes sont : CNI, carte grise recto, carte grise verso, permis de conduire
et nous mettons dans une classe « autres » les images dont la catégorie n’est pas dans celles citées
précédemment.
v. Enregistrement des pièces
A cette étape d’enregistrement des pièces, l’algorithme sélectionne comme CNI l’image respectant
ces deux conditions suivantes : celle ayant une probabilité supérieure à 95% d’être une CNI et

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 31


ayant la plus grosse probabilité parmi toutes celles présentant une probabilité de plus de 95% d’être
une CNI (pourcentage relatif au score de la prédiction). Ce principe est appliqué de façon analogue
dans le cas du recto comme du verso de la carte grise.

Figure 29: carte_grise_verso.jpg

Figure 30: images_issues_de_lextraction

2. Résultats des performances des modèles

Au regard du fait que le volume d’images mis à notre disposition est très petit, nous avons planché
sur l’utilisation du Transfer Learning. Ces architectures nous permettent bien que disposant de peu
d’images, d’arriver à en extraire les caractéristiques de celles-ci. Cela est possible à cause du
nombre élevé de couches cachées et de paramètres.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 32


Tableau 3: Architectures_utilisées

Modèles Nombres couches cachées Nombre de paramètres

InceptionV3 159 23.851.784


InceptionResNetV2 572 55.873.736
DenseNet 121 8.062.504
AlexNet 9 60.000.000

Pour lutter contre le surapprentissage, après avoir récupérer les modèles par Transfer Learning nous
ajoutons des couches de dropout supplémentaires et des couches denses. Dans le cas de
l’InceptionResnet (le modèle présentant le meilleur score), on a apporté la modification suivante
au modèle récupérer :

a. Modèle 1

Tableau 4: resultat_modele1

Modèles Ensemble Train Validation Test

InceptionV3 0,8956 0,7685 0,7597

DenseNet 0,9960 0,7778 0,7208

InceptionResNetV2 0.9935 0.9857 0.9877

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 33


Au vu de ces résultats, nous avons retenu InceptionResNetV2 pour le modèle 1. Ce modèle nous
permettra de savoir si une image contient un document d’identité ou pas car ayant la meilleure
performance.

b. Modèle 2

Tableau 5: resultat_modele2

Modèles Ensemble Train Validation Test

AlexNet 0,9582 0,9305 0,9279

InceptionV3 0,8854 0,8216 0,7507

InceptionResNetV2 0.9808 0.9731 0.9740

Au vu de ces résultats, nous avons retenu aussi InceptionResNetV2 pour le modèle 2 pour la nature
des pièces présentes sur une image.

c. Temps d’exécution de l’algorithme de reconnaissance

L’algorithme met environ 3 minutes à s’exécuter. Ce temps est relativement long mais s’explique
par les deux modèles qui sont appliqués. Ces modèles sont des architectures très lourdes, ce qui
met du temps pour les charger dans l’environnement logiciel de notre ordinateur portable. Malgré
cet inconvénient d’être chronophage, nous avons été obligés de recourir à ces architectures du fait
de la petite taille de notre corpus d’images.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 34


3. Performance de l’algorithme de détection de contours

Le tableau 6 présente les résultats de la détection de contours qui permet d’extraire les pièces d’identité.
Tableau 6 : resultat_detction_contours

Pièces d’identités Pièces d’identités Pièces d’identités Total


bien extraites partiellement non extraites
extraites

Nombre 60 2 0 62
Pourcentage 96,67% 3.33% 0% 100%

Conclusion
Au terme de cette première partie, nous proposons un livrable sous forme d’API résumant le
process de reconnaissance d’images. Toutefois, si un corpus d’images plus important est mis à
notre disposition, nous pourrons construire aisément une architecture moins lourde en termes de
nombres de paramètres. Ce qui aura le bénéfice de réduire considérablement le temps d’exécution
de l’algorithme.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 35


Partie 3 : OCR

Figure 31: ocr_img

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 36


Introduction

Cette deuxième partie de notre étude est dédiée à l’extraction d’informations textuelles sur une
image. Pour cela, nous mettons en œuvre, après avoir chargée l’image sur laquelle nous voulons
extraire les informations textuelles un ensemble de traitements de l’image facilitant la lisibilité des
caractères présents sur l’image. Par suite, nous passons à l’extraction des caractères proprement
dite via l’outil d’OCR open source de python « Pytesseract ». Cette étude est très importante en ce
sens qu’elle permettra de préremplir des champs d’un formulaire à partir d’informations extraites
sur une image d’un document d’identité téléchargé ou enregistré.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 37


I. DEFINITIONS
1. OCR

L’OCR renferme tous les procédés informatiques utilisés pour la reconnaissance de texte sur une
image et sa traduction en texte.

2. Seuillage

Le seuillage est une opération de binarisation de l’image. Elle vise à fixer un seuil, et à faire passer
tous les pixels de l’image au-dessus du seuil à 1 et à 0 les pixels en dessous du seuil. Cela permet
d’avoir une image en blanc et noir permettant ainsi la mise en évidence des lettres sur l’image.

II. PRESENTATION DES DONNEES


Pour cette phase d’étude, nous ne travaillons qu’avec les images verso de la carte pour en extraire
prioritairement le numéro de châssis, la marque du véhicule et le type de carburant. Nous
présentons ci-dessous un exemple de verso de carte grise.

Figure 32: cg_ocr

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 38


III. PREPROCESSING
Dans cette phase, nous redressons dans un premier temps l’image si elle est inclinée et éliminons
les contours inutiles à côté de l’image. Dans un second temps nous transformons l’image en
niveaux de gris et procédons à un seuillage de l’image. Enfin, nous procédons à la lecture des
informations à l’aide de Pytesseract, une bibliothèque python, spécialisée dans l’extraction de
caractères sur une image.

IV. IMPLEMENTATION ET RESULTATS


1. Implémentation

Nous avons écrit une API prenant en paramètre le chemin de notre image et le champ que l’on veut
extraire, puis nous ramène la valeur du champ. Les grandes étapes du script sont résumées par le
schéma ci-dessous dans le cas de l’extraction du champ numéro de châssis :

Figure 33: ocr_pipeline

a. Illustration
1. Redressement + elimination de contours

Cette étape permet de placer la pièce de façon totalement horizontale pour faciliter au maximum la
lecture des caractères.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 39


Figure 34: redressement_image

2. Prétraitement
Les prétraitements sont essentiellement les opérations de transformations en nuances de gris, de
seuillage et d’élimination de bruits.

3. Lecture des caractères + Identification du VIN


▪ Cas du numero de châssis

Pytesseract extrait toutes les informations textuelles sur tout le verso de la carte grise. Pour
identifier la valeur du champ numéro de châssis, nous recherchons parmi tous les caractères
extraits, la chaine la plus proche de « Numéro du châssis » via un calcul de similitude à l’aide de
la bibliothèque fuzzymatch de python. Dès qu’une telle chaine est trouvée, la suivante dans la liste
des caractères extraits est le numéro recherché. Si cette chaine n’est pas trouvée on recherche juste
la chaine de caractère de longueur 17. En effet le numéro de châssis est de longueur 17 et est
probablement le seul numéro d’une telle longueur.

▪ Type de carburant
Pour l’extraction de ce champ, on détermine la chaine la plus similaire à « diesel » et on enregistre
le score de similitudes. On fait le même travail avec « essence ». Des deux résultats obtenus on
retient le meilleur score. Ainsi le type de carburant retourné est celui d’entre essence ou carburant
qui a matché avec le plus gros score une chaine de caractère de la liste retournée par Pytesseract.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 40


▪ Marque
Pour extraire la marque du véhicule, la première approche est de considérer les trois premières
lettres du numéro de châssis. Lorsqu’elles sont bien extraites elle donne via la bibliothèque
« Vininfo » de python la marque du véhicule. Lorsque les trois premiers caractères sont mal
extraits, on procède par recherche textuelle c’est-à-dire qu’on recherche « Marque » sur l’image
puis on pointe sur la chaine suivante pour récupérer la valeur du champ.

3. Résultats

Les résultats suivants ont été obtenus après les différentes démarches pour les différents champs
explicitées ci-dessus..

a. Cas du numéro du châssis

Tableau 7 : resultat_extract_chassis_num

Carte grise Numéro de châssis Nombre de lettres


(Verso) bien extraits bien prédites
Nombre 29 24 382 / 388
Pourcentage 100% 82.75% 98.96%

*NB :

• 388 = 22 x 17 + 2 x7.
• « 22 » représente le nombre de cartes grises dont la longueur du numéro de châssis est de
17.
• « 2 » représente le nombre de cartes grises dont la longueur de numéro de châssis est de
longueur 7.

b. Type de carburant

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 41


Tableau 8 : resultat_extract_carburant_field

Carte grise Valeur de Champ


(Verso) « Type de carburant »
bien extraite
Nombre 29 24
Pourcentage 100% 82.75%

c. Marque

Tableau 9 : resultat_extract_brand_field

Carte grise Valeur de Champ


(Verso) « Marque » bien
extraite
Nombre 29 24
Pourcentage 100% 82.75%

d. Performance de l’algorithme de redressement + élimination des


contours inutiles des images de carte grise (verso)

Tableau 10 : performance_algo_redressement

Carte grise Image bien redressée


(Verso)
Nombre 29 27
Pourcentage 100% 93.10%

Conclusion
En conclusion de cette partie, nous avons proposé une solution d’OCR qui gère l’extraction des
champs que l’on souhaite sur le verso de la carte grise. Cette extraction est gérée au cas par cas. Il
est bon de noter que l’extraction des caractères se fait presque tout le temps avec des erreurs, mais
nous réduisons ces erreurs avec l’ensemble des traitements évoqués plus haut.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 42


CONCLUSION GENERALE

Au terme de cette étude, nous retenons que notre thématique « Reconnaissance d’images suivie
d’OCR » a été traitée dans son entièreté.

D’une part, nous avons travaillé à la mise en place d’un algorithme capable de prendre en entrée
un document PDF et de faire ressortir exactement les pièces d’identités qui y sont contenues. Cela
s’est fait par la mise en place de deux modèles de reconnaissance d’images de très bonnes
performances, d’un algorithme de détection de contours efficace sur toutes les qualités de
documents, et d’un algorithme qui détecte l’inclinaison des documents d’identités contenus dans
le PDF, les redresse et les enregistre dans un dossier. Notons que dans le cas de l’algorithme de
reconnaissance de documents, l’axe d’amélioration reste le temps d’exécution qui peut être résolu
par l’utilisation de machines disposant de GPU mieux adapté pour le traitement d’images.

D’autre part, nous avons travaillé à la mise en place d’une solution permettant de faire l’OCR sur
le verso d’une carte grise. Pour ce faire, nous mettons en œuvre plusieurs méthodes de traitements
d’images telles que la conversion de l’image en niveaux de gris, le seuillage et l’élimination de
bruits. De plus, selon le champ à extraire, certaines parties de l’image sont abandonnées pour
focaliser les efforts de notre outil d’OCR sur la zone d’intérêt. Cela améliore considérablement les
performances de notre système. Après avoir effectué les traitements et réalisé l’extraction des
informations textuelles, nous mettons en œuvre le processus de recherche de l’information
pertinente en identifiant la chaine de caractères la plus probable. Cela est possible par un calcul de
similitude entre le nom du champ et les caractères retournés par notre outil d’OCR. Puis, les erreurs
au niveau de certaines lettres mal prédites sont corrigées pour optimiser les résultats. L’axe
d’amélioration de cette solution serait d’accroitre la robustesse en augmentant le nombre des
images pour permettre d’effectuer davantage de tests.

Les deux solutions proposées ont été transformées en API pour la portabilité du code.

Au cours de ce stage, les difficultés majeures ont été l’accès aux données, à cause de leur caractère
confidentiel et de leur faible quantité. Néanmoins, nous avons rempli les exigences du cahier de
charges. Par ailleurs, ce projet a été en tous points très enrichissant pour nous. En effet, il nous a
permis d’élargir nos connaissances en Deep Learning, en traitement d’images et d’apprendre sur
l’OCR et la mise en place d’API.

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 43


WEBOGRAPHIE
https://mc.ai/scanned-document-classification-using-computer-vision/
https://towardsdatascience.com/deep-learning-3-more-on-cnns-handling-overfitting-
2bd5d99abe5d
https://www.developpez.net/forums/d550314/autres-langages/python/general-python/lecture-
noms-d-images-dossier/
https://www.geeksforgeeks.org/activation-functions-neural-networks/
https://pypi.org/project/pdf2image/
https://machinelearningmastery.com/grid-search-hyperparameters-deep-learning-models-python-
keras/
https://towardsdatascience.com/data-augmentation-for-deep-learning-4fe21d1a4eb9
https://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-
classification/
https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-
explanation-a3ac6025181a :
https://www.lebigdata.fr/reseau-de-neurones-artificiels-definition
https://towardsdatascience.com/optical-character-recognition-ocr-with-less-than-12-lines-of-
code-using-python-48404218cccb
https://deepomatic.com/fr/difference-entre-la-computer-vision-la-reconnaissance-dimages/
https://dida.do/blog/how-to-choose-the-best-ocr-tool-for-your-project
https://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-
classification/:

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 44


TABLES DES MATIERES
DEDICACE....................................................................................................................................II

REMERCIEMENTS ................................................................................................................... III

AVANT-PROPOS ....................................................................................................................... IV

SIGLES ET ABREVIATIONS .................................................................................................... V

LISTE DES TABLEAUX ........................................................................................................... VI

LISTE DES FIGURES................................................................................................................ VI

RESUME ..................................................................................................................................... VII

INTRODUCTION GENERALE .................................................................................................. 1

Partie 1 : STRUCTURE D’ACCUEIL ET PRESENTATION DU STAGE ........................ 2

PRESENTATION DE L’ENTREPRISE .............................................................................................. 3


LA DIGITAL FACTORY ......................................................................................................................... 5
1. Aperçu du schéma organisationnel .............................................................................................. 5
2. Missions des Squads ..................................................................................................................... 6
3. Méthode Scrum ............................................................................................................................ 7
PRESENTATION DU STAGE............................................................................................................... 10
1. Environnement de travail ......................................................................................................... 10
2. Etat de l’existant ........................................................................................................................ 10
3. Objectifs du projet..................................................................................................................... 10
Partie 2 : RECONNAISSANCE D’IMAGES DE DOCUMENTS.......................................... 12

I. DEFINITIONS............................................................................................................................... 14
1. Machine Learning ....................................................................................................................... 14
2. Deep Learning ............................................................................................................................. 15
3. Computer vision ........................................................................................................................ 15
4. Reconnaissance d’images ........................................................................................................... 15
5. Réseaux de Neurones ................................................................................................................. 16
6. Réseaux de neurones convolutifs .............................................................................................. 19
II. PRESENTATION DES DONNEES ............................................................................................ 22
1. Augmentation de données ......................................................................................................... 22

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 45


2. Pour la construction du modèle permettant d’indiquer ou non la présence d’u document
d’identité (Modèle 1) ......................................................................................................................... 22
3. Pour la construction du modèle permettant d’indiquer le type du document d’identité
(Modèle 2)........................................................................................................................................... 24
III. PREPROCESSING ....................................................................................................................... 27
1. Construction des ensembles : d’apprentissage et de test ....................................................... 27
2. Construction des labels ............................................................................................................. 27
IV. IMPLEMENTATION ET RESULTATS .................................................................................... 28
1. Implémentation .......................................................................................................................... 28
2. Résultats des performances des modèles ................................................................................. 32
3. Performance de l’algorithme de détection de contours.......................................................... 35
Partie 3 : OCR ............................................................................................................................. 36

I. DEFINITIONS............................................................................................................................... 38
1. OCR ............................................................................................................................................ 38
2. Seuillage...................................................................................................................................... 38
II. PRESENTATION DES DONNEES ............................................................................................ 38
III. PREPROCESSING ....................................................................................................................... 39
IV. IMPLEMENTATION ET RESULTATS .................................................................................... 39
1. Implémentation .......................................................................................................................... 39
2. Résultat ....................................................................................................................................... 41
CONCLUSION GENERALE ..................................................................................................... 43

WEBOGRAPHIE ......................................................................................................................... 44

KOUASSI Dhom Badou Hugues Paterne Mémoire de fin de formation 46

Vous aimerez peut-être aussi