République Tunisienne
Ministère de l’Enseignement
Supérieur Année Universitaire
et de la Recherche Scientifique 2019-2020
Université de Gabès
Faculté des Sciences de Gabès
Département Informatique
P ROJET DE F IN D ’É TUDES
Présenté à :
L A FACULTÉ DES S CIENCES DE G ABÈS
D ÉPARTEMENT I NFORMATIQUE
en vue de l’obtention du diplôme de
LICENCE FONDAMENTALE EN SCIENCES DE
L’INFORMATIQUE
Une application OCR pour scanner
des algorithmes Scratch
Réalisé par :
B RAHIM H AROUN H ASSAN
ET
C HOUEB M AHAMAT I SSA
Soutenu le 09 Juillet 2020
Devant le jury composé de :
M. Nasreddine Hajlaoui Président
Mme. Imen Tounsi Rapporteuse
M. Amine Lamine Encadrant
Remerciements
Nous devons satisfaire à un agréable devoir, celui de témoigner notre
gratitude à tous ceux qui de près ou de loin ont participé à l’élaboration de cette
œuvre. Nous voudrions témoigner notre gratitude, notamment : A Allah le tout
puissant qui nous a accordé la santé, nous a guidé et donné la force, la
patience et le courage pour accomplir ce travail. Sans sa volonté, tous ça
n’aurait pas lieu. Nous lui rendons grâce pour toutes ses bienfaisances.
Nos remerciements les plus sincères vont en grande partie à notre cher
encadreur M. Amine Lamine pour nous avoir proposé ce projet de fin d’étude. Il
a une personnalité distincte et nous a poussé à aller au-delà de nos limites sans
omettre son soutien indéfectible tout au long de ce projet, malgré ses multiples
responsabilités. Il est très difficile de rencontrer un encadrant souciant plus
que lui envers ces étudiants. Nous lui serons à jamais reconnaissants.
Nous tenons également à adresser nos vifs remerciements à notre chef de
département M. Ridha Ejbali qui était présent à nos différentes préoccupations
et s’est personnellement présenté pour nous assurer un stage à l’unité de
recherche RTIM (Research Team in Intelligent Machine) de l’ENIG.
Sans pour autant oublier le président du jury et la rapporteuse,
respectivement en la personne de M. Nasreddine Hajlaoui et Mme Imen
Tounsi qui ont accepté à bras ouvert d’examiner ce projet. Ce qui relève de
leurs compétences et de l’intérêt qu’ils portent à la réussite de leurs étudiants.
Une fois de plus merci.
Enfin, à nos compatriotes et à nos camarades de Licence promotion 2017-
2020, recevez nos sincères remerciements.
i
Dédicaces
Je dédie ce modeste travail :
A mon très cher père Haroun Hassan, homme de rigueur, de justesse et
de foi, dont la profonde tendresse et la patiente sollicitude ont été pour moi
une source inépuisable de réconfort et un soutien efficace tout au long de mes
études. Je ne cesserai jamais de le remercier de l’amour et de la protection dont
il a fait preuve à mon égard, son soutien, ses prières, ses encouragements et ses
conseils ne m’ont jamais fait défaut tout au long de ma formation. Qu’il reçoit ma
profonde gratitude et qu’Allah le tout puissant l’accorde la longévité et j’espère
être aujourd’hui comme dans ma vie future une fierté pour lui. Puisse ce travail
se trouver à la hauteur de ses espérances, pour avoir toujours cru à ses enfants
dont j’en fais partie.
A la mémoire de ma mère Mariam Mahamat Mahamoudi (paix à son âme).
Femme brave, d’une très grande générosité, digne qui nous a appris le respect
et l’amour du prochain, la droiture et l’honnêteté. Nous ne saurons oublier ses
longues nuits de prières en faveur de ses enfants que nous sommes. Elle nous
a quitté très tôt. Notre joie aurait été plus intense, si elle est parmi nous en
ce moment, mais Allah a décidé de la rappeler auprès de Lui. Qu’Allah veille à
jamais sur elle.
A tous mes aimables frères et soeurs notamment ma grande Fatimé Zara
Haroun, mon espoir de vie, qui depuis mon enfance continue à veiller sur moi.
Je me sentirais coupable de ne pas penser à son amour sans limite.
Brahim Haroun Hassan
ii
De ma part, je dédie ce fruit de labeur partagé à ma chère maman Aicha
Adam Barka qui n’a aucun qualificatif, son amour immesurable et son soutien
durant toute ma vie. Sa présence à mes côtés plus qu’une bénédiction a forgé la
personne dont je suis.
A mon cher papa Mahamat Issa Alhadj qui par son amour parental m’a
toujours guidé, soutenu et des fois sans me rendre compte. Une ombre dans ma
vie dont je n’oublierai jamais ses bienfaits.
A mon grand frère Abdelhadi Mahamat Issa qui m’a toujours compris et
soutenu et dont je suis fier de l’avoir à mes côtés. Mes soeurs et frères qui ont
cru en moi.
A mes oncles , tantes , cousins, cousines, neveux, nièces, amis
Choueb Mahamat Issa
iii
Table des matières
Remerciements i
Dédicaces ii
Introduction générale 1
1 Concepts de base 3
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 La Reconnaissance Optique de Caractères . . . . . . . . . . . . . . . 3
1.2.1 Fonctionnement de l’OCR . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Différentes applications OCR existantes . . . . . . . . . . . . 5
1.3 L’apprentissage approfondi . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Approche adoptée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Les différents outils de traitement . . . . . . . . . . . . . . . . . . . 10
1.5.1 Le langage Scratch . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.2 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5.3 Détection de texte : EAST . . . . . . . . . . . . . . . . . . . . 12
1.5.4 Extraction de texte : Tesseract-ocr . . . . . . . . . . . . . . . 13
iv
1.5.5 Le Mask R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.6 Google Colaboratory . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 OCR pour le Scratch 16
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Principe de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Première phase : la segmentation . . . . . . . . . . . . . . . . . . . . 17
2.3.1 La segmentation suivant les contours des blocs . . . . . . . . 19
2.3.2 La segmentation Via le Mask R-CNN . . . . . . . . . . . . . . 20
2.4 Deuxième phase : le traitement OCR . . . . . . . . . . . . . . . . . . 26
2.4.1 La détection de texte avec EAST . . . . . . . . . . . . . . . . . 27
2.4.2 L’extraction de texte par le moteur Tesseract-ocr . . . . . . . 28
2.5 Post-traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1 Génération du graphe . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.2 Génération de l’exécutable . . . . . . . . . . . . . . . . . . . . 34
2.6 Test et statistiques de comparaison . . . . . . . . . . . . . . . . . . . 35
2.6.1 Cas de la segmentation . . . . . . . . . . . . . . . . . . . . . . 35
2.6.2 Cas de la détection et d’extraction de texte . . . . . . . . . . . 37
2.7 Application de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.1 Domaine éducatif . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.2 Domaine d’automatisme . . . . . . . . . . . . . . . . . . . . . 39
2.7.3 Domaine d’entreprise . . . . . . . . . . . . . . . . . . . . . . . 40
v
2.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Conlusion générale 42
Références 44
vi
Table des figures
1.1 Fonctionnement superficiel d’un système OCR . . . . . . . . . . . . 5
1.2 Exemple d’algorithmes Scratch. . . . . . . . . . . . . . . . . . . . . . 11
1.3 Comparaison de détecteurs de texte de scène sur ICDAR 1 2015 . . 13
2.1 Les étapes (processus) d’exécution. . . . . . . . . . . . . . . . . . . . 17
2.2 Étapes de traitement d’images pour la détection des contours. . . . 21
2.3 Segmentation de blocs après détection des contours. . . . . . . . . 21
2.4 Le fichier de configuration. . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Le processus de l’apprentissage. . . . . . . . . . . . . . . . . . . . . . 24
2.6 L’historique des fonctions de pertes. . . . . . . . . . . . . . . . . . . 25
2.7 Exemple 1 : Résultat de la détection des blocs en mode inférence
avec génération des masques. . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Exemple 2 : Résultat de la détection des blocs en mode inférence
avec génération des masques. . . . . . . . . . . . . . . . . . . . . . . 26
2.9 Exemple 3 : Résultat de la détection des blocs en mode inférence
avec génération des masques. . . . . . . . . . . . . . . . . . . . . . . 26
2.10 Traitement d’image : binarization et binarization inverse. . . . . . . 31
2.11 Processus d’extraction par le Tesseract-ocr. . . . . . . . . . . . . . . 32
vii
2.12 Graphe résultant après extraction de texte . . . . . . . . . . . . . . . 34
2.13 Statistiques des résultats basés sur la segmentation des blocs. . . 37
viii
Acronymes
DFS Depth-First Search. 35
EAST An Efficient and Accurate Scene Text Detector. 8, 12
GPU Graphics Processing Unit. 15, 23
IA Intelligence Artificielle. 1, 4
ICDAR Inter-national Conference on Document Analysis and Recognition. 4
LSTM Long Short-Term Memory. 13, 31
OCR Optical Character Recognition. 3, 4
OpenCV Open Computer Vision. 11
R-CNN Region-based Convolutional Neural Networks. 14
ROC Reconnaissance Optique de Caractères. 3
ix
Juillet 2020
Introduction générale
progrès en matière de technologies ne cessent d’impressionner
L
ES
le monde depuis des années. Résultant des travaux scientifiques du
domaine informatique en particulier, parfois titanesque faisant preuve de
l’invention suscitant un formidable potentiel de croissance en terme
d’innovation. Un véritable domaine en plein essor, l’informatique constitue un
centre phare d’attraction et d’enjeux éducatif, scientifique, économique voire
futuriste. Couvrant ainsi diverses branches dont notamment : l’Intelligence
Artificielle (IA), qui est une branche de l’informatique dont le but est de créer
des systèmes intelligents qui opèrent par le raisonnement humaine. Celle-ci est
de nos jours en plein apogée et le regard du monde moderne est rivé sur son
apport pléthorique intégrant la révolution numérique. Un domaine inévitable
impactant aujourd’hui tous les secteurs ou du moins dans un futur proche,
l’Intelligence Artificielle englobe en partie la science des données, et
principalement deux sous-disciplines dont l’apprentissage automatique
(Machine Learning) et l’apprentissage en profondeur (Deep Learning). Ainsi,
dans les larges domaines d’études de l’Intelligence Artificielle, il y a un axe clé
qu’est la vision par ordinateur ; une autre branche de l’IA dont l’objet est de
faire assimiler à une machine la capacité de percevoir, de comprendre afin
d’analyser et de traiter des images.
C’est dans cette perspective que naquit l’idée principale de notre projet, celle
de pouvoir développer un programme premier du genre, portant sur le scannage
des algorithmes Scratch. Celui-ci n’est tout autre qu’un langage de
programmation destiné aux débutants, en particulier des enfants pour leur
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 1 | 46
Juillet 2020
initiation à l’environnement informatique. Ce scannage sous forme d’analyse,
faisant partie intégrante d’une manière ou d’une autre, du domaine de la vision
par ordinateur, sert par le biais d’un ensemble des techniques mises en œuvre
à produire un script de type Python à partir d’une image fournie contenant un
code Scratch bien défini.
Comment mettre en œuvre des mécanismes de base d’analyse d’image en
général et sur le Scratch en particulier ?
Quelle stratégie à adopter ainsi que les scénarios possibles pour la
Reconnaissance Optique des Caractères basée sur le Scratch ?
Quelles sont les meilleures approches servant à la réalisation de ce projet ?
A la lumière de cette œuvre et dans le besoin de répondre à ces
questionnaires, deux chapitres seront soigneusement abordés de fond en
comble, rendant compte de l’élaboration de ce fruit de labeur. Ainsi, dans le
tout premier chapitre « Concepts de base » nous allons nous attarder à
recueillir les prérequis nécessaires en s’inspirant des définitions de concepts en
rapports avec les techniques existantes et les connaissances accessibles autour
desquelles notre cadre d’étude se fonde. Sera aussi définie dans cette même
partie l’approche à suivre.
Nous allons nous servir aisément des préalables acquis dans le premier
chapitre pour franchir le second chapitre intitulé « OCR pour le Scratch ». Il est
ici question d’aborder le fonctionnement de l’algorithme proprement dit tout en
énonçant notre approche principale, en spécifiant les démarches et techniques
adoptées, le rendu final du code, son test et les résultats obtenus.
Enfin nous allons présenter les différents champs et domaines d’application sur
lesquels ce projet s’étend.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 2 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
Chapitre 1
Concepts de base
1.1 Introduction
Pour donner un aperçu rationnel vis à vis du domaine d’étude établi, il est
d’une nécessité absolue de faire valoir les fondements qui déboucheront sur un
savoir-faire serviable. Ainsi, nous allons dans cette partie mettre en question
les concepts de base qui nous serviront à dégager une vision plus clarifiée du
sujet. Aussi, nous allons mentionner les outils et technologies dont nous serons
amenés à se munir pour réaliser le travail, tout en énonçant leurs spécificités les
liant à notre projet.
1.2 La Reconnaissance Optique de Caractères
La Reconnaissance Optique de Caractères (ROC) ou OCR de l’abréviation
anglaise du terme Optical Character Recognition, désigne le processus
permettant de convertir d’images de texte numériques, dactylographiés ou
manuscrites en texte lisible et modifiable par une machine. Partant de cette
qualification, un logiciel OCR ou un système de reconnaissance optique des
caractères permet par exemple d’analyser un document scanné ou une image
contenant de zone de texte. Cette analyse à pour but de détecter, de reconnaître
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 3 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
et d’extraire la partie textuelle de l’image, et en produire une version
informatique. De nos jours, l’OCR constitue un domaine clé de l’Intelligence
Artificielle (IA) et de vision par ordinateur.
Comme beaucoup d’autres projets concourants à des travaux de recherche
ou des compétions telles que celles dont organise la Conférence internationale
sur l’analyse et la reconnaissance des documents (ICDAR de l’anglais
Inter-national Conference on Document Analysis and Recognition), une
compétition de lecture robuste une fois tous les deux ans. Nonobstant, notre
projet se rapproche des principes de ces derniers basés sur l’OCR de « texte de
scène ». Le texte de scène est toute présence de caractère alphanumérique dans
un environnement autre qu’un document. La détection et la reconnaissance du
texte de scène à partir d’images capturées sont de tâches complexes de vision
par ordinateur. Car compliquée par un éclairage et une mise au point non
uniforme ainsi que par de variation en forme, police, couleur et position.
Sur cette optique d’idéologie, nous allons nous intéresser sur l’OCR de texte
de scène, sa différence et sa complexité par rapport à celle générique au texte
des documents dont elle est consacrée à l’origine.
Par conséquent, nous allons entrer en jeu pour trouver les moyens techniques
conduisant à lire sans défaut ou du moins avec une perte acceptable, tout le texte
d’un algorithme Scratch donné. D’où l’objectif de ce travail.
Pour mieux débuter avec le concept de l’OCR, nous allons avant tout
chercher à savoir son principe de fonctionnement avant d’établir un plan
concret définissant notre domaine à l’égard de ceux existants.
1.2.1 Fonctionnement de l’OCR
Bien que l’OCR soit une idée simple à comprendre, c’est à dire donner une
image au système et récupérer en sortie un texte lisible (Figure 1.1), il s’agit en
fait d’un problème extrêmement difficile qui est loin d’être résolu. Le
fonctionnement des systèmes d’OCR les plus performants est peu connu, car il
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 4 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
est fortement protégé par les entreprises dont ils sont propriétaires.
Hormis les techniques qui peuvent varier, normalement, tout processus des
outils OCR enchaîne cinq (5) étapes [1] importantes avant de pouvoir afficher la
version numérique du texte :
1. Pré-analyse de l’image : le but est d’améliorer la qualité de l’image ;
redressement d’images inclinées ou déformées, corrections de contraste,
passage en noir et blanc, détection de contours, etc ;
2. Ségmentation : dans cette étape, le processus d’identification du texte est
entrepris. Les limites de chaque image sont analysées afin de reconnaître
les zones de texte, les tableaux et les images ;
3. Reconnaissance : Cette étape consiste à reconnaître les caractères. Les
caractères sont comparés à une forme connue ou une forme qui s’approche
au plus possible des caractères selon une distance ou une vraisemblance.
Après la reconnaissance, le processus d’identification des mots est effectué
en comparant les chaînes de caractères à un dictionnaire de mots existant.
4. Post-traitement : utilisation de dictionnaires linguistiques, syntaxiques ou
contextuelles pour réduire le nombre d’erreurs de reconnaissance.
5. Génération du format de sortie : il s’agit enfin de générer le texte reconnu
dans un format approprié.
F IGURE 1.1 – Fonctionnement superficiel d’un système OCR
1.2.2 Différentes applications OCR existantes
L’OCR grâce à sa capacité à reconnaitre et extraire des textes a donné
naissance à plusieurs applications que nous en citons quelques unes.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 5 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
PDF Scanner : Document Scan+ OCR
Pdf Scanner est parmi les applications OCR les plus populaires qui reçoit de
plus en plus un bon retour de la part de ses utilisateurs pour sa simplicité à
scanner des pdfs (scannage des documents et OCR). L’application est disponible
pour la platforme android permettant l’importation de fichiers pdf comme des
images et offre la fonctionnalité d’ajouter des signatures personnalisées aux
différents documents.
Google Docs :
Google documents ou Google Docs communement appélé est le cheval de
bataille de Google centré sur l’OCR basé sur Google Drive. Google est parmi les
grandes entreprises investissant dans la reconnaissance optique des caractères.
Pour ceux qui sont familiers avec le service. Google Docs permet d’éditer de
documents en ligne. Pour un bon rendu, l’image à scanner doit avoir un
éclairage uniforme et un contraste clair entre les couleurs.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 6 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
ONLINE OCR (Desktop/Free) :
OCR en ligne (online OCR) est un service en ligne trés simple à utiliser et
supporte plus de 46 langues. Il suffit de télécharger un fichier ne dépassant
pas 15MB 1 vers le serveur. Le service le convertit à un fichier Microsoft Word,
Excel, ou bien fichier d’extension txt. Pour bénéficier de plus de service, il faut
s’enregistrer au service en remplissant un champ formulaire.
Office Lens (Mobile/ Free) :
Office Lens est basé aussi sur la technologie OCR. C’est un produit offert par
Microsoft. Il se focalise sur la numérisation des notes sur des tableaux
(noirs/blancs). Le service permet de faire une copie numérique des documents
imprimés, des cartes de visite, des affiches et être à mesure de les rogner. Il
peut aussi améliorer les images capturées en leur garantissant une bonne
échelle. Ce qui lui confère une popularité.
1. Mégabyte : unité de mesure de stockage en informatique.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 7 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
1.3 L’apprentissage approfondi
Le Deep Learning ou l’apprentissage profond est un type d’Intelligence
Artificielle dérivé du Machine Learning où la machine est capable d’apprendre
par elle-même. Tout comme le Machine Learning, il permet de traiter de
problèmes complexes qui ne sont pas abordables par les méthodes de
programmation classique.
Pour cela, il faudrait une approche intelligente, celle qui permet d’apprendre
à la machine en quoi consiste une image premièrement et pouvoir à son tour la
reconnaître si elle reçoit une entrée dont elle a apprise.
L’idéologie derrière l’apprentissage profond est de rendre un algorithme très
intelligent et performant dans le but d’exécuter une tâche bien précise. Cette
tâche est à notre part le traitement OCR.
Actuellement, l’apprentissage en profondeur a été largement utilisé dans
diverses techniques de détection générale d’objets et de segmentation
sémantique ou d’instance et a obtenu un grand succès. Basé sur les réseaux de
neurones artificiels, le Deep Learning est aussi employé dans tous les systèmes
d’OCR récents, dont ceux qu’on est censé employer dans notre algorithme,
respectivement, le EAST (An Efficient and Accurate Scene Text Detector) pour la
détection de texte et le Tesseract-ocr pour la reconnaissance et l’extraction de
texte. Les objets mentionnés ici, peuvent correspondre plus précisément à du
texte dans le cas de l’OCR ou des blocs du code Scratch.
Parlant de détection d’objets, nous allons faire référence à une bibliothèque
nommée Mask R-CNN qui est consacrée à cette tâche.
En outre, dire qu’on emploie l’apprentissage approfondi dans notre projet est
une notion vague, mais pour être précis nous allons utiliser des librairies open
source basées sur le Deep Learning, en vue de les adapter de façons à pouvoir
répondre à notre problème.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 8 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
1.4 Approche adoptée
Le problématique du sujet nécessite une analyse spécifique mettant en
question les plans et stratégies des résolutions possibles afin de mettre en place
des méthodes ou techniques adéquates pour réaliser notre objectif.
Celui-ci se rapporte à l’extraction de tout le contenu textuel d’un algorithme
Scratch, évidemment dans une image, afin de reproduire les instructions du
code en langage Python : c’est en quelque sorte le scannage.
Ceci étant d’aborder toutes les possibilités envisageables dans le but de
trouver une solution ou ne serait-ce que celle approchée conduisant au but du
travail.
Par ailleurs, la formulation de notre problème nous a conduit à concevoir une
démarche appropriée, organisée de la manière suivante :
• L’acquisition de l’image : qui consiste à lire une image Scratch, de bonne
qualité ;
• La segmentation de l’image : qui sert à découper l’image lue en des
fragments d’images permettant d’isoler du reste, la partie où se trouve le
texte.
• La détection et l’extraction du texte : c’est le processus de l’OCR
permettant d’extraire le contenu textuel des blocs ;
• La construction d’un graphe : c’est une façon de représenter les
informations extraites sous forme de diagrammes servant à la
visualisation et de la transition de Scratch vers Python ;
• La génération d’un fichier exécutable : c’est l’étape finale, qui dépend
du graphe généré et permettant de produire un fichier éventuellement
exécutable équivalent de l’algorithme Scratch de départ.
D’une manière explicite, pour arriver à la réalisation décrite par les étapes
précédentes, nous allons nous focaliser sur deux phases cohérentes afin d’arriver
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 9 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
à assouvir nos attentes. Il s’agit de la phase consacrée à la segmentation d’image
et celle responsable du traitement OCR.
Pour cela nous allons considérer un ensemble d’outils détenant chacun un
rôle spécifique et jouant ainsi un tournant décisif à l’abord de ladite approche.
1.5 Les différents outils de traitement
Pour bien mener le travail et en précisant ce que dont nous avons besoin
pour traiter les images, repérer le texte à l’intérieur de ces dernières et finir
par l’extraire, comme le projet en demande, nous avons ainsi collectionné un
ensemble d’outils. Il s’agit des modules, des bibliothèques, des frameworks et
des logiciels, tous de licence libre allant de ceux à usage standard à d’autres
destinés aux travaux avancés à l’exemple du Deep Learning. Nous allons d’abord
les énoncer en précisant leur spécificité et établir leur rapport d’une façon ou
d’une autre vis à vis de notre projet.
1.5.1 Le langage Scratch
D’abord nous allons utiliser Scratch qui est un langage de programmation
graphique conçu dans le cadre éducatif [2]. Il a pour objectif l’enseignement de
l’univers informatique aux enfants. Comme son nom l’indique, c’est un véritable
outil d’apprentissage à partir de zéro, un champ de créativité et de raisonnement,
permettant de développer la faculté cognitive, et perceptive des apprenants.
En effet, Scratch est le point de départ de notre projet. Pour ne pas entrer
en détail dans ses caractéristiques, nous avons intérêt à l’utiliser en se limitant
sur ses composantes de base, qui nous permettront de construire ou réaliser
un algorithme simplifié, sur lequel notre étude se reposera. En sachant qu’il est
constitué essentiellement d’un ensemble fini des blocs classés par catégories, qui
représentent des instructions précises, destinés à s’imbriquer et se superposer
facilement, permettant ainsi de construire un code fonctionnel et soigné.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 10 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
Dans le cadre de notre travail, nous allons nous servir de la dernière version
de Scratch, plus précisément en exploitant la plate-forme accessible en ligne,
afin de réaliser des algorithmes (codes) sur lesquels effectuer des traitements.
Sur plus de cinquante (50) langues supportées , nous avons opté pour la langue
anglaise. Ci-dessous un exemple d’algorithmes Scratch.
F IGURE 1.2 – Exemple d’algorithmes Scratch.
1.5.2 OpenCV
Open Computer Vision (OpenCV) est une bibliothèque de logiciels de vision
par ordinateur et d’apprentissage automatique open source, développée et
rendue officielle par Intel en 1999 [3].
Ayant besoin d’un outil pour manipuler les images à utiliser, faisant suite
aux étapes de notre algorithme, nous nous sommes vite rendus compte de
l’importance et de l’apport de la présente bibliothèque dans le domaine de
traitement d’images. Avec cette bibliothèque de licence open source, nous avons
la possibilité d’effectuer un certains nombre d’opérations possibles sur les
images selon notre préférence. Son utilité réside bien évidement sur ses
diverses méthodes toutes prêtes à l’usage que nous allons en tenir compte lors
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 11 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
de l’étape de prétraitement d’images.
Nous allons l’utiliser la plupart de temps pour lire des images à partir du
disque mais aussi pour les visualiser en guise de débogage.
1.5.3 Détection de texte : EAST
L’outil de détection de texte nommé An Efficient and Accurate Scene Text
Detector (EAST) représente une approche de détection de texte basée sur une
méthode d’apprentissage approfondi très robuste. il s’agit d’un pipeline de
détection de texte de scène rapide et précis [4]. Bien qu’il peut détecter du texte
à la fois dans les images et dans la vidéo, EAST peut être utilisé en combinaison
avec n’importe quelle méthode de reconnaissance de texte.
Visant cet intérêt de détection de texte, nous avons réalisé qu’il est approprié
pour ce genre de tâche et que nous ne pouvons pas s’en passer de son service.
Ainsi, ensemble avec les outils de reconnaissance que nous avons à faire et du
fait qu’ils sont orientés au traitement de texte de scène, nous allons les ajuster
pour assurer leur cohabitation et en tirer bénéfice.
Ce qui nous attire vers cette méthode c’est le fait qu’elle produit directement
des prédictions des cordonnées des caractères, des mots ou des lignes de texte,
servant à savoir exactement l’emplacement de texte. Bien qu’il y a d’autres outils
de détection ou de détection et reconnaissance en même temps, indiqués dans la
Figure 1.5.3, nous préférons celui-ci parce qu’il est libre et développé en langage
python.
2. ICDAR 2015 : Base de données pour la détection de texte en général.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 12 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
F IGURE 1.3 – Comparaison de détecteurs de texte de scène sur ICDAR 2 2015
1.5.4 Extraction de texte : Tesseract-ocr
Tesseract est un logiciel de reconnaissance optique de caractères sous licence
Apache [5].
Après OpenCV, l’évidence revient à l’usage de cet outil dédié uniquement au
traitement OCR. Nous y utiliserons la dernière version stable qu’est le Tesseract
4.1.1, qui par rapport aux anciennes, ajoute un nouveau moteur OCR basé sur
un réseau de neurones artificiels dit Long Short-Term Memory (LSTM).
Grâce à l’implémentation du réseau neuronal, le Tesseract se dote de la
capacité d’être personnalisé selon divers besoins des développeurs. C’est à dire,
disposant d’une importante base de données, nous avons la possibilité de
procéder à une phase dont le rôle est d’améliorer le processus de
reconnaissance de texte. Cette phase, liée à l’apprentissage approfondi consiste
à entraîner le moteur sur nos propres données textuelles afin de l’adapter pour
une meilleure performance en terme de reconnaissance du lexique du langage
Scratch.
Notons que Tesseract-ocr ne convient pas aux images ou documents en
niveaux de gris et en couleur et il n’est pas aussi précis que certains des
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 13 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
meilleurs services OCR commerciaux disponibles. Dans de nombreux cas, afin
d’obtenir de meilleurs résultats d’OCR, nous allons améliorer la qualité de
l’image. L’amélioration est le domaine d’OpenCV et sera détaillée dans une
phase consacrée au traitement d’images. Ainsi son usage intervient après avoir
traité et rendu l’image prête pour extraire son contenu.
1.5.5 Le Mask R-CNN
le Mask R-CNN est conçu et orienté vers toute tâche conduisant à un
processus de segmentation d’instance d’objet. Il est un outil de référence sous
licence libre utilisé dans des projets variés. Parmi lesquels on peut citer
Detectron2 [6] qui est le système logiciel de nouvelle génération de "Facebook AI
Research" mettant en œuvre des algorithmes de pointe pour la détection
d’objets, MMDetection [7] qui est aussi un outil open source de détection
d’objets et Medical Detection Toolkit [8] qui est un cadre complet pour la
détection d’objets contenant des implémentations 2D et 3D axé sur le
traitement des images médicales.
Techniquement, le Mask R-CNN est une extension du Region-based
Convolutional Neural Networks (R-CNN). C’est un modèle qui détecte
efficacement les objets d’une image tout en générant simultanément un masque
de segmentation de haute qualité pour chaque instance. Le Mask R-CNN est
essentiellement un R-CNN plus rapide avec 3 branches de sortie, la première
calcule les coordonnées de la boîte englobante, la seconde calcule les classes
associées et la troisième calcule le masque binaire pour segmenter l’objet.
Cependant, nous avons l’avantage en utilisant cette bibliothèque pour la
segmentation, de récupérer une fois pour toute les coordonnées des blocs ainsi
que leurs classes assimilables aux noms des blocs pour y procéder au
traitement de l’OCR.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 14 | 46
CHAPITRE 1. CONCEPTS DE BASE Juillet 2020
1.5.6 Google Colaboratory
L’environnement de Google Reasearch, Colaboratory ou "Colab" est un service
hébergé et un environnement particulièrement adapté au Machine Learning et
au Deep Learning, à l’analyse de données et à l’éducation [9].
Colab nous a permis d’effectuer la phase de notre travail réservée au Deep
Learning en nous offrant un espace de travail avec des ressources informatiques
gratuites, dont des GPU afin d’écrire et d’exécuter notre code par le biais du
navigateur.
1.6 Conclusion
Finalement, ce chapitre a été pour nous un point d’accès pour l’acquisition
des préalables. Il nous a donné la capacité de mieux situer et cerner notre
problème par rapport aux outils existants et leur liens directs avec notre projet.
Il nous a permis de tirer une leçon du contexte global de l’OCR et son
intégration d’une manière concrète dans notre algorithme. Nous avons d’ici une
vision objective pour mettre au point notre propre approche.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 15 | 46
Chapitre 2
OCR pour le Scratch
2.1 Introduction
L’accomplissement d’une tâche réside sur sa finalité et sa validité sur sa
satisfaction. Prouver et soutenir un travail en est l’un de nos objectifs, et nous
voilà dans la section décisive de ce projet. Il est temps de révéler l’architecture
logique mise en place, partant des outils énoncés dans le chapitre précédent,
décrire les différentes techniques utilisées. Ce qui suivra est un concept
parfaitement réalisable émanant de notre propre expérience dans la manière de
traiter le problème initial.
2.2 Principe de base
Rappelons que les logiciels de reconnaissance optique de caractères ont
initialement servi à la numérisation des documents. Au cours de la dernière
décennie l’utilité et l’intérêt des technologies OCR se sont vite explosés et ont
pris de l’ampleur en grande partie grâce à son application dans les domaines de
la vision par ordinateur, des applications intelligentes de reconnaissance de
texte et des systèmes de prise de décision basés sur le texte. Élargie et
diversifiée selon les besoins, l’OCR se présente le plus souvent en tant que
16
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
service en ligne appliqué à l’évaluation de formulaires dans les systèmes
d’archives ou pour la saisie de documents, le contrôle des cartes d’identité, des
permis de conduire, des factures, des captures d’écran, des captchas anti-bot 1 ,
la lecture des plaques d’immatriculation, des panneaux de signalisation, etc.
Cependant, bien que diversifiée, l’application de l’OCR s’étend de plus en plus
suivant les besoins personnels qu’universels. Faisant partie intégrale de notre
besoin, l’OCR se voit étendre un autre champs, celui de scanner les algorithmes
Scratch.
Toute fois, nous allons nous focaliser sur l’approche (Figure 2.1) dont les
étapes seront élucidées dans les sections suivantes dont les plus marquantes
sont la segmentation des blocs et la détection plus l’extraction de texte.
F IGURE 2.1 – Les étapes (processus) d’exécution.
2.3 Première phase : la segmentation
Dans notre cas précis, il ne s’agit pas d’extraire simplement du texte brut à
partir d’une image, il est clair que la tâche est plus que complexe. Sans avoir
1. Test de défi-réponse utilisé pour servir de barrière aux robots en ligne.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 17 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
à citer les problèmes qui en découlent de la qualité de l’image, nous pouvons
facilement affirmer que les critères pour une image contenant du code Scratch
ne sont pas convenables au processus d’extraction suivant le modèle le plus
basique (document acquis, contenu textuel retourné), car la différenciation sous
une forte variation en terme de couleur pour chaque type de bloc du langage
Scratch constitue un premier frein, de même pour la couleur du texte qui existe
sous deux états, blanc et noir. Ce qui conduit à la notion de traitement de texte
de scène (ou scene text detection) qui défini exactement le défi que nous serons
amenés à relever.
Pour une raison de clarté et de valorisation, nous avons jugé nécessaire
d’adopter une stratégie plus logique qui consiste à donner un sens
d’organisation paraissant augmenter la complexité de la tâche principale mais
bien au contraire permettant de raffiner le rendu.
Du point de vue technique, un code Scratch dispose d’un aperçu dont la
sémantique induit à une représentation graphique. Cette alternative se ramène
à une modélisation arborescente du code. Pour cela, chaque séquence de code
est assimilable à un arbre avec pour une racine quelconque et un ensemble des
nœuds. Ainsi, les premiers blocs se trouvant verticalement au premier niveau le
plus extérieur de la partie gauche, constituent les premiers nœuds qui peuvent
avoir des descendants directs, qui à leur tour auront aussi des nœuds fils, ainsi
de suite.
Notre perception du code Scratch sous forme de graphe nous permet de
dégager une représentation formelle du problème et nous induit ainsi à la
notion de la segmentation des blocs
Ainsi, cette segmentation est à notre guise une solution plus efficace pour
l’analyse OCR. Il s’agit dorénavant de découper l’image originelle en des
fragments d’images susceptibles d’être traités individuellement par le processus
de reconnaissance.
Nous avons deux méthodes de segmentation, l’une basée les contours des
blocs en utilisant le OpenCV et l’autre par le Mask-RCNN.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 18 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
2.3.1 La segmentation suivant les contours des blocs
La notion de la segmentation donne de la quintessence à notre travail. Car il
s’agit de respecter l’architecture de base que nous avons établie.
Notons que les composantes essentielles à l’intérieur de l’image sont les
blocs et le but de la segmentation est d’arriver à les scinder de l’image. Les
propriétés utilisées sont les composantes colorimétriques des pixels. Pour ce
faire l’OpenCV nous fournit des méthodes dédiées à ce processus. Il s’agit de
détecter les contours de chaque objet se trouvant dans l’image en se basant sur
celui externe, car il y a aussi le contour interne. Les objets peuvent être les
blocs mères qui se placent toujours verticalement, les sémi-blocs qui s’insère
horizontalement dans des blocs de leur nature mais aussi dans ceux dits mères
et enfin les caractères. Les objet cibles seront d’une taille un peu considérable
qui ne pourront être autres que les blocs mères, pour éviter de semer la
confusion avec le reste des objets.
Pour détecter les contours nous allons passer au traitement exclusive de
l’image suivant les étapes ci-dessous (Figure 2.2) :
• Recadrage de l’image : il s’agit de rogner l’image pour éliminer les marges
inutiles en ne prenant en considération que la région ou se trouve
l’ensemble des blocs constituants le code ;
• Changement de mode couleur : qui sert à convertir l’image qui est à
l’origine en couleur vers une image en niveau de gris. Il permet ainsi
d’obtenir différentes valeurs de gris, afin d’afficher des images nuancées ;
• Lissage de l’image : il consiste à appliquer un filtre pour atténuer le
contraste des détails les plus fins dans le but de garantir l’immunité au
bruit présent dans l’image. Nous allons appliquer un filtre passe-bas dont
le filtre de Gauss qui est le mieux adapté dans notre cas ;
• Seuillage de l’image : par la méthode de seuillage dite simple ou globale.
Celle-ci sert à appliquer une valeur de seuil à l’ensemble de l’image, c’est à
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 19 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
dire qu’une valeur de seuil est choisie, et tous les pixels dont la valeur est
supérieure à ce seuil sont classés comme blancs, et tous les autres pixels
comme noirs ;
• Transformation morphologique : qui consiste à appliquer des opérations
basées sur la forme de l’image. Choisir un élément structurant ou noyau
puis choisir la nature de l’opération, qui est ici l’opération d’ouverture ;
• Détection des contours : un filtre dérivateur est appliqué pour détecter
les bords des objets de l’image. Ainsi nous avons utilisé l’opérateur de
différentiation ou gradient de Sobel qui est précis et bien adapté par
rapport aux autres filtres ;
• Récupérer les contours : Il s’agit de chercher dans l’image et stocker les
coordonnées sur la limite de chaque contour trouvé ;
• Segmenter l’image : c’est l’étape finale qui permettant de ré-cadrer la zone
correspondante aux coordonnées des contours trouvés à partir de l’image
originale.
Ces blocs une fois extraits (Figure 2.3) nous permettront de reconnaître l’ordre et
le niveau d’imbrication des blocs et ces derniers nous serviront à la construction
du graphe.
2.3.2 La segmentation Via le Mask R-CNN
La méthode basée sur la détection des contours est la solution la plus
envisageable et qui est privilégiée comme une approche de base.
De surcroît, nous avons pensé à une autre technique faisant intervenir le Deep
Learning et qui peut nous mener à une amélioration en terme d’efficacité.
Ainsi, le concept établi prévoit la mise en place d’une architecture de base
fondée sur un réseau de neurones artificiels et qui requiert un ensemble de
données en entrée afin de fournir en sortie un modèle complet. Ceci est en fait
la tâche du Mask R-CNN.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 20 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
F IGURE 2.2 – Étapes de traitement d’images pour la détection des contours.
F IGURE 2.3 – Segmentation de blocs après détection des contours.
Contrairement à l’apprentissage automatique, l’apprentissage approfondi
nécessite une énorme quantité de données. Les données requises peuvent être
de divers types, mais pour notre part il s’agit des images capturées, contenant
chacune un algorithme Scratch donné.
Le Mask R-CNN a deux modes d’exécution à savoir le mode d’apprentissage
ou communément appelé "training" et le mode d’inférence. Il possède des
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 21 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
configurations paramétrables permettant de le personnaliser en tenant compte
des paramètres dits "hyperparamètres" dont les plus importants sont le nombre
« d’epochs » et le « batch size. Ils correspondent respectivement au nombre de
fois que l’ensemble des données passent à travers le réseau neuronal pendant
l’apprentissage et le nombre d’images utilisées pour entraîner le réseau. Il faut
plusieurs epochs pour l’apprentissage, pour une meilleure performance. Mais
plus ce nombre est grand plus on devrait obtenir une bonne précision et plus le
temps de l’apprentissage sera conséquent. Enfin, ces caractéristiques nous
serviront à lancer le processus d’apprentissage.
Avant d’en arriver au modèle final via le Mask R-CNN, nous avons suivi une
certaine démarche représentant les fondements de l’apprentissage [10] :
• La collecte et l’assemblage des données [11] qui correspondent à
l’acquisition d’un ensemble d’images capturées représentant différents
algorithmes Scratch, conçus sur la plate-forme en ligne du langage ;
• La classification ou labellisation [11] qui permet d’attribuer une
étiquette avec un nom unique pour chaque type de bloc. Nous avons
utilisé l’outil d’étiquetage VGG Image Annotator (VIA) [12] qui est un
logiciel d’annotation manuel simple et autonome pour l’image, l’audio et la
vidéo et qui fonctionne dans un navigateur web.
• Le fractionnement des images en deux ensemble, l’un contenant 80%
d’images pour l’apprentissage et l’autre composé de 20% d’images de base
pour le test (ou testing) permettant de mesurer le taux de succès des
prédictions ;
• L’augmentation des données qui consiste à appliquer aux images une
certaine transformations telles que la rotation, le décalage,
l’agrandissement et le rétrécissement ;
• La phase de l’apprentissage propre dit sera lancée après satisfaction des
étapes précédentes.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 22 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
Pour faire tourner le mécanisme d’apprentissage, une exigence se pose sur
les ressources à employer. De préférence une carte graphique de capacité
supérieure ou égale à 8 GB 2 est requise et une mémoire de stockage d’au moins
30 GB suffira pour sauvegarder les modèles générés après chaque "époch" qui
est d’environ 245 MB dans notre cas. Plus la carte graphique est grande plus il
y a la possibilité d’augmenter le nombre d’images par GPU (dont une image
pour 8 GB et deux images pour 12 GB de GPU) et moins le temps du training
sera raisonnable.
Privé d’une telle ressource, nous avons opté pour un training en ligne dans la
plate-forme Colaboratory [13] qui nous a donné accès à une interface d’exécution
en mettant à notre disposition 12 GB de GPU, 12 GB de mémoire RAM 3 et 108
GB de mémoire de stockage interne.
Enfin, nous avons lié un compte Google Drive 4 pour stocker les checkpoints
ou points de contrôle du premier au dernier épochs desquels résulte le modèle
final. En raison d’un manque suffisant de données (des milliers voire des millions
d’images) nous avant utilisé un modèle de référence préentraîné de Microsoft
COCO 5 [14] (Common Objects in Context) comme alternative Bref, les données
entrées en jeu dans la phase d’apprentissage sont entre autres :
• Nombre d’images : 140 ;
• Nombre de classes : 56 ;
• Nombre d’epochs : 100 ;
• Durée du training : environ 9h :45mn.
Les figures 2.4, 2.5, 2.6 montrent respectivement les paramètres utilisés dans
le fichier de configuration complet, le processus du training et l’historique des
graphes du training résumant les fonctions de pertes.
2. Gigabyte : unité de mesure de stockage en informatique.
3. Random Access Memory : mémoire de stockage volatile.
4. Service Google de stockage et de partage de fichiers dans le cloud.
5. COCO : collection de données de détection, de segmentation et de sous-titrage d’objets à
grande échelle.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 23 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
F IGURE 2.4 – Le fichier de configuration.
F IGURE 2.5 – Le processus de l’apprentissage.
Les chutes des courbes dans le temps et suivant le nombre d’epochs montre
une bonne évolution de l’apprentissage du système. En plus du mode
d’apprentissage, il y a le mode d’inférence qui permet de tester le modèle obtenu
sur un nombre d’images données afin de conclure sur le résultat (Figure 2.8,
2.7 et 2.9) de détection d’objets ainsi que sur les masques générés.
Une fois les masques détectées, nous allons procéder au découpage en se
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 24 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
F IGURE 2.6 – L’historique des fonctions de pertes.
servant des coordonnées de chaque masque qui relèvent de celles des blocs. Ces
coordonnées nous permettent de repérer la disposition de chaque bloc ou nœud
s’agissant de la représentation graphique. Ensuite, la même technique de ré-
cadrage comme pour celle de la segmentation vue dernièrement, sera appliquée
pour extraire les blocs. L’une des avantages la plus importante est qu’en plus du
masque nous obtenons aussi la classe qui équivaut au nom du bloc cible, ce qui
facilite l’étape destinée à la construction du graphe.
F IGURE 2.7 – Exemple 1 : Résultat de la détection des blocs en mode inférence
avec génération des masques.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 25 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
F IGURE 2.8 – Exemple 2 : Résultat de la détection des blocs en mode inférence
avec génération des masques.
F IGURE 2.9 – Exemple 3 : Résultat de la détection des blocs en mode inférence
avec génération des masques.
2.4 Deuxième phase : le traitement OCR
La détection du texte dans une image est tout un paradigme auquel se
trouve derrière les technologies OCR. Avant de passer une image à quelconque
algorithme, l’on doit s’assurer qu’elle soit de bonne qualité. Heureusement,
dans la bibliothèque OpenCV, pleines de méthodes assurent ce rôle.
Une fois que nous avons pu détecter et extraire les parties de l’images qui
nous intéressent, la tâche suivante nous sera d’autant moins complexe. Car cela
contribue à la réduction et à la limitation de zones de recherche aux dépens des
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 26 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
régions de l’image contenant probablement du texte, d’où le gain en matière de
précision.
Il est à préciser que les algorithmes de reconnaissance de texte demeurent
pour nous une boite noire et nous allons juste s’imprégner de leurs méthodes
pour la détection des texte de nos codes Scratchs.
Il existe plusieurs techniques de reconnaissance et d’extraction de texte. Nous
examinerons respectivement deux d’entre-elles dans les points suivants.
2.4.1 La détection de texte avec EAST
Une fois de plus, nous avons déjà les moyens et les meilleures méthodes pour
le besoin de fragmenter l’image. Tout en gardant l’architecture initiale, nous
avons cette fois-ci implémenté une autre technique basée sur la détection de
texte dans l’image.
La phase de détection est assurée par le détecteur de texte EAST qui s’en
sort pas mal dans sa procédure et est à notre niveau l’outil le plus adapté. A ce
effet, notre objectif se limite à trouver la moindre présence des caractères dans
l’image, qui est à ce niveau un fragment obtenu par le biais de la segmentation
basée soit sur les contours ou par le Mask R-CNN.
Nous allons passer un fragment entier et la méthode EAST essaye de trouver
et cibler le texte qui y [Link] chaque contenu textuel trouvé, l’outil doit
retourner ses coordonnées relatives à une boite rectangulaire englobant ledit
texte. Nous précisons que sur le plan visuel le texte se présente par ligne
horizontale. Il peut être constituer d’un caractère ( alphanumérique ou
mathématique), d’un chiffre, d’un mot ou d’une phrase. Ainsi EAST peut d’une
part détenir plusieurs coordonnées correspondantes aux caractères ou mots se
trouvant sur une ligne donnée (verticalement et horizontalement). En d’autre
part, il peut éventuellement détecter à la fois tout le texte d’une ligne entière
(par exemple une phrase complète).
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 27 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
A ce niveau, nous allons faire face à deux étapes de traitement essentielles :
1. Si les textes ou caractères détectés sont contenus dans un bloc simple,
c’est à dire ne contenant pas d’autres blocs, alors nous allons choisir les
coordonnées d’une seule zone de texte parmi les autres s’ils en existent et
confirmer la présence de texte pour garantir l’étape suivante qu’est
l’extraction des caractères dans ce bloc.
2. Si dans le cas échéant, ces textes se trouvent dans un bloc avec un niveau
d’imbrication supérieur ou égal à un (1). Dans ce cas nous allons essayer
de considérer juste l’entête de ce bloc en parcourant et en choisissant dans
l’axe vertical la première zone de texte. Nous allons par la suite étendre la
zone ciblée d’une marge d’au moins 10% en haut et en bas dans l’axe
vertical de la zone du texte. L’extension sur l’axe horizontal se limite à
celles de la largeur du fragment. Les autres zones de texte de la ligne
seront négligées. Enfin, il sera temps de procéder cette fois-ci à une
segmentation uniquement de l’entête comme spécifiée, sur lesquels les
textes se trouvent. La partie correspondante aux cases limitrophes qui
contiennent le texte sera extraite du reste pour servir à l’étape consacrer à
reconnaître le texte.
2.4.2 L’extraction de texte par le moteur Tesseract-ocr
La bibliothèque développée par Google, le Tesseract-ocr est bien réputée à
pouvoir détecter du texte en se basant sur l’Intelligence Artificielle. Elle offre
aussi le service d’enrayer intrinsèquement tout bruit avant de procéder à la
détection et à la reconnaissance du texte.
Elle dispose d’une méthode permettant de recevoir en entrée une image et
retourner tout le texte trouvé sous forme de chaîne de caractères. Mais avant
de lui passer l’image, nous allons tenir compte d’un aspect primordial qui est le
prétraitement d’images.
La notion de prétraitement d’image, en ce qui nous concerne est une tâche
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 28 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
très essentielle quant à l’acquisition des propriétés par l’image induisant
ultérieurement à l’analyse OCR. Ce besoin de retouche de l’image de base est
une étape incontournable assurée de façon spéciale. A cette étape, parlant
d’image, nous nous référons aux fragments équivalents aux blocs obtenus par
l’une des méthodes de segmentation précédentes.
Une image peut par défaut contenir ou être affectée des bruits qui peuvent
n’est pas être visibles à l’oeil nu. Qualifiés de parasites ou de phénomènes
indésirables, ces bruits peuvent être réduits en appliquant des filtres
spécifiques à l’image. Ces filtres sont censés régénérer de nouveaux pixels en vu
de donner à l’image une apparence moins répulsive mais le risque d’avoir une
image légèrement floutée serait au rendez-vous. Ainsi, il va de soi de choisir le
filtre adapté à notre goût sans pour en autant détériorer l’image.
D’abord, il va falloir connaître les conditions pour lesquelles les moteurs
OCR fonctionnent efficacement. Par conséquent, on en déduit que les meilleurs
résultats s’obtiennent à 100% dans le cas où la couleur du contenu (texte) des
documents ou images est noire et celle du fond est entièrement blanche, de
même que les polices utilisés doivent être de polices courantes. Pour se
conformer à ses spécifications, afin de répondre à la plupart des algorithmes
OCR qui nécessitent des images bitonales, l’image doit subir une opération de
binarization.
La binarisation est une technique par laquelle les images en échelle de gris
sont converties en images binaires. Dans tout problème d’analyse ou
d’amélioration d’image, il est très important d’identifier les objets d’intérêt
parmi le reste. Dans une image telle qu’une image Scratch, cela implique
généralement de séparer les pixels formant le texte imprimé (premier plan) des
pixels représentant le papier vierge (arrière-plan). L’objectif est de ne supprimer
que l’arrière-plan, en le mettant en blanc, et de laisser l’image de premier plan
inchangée. Ainsi, la binarisation permet de séparer les informations d’avant
plan et d’arrière-plan. Cette séparation du texte et de son plan arrière est une
condition préalable aux opérations ultérieures [15].
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 29 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
Malheureusement, les images Scratchs sont en contradiction avec ces
conditions. Car le contenu d’un bloc donné peut dans la plupart des cas se
trouver sous deux états à la fois. Dans la même ligne se trouve une alternance
de texte dont la couleur est blanche et de texte en noire. Ceci est un véritable
problème donnant du fil à retordre lors de la binarization de l’image, du fait que
tous les caractères au premier plan avec une couleur noire restent conséquent
au traitement et ceux dont la couleur est blanche deviennent insignifiant. Du
coup, au moment de la reconnaissance, seuls les caractères en blanc seront
mise en évidence au détriment des autres pour une parfaite reconnaissance et
seront les seuls à être extraits. Pour remplir tous les critères contribuant à
améliorer la reconnaissance de textes complets, nous avons élaboré deux
techniques. Primo, nous allons appliquer la binarization simple à l’image pour
rendre la totalité de textes facilement reconnaissable et secundo nous allons
appliquer la binarization inverse à cette même image. Cette dernière opération
comme son nom l’indique, permet un échange de rôle. C’est à dire les propriétés
de la binarization simple seront inversées et que tout ce qui est en blanc devient
noir de même, ce qui est en noir devient blanc.
Parmi les techniques de binarization nous allons utiliser la méthode basée
sur le seuillage global. De plus, sera appliqué une procédure de normalisation
morphologique qui consiste à réduire l’épaisseur des caractères. la technique de
seuillage d’Otsu apparaît pour notre cas comme une technique efficace et sera
donc appliqué à la fois pour la binarization simple et la binarization inverse. De
plus, sera appliquée une procédure de normalisation morphologique qui consiste
à réduire l’épaisseur des caractères.
La figure 2.10 suivante illustre ce traitement, dont la première ligne concerne
l’image originale, la deuxième est celle de la binarization simple et la dernière
indique la binarization inverse.
A ce stade, l’image sera prête pour le processus OCR à travers la méthode
dédiée du moteur Tesseract-ocr. Ainsi, on passera deux fois l’image selon les
principes énoncés ci-haut afin de récupérer la totalité de données en deux
compartiments. Une fois récupéré sous deux états, le résultat sera traité dans
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 30 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
F IGURE 2.10 – Traitement d’image : binarization et binarization inverse.
les moindre détails pour rétablir la forme de base.
Sachant que le résultat récupéré sous forme de chaîne de caractères peut
contenir des caractères générés aléatoirement par le moteur Tesseract-ocr. Pour
résoudre cela, nous allons reconstituer les deux résultats en se basant sur un
fichier dictionnaire que nous avons établi, contenant tous les mots clés des
blocs du langage. Il nous sert de registre pour éliminer certains mots qui ne
correspondent ou n’appartiennent pas au lexique Scratch.
Autrement, le résultat pourrait varier selon les paramètres renseignés. Parmi
lesquels les plus essentiels est d’indiquer les options telles que la langue,
l’algorithme de reconnaissance ( Tesseract uniquement, réseaux neuronaux
LSTM uniquement ou Tesseract + LSTM) et la méthode d’analyse de la mise en
page ( une dans une liste de quatorze modes disponibles). Nous avons après
plusieurs examinations des différentes options, choisi celles les plus adaptées
pour notre besoin. Ainsi, la langue étant l’anglais, le mode est celui permettant
de "trouver autant de texte que possible sans ordre particulier" et l’algorithme
étant celui basé sur les réseaux neuronaux LSTM uniquement.
La Figure 2.11 montre le processus d’extraction en utilisant le moteur
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 31 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
Tesseract-ocr.
F IGURE 2.11 – Processus d’extraction par le Tesseract-ocr.
En plus de sa capacité d’extraction du texte, Tesseract-Ocr est capable de
détecter de texte grâce à des fonctions implémentées par la bibliothèque mais
qui sont de moins en moins utiles dans notre cas précis. Du fait que nous
passons à Tesseract-Ocr de fragments d’images dont il commence la procédure
d’extraction. Pour ses méthodes de détection avant l’extraction, elles ne nous
intéressent guère car elles relèvent de son fonctionnement interne.
2.5 Post-traitement
2.5.1 Génération du graphe
Le principe de la mise en place du graphe est fortement lié au résultat des
étapes précédentes. Une fois les coordonnées des blocs reconnues et leur
contenu extrait, il est question de faire recours à la fonction responsable de la
construction du graphe proprement dit.
En outre, le graphe est essentiel pour la visualisation de la transition d’une
image Scratch jusqu’à la génération de l’exécutable. Cette étape est plus que
cruciale. Puisqu’elle explique en grande partie la conception et l’architecture du
projet. Elle ne se limite pas simplement à cela mais essaie de donner une partie
des étapes en arrière plan qui ont été les bases solides pour la réalisation de ce
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 32 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
projet. Comment opère l’architecture de l’application en générale, la
reconstruction de l’arbre, etc. Cette génération de graphe n’est en fait qu’une
partie de l’icebergs.
Au début, cette phase semble être compliquer mais à un moment donné
nous avons eu l’idée de se référer aux notions de cours acquises pour
représenter le problème sous forme de graphe. En vue de concrétiser cette
approche nous nous sommes servis de Graphviz pour rendre la visualisation
possible et prouver l’utilité d’étude de la théorie des graphes. Ces notions de
base nous ont permis d’implémenter des méthodes, dont l’algorithme de
parcours de graphe en profondeur appelé Depth-First Search (DFS), destinées à
générer de manière automatique des graphes sur la modalité des paramètres
requis.
Ces paramètres sont d’une part, les résultats de la segmentation permettant
de fournir les coordonnées dans le but de constituer les liens entre les nœuds
parents aux fils successifs. D’autre part, ils proviennent de l’extraction de texte,
pour représenter le nom de chaque nœud.
Étant mentionné ci-haut, Graphviz est en fait un logiciel de visualisation de
graphiques open source, basé sur le langage de description de graphe dans un
format texte qu’est le DOT et qui permet de créer un objet de graphe [16].
La Figure 2.12 illustre le graphe obtenu suite à l’exécution de l’algorithme.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 33 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
F IGURE 2.12 – Graphe résultant après extraction de texte
2.5.2 Génération de l’exécutable
La génération de l’exécutable résume tout le travail et toutes les étapes du
projet. Cette génération n’est que le fruit de toutes les autres étapes vues
jusqu’à présent. La passation d’une image Scratch, allant de son traitement, à
l’application de différents algorithmes de reconnaissance des blocs en suivant
l’architecture du projet consistant à considérer les jonctions de différents blocs
au sein de l’image, tout en finalisant ces étapes par l’application de l’OCR (pour
la reconnaissance et l’extraction des textes au sein de ces blocs) n’est pour avoir
simplement que l’exécutable.
A cet effet, il fallait retrouver une stratagème pour pouvoir assurer une
transition d’un résultant des étapes cités ci-haut à avoir en main des
instructions compréhensibles par la machine. En fonction du résultat de
chaque sortie OCR, il fallait appeler la bonne méthode liée à une classe Scratch
prédéfinie dans un package ou module pour la dite raison. Pour chaque type de
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 34 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
bloc au sein d’une image Scratch est associée une fonction prédéterminée
assurant avec aisance la transition de la sortie OCR vers une instruction
Python.
Ainsi, chaque bloc de l’algorithme Scratch est soit une instruction, soit une
fonction et peut représenter un nœud du graphe qui dorénavant stocke le
résultat OCR et produit à son tour une sortie textuelle. En effet, la traduction
se fait par le parcours en profondeur ou le DFS de l’arbre à partir des premiers
nœuds rattachés à la racine vers les derniers nœuds les plus profonds.
De surcroît, cette démarche est la plus logique et la plus acceptable du
moment où elle peut nous livrer les résultats attendus. Partir d’une image
premièrement, encore vers un texte, plus encore vers un code ne serait possible
sans adopter une stratégie efficace et limpide. Si bien qu’il peut y avoir
plusieurs manières d’approcher cette étape. Mais néanmoins, elle demeure la
meilleure pour l’instant.
2.6 Test et statistiques de comparaison
Pour s’assurer de la validité de notre travail, de l’efficacité des techniques, de
la performance des outils, nous avons établi une série de test sur un ensemble
des images respectant la construction des algorithmes Scratch et la qualité
requise quant aux images.
2.6.1 Cas de la segmentation
En ce qui concerne la segmentation, nous avons effectué le test sur un total
de 20 images variées, en utilisant chacune des méthodes vouées à cette tâche.
A la suite des résultats obtenus, nous avons effectué une statistique en ne
tenant compte que des caractéristiques essentielles dont la détection des blocs,
la précision de la segmentation, la reconnaissance automatique des blocs et la
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 35 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
consommation en terme de ressources matérielles et temporelles.
Ainsi, le résultat de la fragmentation par les contours est arrivé à la hauteur
de nos attentes, car la méthode a totalisé un score très satisfaisant sur la totalité
des images sélectionnées. Bien que parfois au moins un seul bloc n’arrive pas
à être détecter, mais dans l’ensemble le maximum sera trouvé. Ceci ne marque
pas son inefficacité car des améliorations sont envisageables.
Toute fois, cette méthode résout le problème de la détection des blocs et répond
aussi à la précision concernant la segmentation.
S’agissant de l’utilisation des ressources notamment en exigence matérielle, cette
technique n’est pas trop tolérante, elle peut tourner sans dépendre d’importantes
puissances de calculs et peut aussi s’exécuter en un temps record, dont la Figure
2.13 rend compte du résultat.
Le dernier critère évaluant la reconnaissance automatique des blocs ne relève
pas du domaine de cette méthode.
Autrement, le résultat étant aussi appréciable pour le Mask-RCNN. Il se
rapproche de plus en plus du but, en particulier sur la détection.
Compte tenu de la précision sur la segmentation basée sur les coordonnées
exactes des blocs, il est loin d’être le meilleur vu qu’il nécessite plus
d’apprentissage afin de s’accaparer de sa puissance liée au Deep Learning.
En suite, pour le besoin en matière de ressources matérielles, il s’avère très
exigeant à cause du chargement du modèle de l’architecture du réseau
neuronal utilisé et des dépendances modulaires, d’où il consomme une bonne
partie de calcul et met beaucoup de temps afin d’aboutir à la segmentation.
Donc, par rapport à la méthode précédente, il prend un retard de classement.
Enfin, le dernier critère est celui qui fait la spécificité du Mask R-CNN car il a la
capacité d’associer à chaque bloc son nom correspondant dont on le qualifie de
« classe ». Cela constitue un avantage distinctif de la part de cette technique.
En considérant les deux autres points de comparaison relatifs aux axes,
précisément l’amélioration et l’évolutivité. On peut dire que la méthode basée
sur les contours est loin de la barre d’évolution mais elle peut quand même
subir des améliorations. Par contre le Mask-RCNN quant à lui possède toutes
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 36 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
les qualités et les possibilités de suivre les deux axes, du fait qu’il en dépend de
l’apprentissage. Il suffit d’entraîner le modèle sur une grande quantité de
données (dite Datasets) afin de saisir de son potentiel.
F IGURE 2.13 – Statistiques des résultats basés sur la segmentation des blocs.
2.6.2 Cas de la détection et d’extraction de texte
Nous avons également évalué les outils de détection et reconnaissance de
texte. Nous avons noté une grande différence sur leur fonctionnement. Puisque
Tesseract-ocr est un paquet (package) Python facile à intégré et simple
d’utilisation, manipulable à travers sa méthode de récupération de contenu
textuel. De sa part, le EAST dépends d’un ensemble de fichiers en durs y
compris le modèle dont le chargement est conséquent lors de l’exécution.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 37 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
On remarque une latence de deux côtés, alors que Tesseract-ocr devance
légèrement le EAST. La lenteur de ce dernier est dûe toujours au chargement
du modèle pré-entraîné sur lequel le processus prend effet. Concernant la
localisation de texte, ils offrent tous des estimations d’une boîte englobant les
caractères détectables.
Les résultats de test, qu’ils soient parfaits ou non, ne permettent pas de
favoriser l’efficacité de l’un à l’encontre de l’autre. Car nous savons qu’ils
fonctionnent à base du Deep Learning et dont nous avons la possibilité de les
rendre plus efficace en élaborant leur procédure d’apprentissage sur nos
propres données relatives au lexique du langage Scratch.
2.7 Application de l’algorithme
Tout travail scientifique qu’il soit ou technique vise à satisfaire un besoin
bien précis. Il peut être relatif à un domaine, tout comme être universel. Par
extension à cette coutume, il est question de mentionner dans cette dernière
partie, les différents champs d’application de notre algorithme, tout en spécifiant
les possibilités d’extension pour son adaptation à d’autres domaines.
Voici quelques domaines d’applications du présent projet.
2.7.1 Domaine éducatif
Le présent projet est d’abord en grande partie un travail de recherche sur
les différentes technologies d’Intelligence Artificielle en générale et sur la vision
par ordinateur et le traitement d’images en particulier. De ce fait, ce genre de
projet peut avoir une vocation éducative et un point d’ouverture pour les futurs
étudiants et chercheurs à leurs servir de base pour l’exploration de ces domaines
et pour un potentiel en la matière.
A cet effet, le projet ne se limite pas simplement à l’initiation au domaine de
l’IA ni plutôt à s’approfondir dans ce domaine. Mais il pourrait avoir une
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 38 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
existence pratique et une employablilité dans le secteur éducatif. On peut
imaginer un scénario où avec une petite adaptation : au lieu simplement
d’utiliser des algorithmes Scratch bien definis , on peut créer nos propres codes
et adopter légèrement les codes pour d’autres besoins. Par exemple pour les
établissements et les écoles, un enfant peut se présenter le matin et montrant
son pièce d’identité à une caméra devant le portail d’entrée de l’école ou de la
classe. Le système scanne la carte comme dans l’OCR et le transforme en un
code compréhensible ou exécutable. Peut-être, qu’un système autonome
enregistre la présence de l’enfant tout en ayant la possibilité d’étendre cette
fonctionnalité.
2.7.2 Domaine d’automatisme
Comme nous avons mentionné l’application de l’OCR dans le domaine
éducatif. Il serait judicieux de guider l’application vers un domaine plus
pratique et concret. Le but étant de produire un code exécutable. Au delà de ça,
cette sortie finale doit faire preuve d’une utilisation ultérieure.
Le domaine d’automatisme peut comprendre plusieurs ensembles qui
peuvent servir de base pour étendre notre travail. On peut étendre la sortie du
résultat final de notre application pour être implémentée par un robot (par
exemple). Ce dernier pourra filmer au moyen de sa caméra l’image Scratch et
faire les différents traitements en interne pour pouvoir exécuter toutes les
instructions des différents blocs de code Scratch. On peut supposer que notre
image contient de blocs de différents traitements conditionnels (si par exemple)
et des traitements simples (avancer, reculer,...). Le robot doit pouvoir avancer,
reculer et vérifier les conditions jusqu’à leurs satisfactions. Ceci ne doit être
possible que par le code produit par l’application OCR et l’automatisation de ces
différentes étapes en boucle infinie.
Le robot doit implémenté un mécanisme automatisé lui permettant
d’exécuter sans relâche le processus de l’entrée à la sortie du code par
l’application et l’exploitation de celui-ci. En d’autres termes il ne doit gérer que
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 39 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
des interruptions dans un cycle continuel.
2.7.3 Domaine d’entreprise
Comme notre projet était censé traduire les instructions d’un langage
(Scratch) vers un autre (Python). On peut étendre ce projet dans le domaine de
la compilation. Un développeur ne se souciera pas du développement d’un
programme dans un langage donné ou bien du code déjà développé dans un
langage. Pour de cas particuliers et pour de questions de pratique, il serait
évident de laisser un système automatisé transcrivant les codes d’un langage
vers un autre. Surtout lorsqu’on a à faire avec des "legacy code" 6 ou développer
dans un langage qui n’est plus pratique pour bon nombre de développeurs
récents. On peut facilement migrer ces genres de code par une application
développée pour ce fait.
Ce genre de nouveaux projets pourront avoir un grand intérêt pour les
entreprises. Car elles sont tout le temps amenées à travailler avec des legacy
code. Si un projet de ce type visant à faire la translation par des mécanismes
OCR de langages anciens vers de langages récents pourrait avoir toute sa place
dans le monde de l’entreprise.
2.8 Conclusion
En somme, nous pouvons retenir que cette partie est le coeur de notre travail.
La segmentation par différentes approches était cruciales pour une bonne finalité
de l’ensemble du travail. Le traitement par reconnaissance et extraction par le
biais de l’OCR est jointif entre la segmentation et les étapes de post-traitements
qui doivent généré le code exécutable.
6. Code trés ancien ou dans un langage ancien que les compétences en manquent dans
le marché. Parfois attribué aussi à de code que l’on a peur de retoucher au risque de le
dysfonctionner.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 40 | 46
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
Nous nous sommes attardés à apporter un plus accès sur la comparaison des
phases précédentes offrant une vision claire sur la performance des technologies
utilisées tout en étant bref et concis dans ces différentes étapes.
Un dernier éclair a été fait sur les différents champs d’application et la
possibilité d’élargir ce projet à divers horizons. Malgré qu’il n’en demeure que
des idées. Ce projet l’était aussi à un moment. Car les barrières ne sont que
dans la plupart de temps qu’imaginaires.
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 41 | 46
Conclusion Générale
dernière analyse, nous pouvons affirmer que les différentes
E
N
technologies existantes peuvent être toujours prises de leurs domaines
d’origine pour être étendues dans un autre domaine ou un nouveau domaine
carrément inexistant. Le Scratch, l’OCR vers un autre résultat inattendu et
imprévisible est similaire à une idée vers une innovation, un rêve vers une
réalité.
L’architecture de Scratch, sa simplicité pour les débutants, la jonction facile
des instructions en blocs, fait de lui un langage idéal pour la portée de ce projet.
En plus la possibilité rendue par l’OCR à travers ses différentes potentialités
extractives crée un environnement à l’exploration de nouveaux horizons dans
le monde de reconnaissance des caractères. Les outils peuvent exister toujours
mais leur mise en oeuvre vers de nouveaux idéaux est la tranchée de différence
entre catégorie de personnes.
Nous avons essayé d’aborder ce travail en mettant en avance les technologies
à utiliser dans un premier temps pour donner un avant goût sur le reste du
travail consistant à les implémenter à bonne échéance conformément à nos
besoins spécifiques dudit projet. Nous nous sommes focalisés à essayer
d’aborder les différentes approches dans les maximums de clarté et la moindre
encombre. Compte-tenu que notre architecture est celle se focalisant sur de
blocs de Scratch, il a fallu considérer la segmentation bien pensée au résultat
attendu même s’il faut adopter une stratégie plus limpide et profonde aux
méthodes habituelles : celle de l’apprentissage profond. L’OCR est la plus
grande étape servant à clore tout le cycle du travail et facilitant la production
42
CHAPITRE 2. OCR POUR LE SCRATCH Juillet 2020
du code Python.
Le but étant de pouvoir réaliser une idée qui était à un moment délicate pour
ne pas dire impossible. Ce travail nous a permit d’acquérir plein de
connaissances au delà des celles académiques acquises. Il est important de
mentionner qu’il n’y avait de solutions tic au tac tout au long de notre projet
aux problèmes rencontrés. La grande partie du temps était consacrée aux
recherches sur ces technologies, leurs dépendances, leurs mises en oeuvre
dans notre projet et leurs performances comparables à leurs paires. Ce sont ces
choix stratégiques qui ont aboutit à ce résultat.
Malgré cela, nous sommes convaincus en fin de compte de choisir comme
méthode de segmentation celle dépendante des contours associée à la méthode
de détection, qu’est le EAST et suivie par le moteur d’extraction de texte qu’est
le Tesseract-ocr pour avoir une solution permettant d’atteindre l’objectif.
Bref, ce projet est loin d’être une finalisation. Mais il sera l’oeuvre d’une
amélioration constante dans tous les plans : théorique comme pratique.
“Sur la même idée de départ, pourrons-nous produire plus qu’un code
exécutable ? Ce dernier à lui-seul est-il suffisant pour la portée de ce projet ?”
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 43 | 46
Références
[1] La technologie OCR. http : / / lestroisgeeks . kazeo . com / la -
technologie-ocr-a122868638. Consulté le : 13 Avril 2020.
[2] Mitchel R ESNICK, MIT Media L AB et Lifelong Kindergarten G ROUP 1.
Scratch. [Link] Jan. 2019.
[3] G. B RADSKI. “The OpenCV Library”. In : Dr. Dobb’s Journal of Software
Tools (2000). URL : [Link]
[4] Xinyu Z HOU et al. “EAST : An Efficient and Accurate Scene Text Detector”.
In : CoRR abs/1704.03155 (2017). arXiv : 1704 . 03155. URL : http : / /
[Link]/abs/1704.03155.
[5] G OOGLE et H EWLETT -P ACKARD. Tesseract-ocr.
[Link] Déc. 2019.
[6] Yuxin W U et al. Detectron2. [Link]
detectron2. 2019.
[7] Kai C HEN et al. “MMDetection : Open MMLab Detection Toolbox and
Benchmark”. In : CoRR abs/1906.07155 (2019). arXiv : 1906 . 07155.
URL : [Link]
[8] Paul F. J AEGER et al. “Retina U-Net : Embarrassingly Simple Exploitation
of Segmentation Supervision for Medical Object Detection”. In : CoRR
abs/1811.08661 (2018). arXiv : 1811 . 08661. URL :
[Link]
[9] Google R ESEARCH. Colaboratory Colab. [Link]
colaboratory/[Link].
44
RÉFÉRENCES Juillet 2020
[10] Andrew F ERLITSCH. The idiomatic programmer Handbooks 1,2 and 3.
https : / / github . com / GoogleCloudPlatform / keras - idiomatic -
programmer/tree/master/handbooks. Consulté le : 15 Mars 2020.
[11] Andrew F ERLITSCH. Deep Learning Design Patterns.
https : / / github . com / GoogleCloudPlatform / keras - idiomatic -
programmer/tree/master/books/deep- learning- design- patterns.
Consulté le : 15 Mars 2020.
[12] A. D UTTA, A. G UPTA et A. Z ISSERMANN. VGG Image Annotator (VIA). http://
[Link]/~vgg/software/via/. Version : 2.0.9, Consulté
le : 02 Mars 2020. 2016.
[13] Google R ESEARCH. Colab.
[Link]
[14] WALEEDKA . MS COCO trained weights.
[Link]
[15] OCR System : A Literature Survey. [Link]
in/bitstream/10603/4166/10/10_chapter%[Link]. Avril 2020.
[16] Graphviz - Graph Visualization Software. [Link]
;A<
Brahim Haroun Hassan & Choueb Mahamat Issa 45 | 46
Une application OCR pour scanner
des algorithmes Scratch
B RAHIM H AROUN H ASSAN
ET
C HOUEB M AHAMAT I SSA
Résumé : L’utilisation des technologies OCR pour créer une application
basée sur le Scratch est une tâche un peu difficile vu les différentes étapes à
réaliser entre ce dernier et l’OCR. Le but étant de générer un exécutable en
passant d’un domaine à un autre. C’est dans cette optique que nous avions
exploré plusieurs techniques ( segmentation : OpenCV, Deep Learning,
reconnaissance et extraction :technologies OCR) qui ont du moins contribué à
la réalisation de ce dessein et qui sont plus que nécessaires dans la mise en
oeuvre de ce genre de projet.
Mots clés : OCR, Scratch, segmentation, OpenCV, Deep Learning, Mask R-
CNN, Tesseract-ocr, graphe, code Python.
Abstract : Using OCR technologies to create a Scratch-based application is
a somewhat difficult task given the different steps to be taken between Scratch
and OCR. The goal is to generate an executable by switching from one domain
to another. This is why we explored several techniques (segmentation : OpenCV,
Deep Learning, recognition and extraction : OCR technologies) that have at least
contributed to the realization of this goal and that are more than necessary in
the implementation of this kind of project.
Key-words : OCR, Scratch, segmentation, OpenCV, Deep Learning, Mask R-
CNN, Tesseract-ocr, graph, Python code.