Répartition n1 - anna-barry/OCR GitHub Wiki

Voici la première répartition des tâches

Il s'agit de recherches approfondies et non code en C.

Ce n'est pas une répartition définitive pour le travail au niveau du code, on aura des réunions d'organisation avant cela.

Remarques préliminaires:

  • Il serait vraiment utile de trouver du code python et de connaître les librairies nécessaires. L'OCR en python est très documenté comparé à celui en C etc
  • Lamia va nous présenter des méthodes de pré-traitement de photo lundi donc même si on va rechercher en amont il ne faut pas le voir comme la priorité n1, le reste va nous demander encore plus de travail de compréhension
  • Si jamais vous voulez rapidement comprendre le concept de l'OCR je conseille vivement de regarder les courtes vidéos qui vont permettre d'avoir une vue d'ensemble du travail comme celle-ci par exemple
  • Je suis en train de faire le résumé en anglais/ français du livre conseillé par EPITA sur les réseaux complexes de neurones, je vous envoie ça bientôt pas besoin de tout lire celui-là

I- Compilateur & Éditeur de texte à utiliser

  • Difficulté à trouver et expliquer: ★★☆☆☆
  • Recherches à faire par: Anna

II- Chargement de l'image (sujet de tp qui sera abordé)

  • Difficulté à trouver et expliquer: ★★☆☆☆
  • Recherches à faire par: Geoffroy

III- Suppression des couleurs (niveau de gris, noir et blanc) (sujet de tp de l'an passé)

  • Difficulté à trouver et expliquer: ★★★☆☆
  • Recherches à faire par: Marie

IV- Pré-traitement de l'image (une partie sera expliqué par Lamia)

1. Redressement manuel de l'image (angle saisi par utilisateur)

  • Difficulté à trouver et expliquer: ★★☆☆☆
  • Recherches à faire par: Marine

2. Redressement automatique de l'image (détection de l'angle puis rotation)

  • Difficulté à trouver et expliquer: ★★★★★
  • Recherches à faire par: Marie et Anna

3. Élimination des bruits parasites (grain de l'image, tâche..)+ renforcement des contrastes

  • Difficulté à trouver et expliquer: ★★★★☆
  • Recherches à faire par: Marine et Geoffroy

IV- Détection des blocs de texte -> Segmentation pt1

“Le découpage de l’image en blocs puis en caractères (en passant éventuellement par un découpage des blocs en lignes) est nécessaire pour envoyer à la reconnaissance les morceaux d’images correspondants logiquement à des caractères. Il est fortement conseillé de penser cette partie de manière récursive et modulaire. En effet, si vous voulez préserver la mise en page du texte reconnu (paragraphes, passages à la ligne, multicolonnes ...) vous devrez récupérer les informations nécessaires pendant cette partie. “

  • Difficulté à trouver et expliquer: ★★★★★
  • Recherches à faire par: Anna et Geoffroy (qui a déjà travaillé dessus l'année dernière donc parfait pour nous expliquer)

V- Détection des caractères -> Segmentation pt2

“Le découpage de l’image en blocs puis en caractères (en passant éventuellement par un découpage des blocs en lignes) est nécessaire pour envoyer à la reconnaissance les morceaux d’images correspondants logiquement à des caractères. Il est fortement conseillé de penser cette partie de manière récursive et modulaire. En effet, si vous voulez préserver la mise en page du texte reconnu (paragraphes, passages à la ligne, multicolonnes ...) vous devrez récupérer les informations nécessaires pendant cette partie. “

  • Difficulté à trouver et expliquer: ★★★★★
  • Recherches à faire par: Marie et Marine (ce serait pratique d'avoir un retour sur la partie d'avant pour s'en inspirer)

VI- Reconnaissance des caractères

  • Difficulté à trouver et expliquer: ★★★★★

La reconnaissance de caractères est la partie centrale de votre OCR. Cette partie nécessite une phase d’appren- tissage pendant laquelle votre réseau de neurones va apprendre à reconnaître les différents caractères. Un réseau de neurones est un outil permettant d’apprendre une fonction (possiblement non linéaire) à l’aide d’exemples : dans la phase d’apprentissage du réseau vous allez fournir des entrées déjà identifiées (ici des blocs d’images) auxquelles votre réseau répondra. La marge d’erreur de ces réponses sera alors utilisée pour corriger les poids internes du réseau. Avec un certain nombre d’exemples, votre réseau finira, dans la majorité des cas, par fournir les bonnes réponses. La sortie usuelle pour ce genre de problème est une probabilité par symbole du jeu de caractères. Le symbole avec la plus forte probabilité sera retenu comme le symbole reconnu.

  • Termes à rechercher en plus détaillé (on va mettre en commun toutes nos recherches après à la réunion):
  1. Apprentissage supervisé -> Marine
  2. Perceptron multicouche -> Geoffroy
  3. Rétropropagation -> Marie
  4. Descente de gradient -> Anna
  5. AdaBoost -> Marie

Il existe de nombreuses formes de réseaux de neurones, mais pour votre projet vous n’avez probablement pas besoin de plus d’une couche cachée. Par contre, il peut être judicieux de remplacer la fonction d’activation de la dernière couche par un softmax plutôt que par la fonction sigmoïde habituelle.

  • Recherche générale (livre + trouver des vidéos faire un bilan) -> Anna + Marine même si tout le monde doit se renseigner de son côté car il est impératif que tout le monde y touche un peu

VII- Reconstruction du texte et vérification de celui-ci

  • Difficulté à trouver et expliquer: ★★★★☆
  • Recherches à faire par: Geoffroy et Marie