Sujet : A partir d'une page de texte scannée, séparer les paragraphes, colonnes, graphiques
et équations, en vue d'une description par blocs.
Groupe : THIERRY Jérôme, BEASSE Luc, GRAIL Jean-Sébastien.
Etant donné que les images proposées sont de taille importante, de l'ordre de 1600x2400, nous avons extrait 3 sous-images de ccitt5.ima, contenant des informations de natures différentes :
A cela s'ajoute, une image de test extraite de ccitt8.ima, qui contient la lettre manuscrite réduite de moitié.
Pour cette dernière, l'échelle a été divisée
par deux pour obtenir des caractéristiques de taille des différentes
structures comparables aux images extraites de ccitt5.ima (en particulier,
pour les espaces entre mots et entre lignes du texte).
Remarque : les images sont inversées par rapport aux originales
pour obtenir les formes du texte en blanc sur fond noir. Toutes les images
sont binaires.
L'analyse des structures consiste à définir des caractéristiques propres afin d'établir des opérations morphologiques (choix et taille des éléments structurants) appropriées au traitement de chaque structures.
Dans un premier temps nous cherchons à identifier les structures suivantes : les graphiques encadrés, les paragraphes de texte, les formules mathémathiques (en dehors du texte). Nous obtenons donc, quatre catégories de structures (une étiquette est attribuée au reste) que nous segmentons séquentiellement à l'aide de masques. Nous commençons par les structures les plus remarquables (facilement identifiables) et nous les éliminons au fur et à mesure de la segmentation pour s'attacher aux structures de plus en plus fines.
Nous avons tout d'abord inversé l'image pour que le texte soit en blanc et que les opérations morphologiques agissent sur ce dernier.
1-Extraction des figures
On ferme l'image originale par une boule de taille deux pour reconnecter les lignes qui pour des raisons de format auraient perdu leur connexité (image 1). On fait une ouverture linéaire horizontale de taille 80 pour sélectionner les grandes lignes horizontales (image 2). De même on fait une ouverture de l'image 1 par une ligne verticale de taille 30 que l'on dilate avec une boule de taille 1 toujours pour des raisons de connexité (image 3). On fait un "ou binaire" entre 2 et 3. On a alors extrait les cadres et plus généralement les grandes lignes verticales et horizontales (image 4).
On fait une reconstruction géodésique de image 4 dans image1. Ceci sert pour les figures non encadrées : on reconstruit ainsi toute la partie de la figure connexe aux grandes lignes détectées. Maintenant on remplit la composante connexe -- avec holefill. On a le cadre plein ou la figure pleine (image 5).
Un "ou exclusif" entre l'image 5 et une image à 255 inverse l'image 5. Maintenant en faisant un "et" entre l'inverse de 5 et l'image originale, on obtient l'image initiale sans les figures que l'on vient de détecter (image 6).
On remarque que pour obtenir les figures il suffit de soustraire l'image 6 à l'image originale (image 7).
2-Extraction du texte
On ferme l'image 6 par une ligne de taille 10 pour que chaque ligne de texte ne donne qu'une bande sur toute sa longueur. Puis on ferme l'image obtenue par une ligne verticale de taille 5 ce qui réunit toutes les lignes du paragraphe en une seule composante connexe (image 8).
On ouvre l'image 8 par une boule de taille 10 pour ne sélectionner que les grosse composantes connexes (image 9). On élimine ainsi les "fig. n" et les formules. cependant certaines formules sont trop épaisses et pour les faire disparaitre totalement, on ouvre image 9 par une ligne horizontale de taille 30 (image 10). Ce dernier point est illustré dans Résultats/Image ccitt-s2.gif.
On dilate géodésiquement image 10 dans image 8 pour retrouver l'intégralité des composantes connexes correspondant aux paragraphes (image 11).
De même que pour l'extraction des figures, on fait un "ou exclusif" puis un "et" astucieusement choisis pour soustraire à l'image 6 les paragraphes que l'on vient de détecter (image 12). Cette dernière image correspond à l'image originale à laquelle on a retranché les figures et les paragraphes. On construit alors l'image des paragraphes en soustrayant l'image 12 à l'image 6 (image 13).
3-Extraction des formules
On considère qu'il ne reste que les formules et des petits bouts de texte dans l'image 12. On la ferme par une boule de taille 10 (image 14), puis on ouvre par un segment horizontal de taille 30 (image 15). On reconstruit géodésiquement l'image 15 dans l'image 14 pour retrouver tout le cache de chaque formule.
Comme dans les deux paragraphes précédents on enlève à l'image 12 les formules (image 16). On conserve les figures dans image 17.
Alors on reconstruit les zones non détectées en faisant un "et" entre image 16 et l'image originale (image 18). Finalement une simple addition des images 6, 12, 16 et 18 avec des couleurs différentes donne les images séparées que l'on peut observer dans Résultats.
Pour évaluer les résultats, étudions l'effet produit par l'algorithme sur les quatre images dont il est question dans les Préliminaires.
1-Image ccitt-s.gif
|
Nous avons fait tourner l'algorithme sur cette image. Le rouge correspond aux figures, le bleu aux paragraphes, le vert aux formules et le violet à ce qui n'a pas été détecté par les trois grandes étapes de l'algorithme. Le résultat obtenu est le suivant :
|
2-Image ccitt-s2.gif
![]() |
![]() |
L'image de droite est le résultat si on ne fait pas l'ouverture par une ligne horizontale de taille 30 après l'ouverture par une boule de taille 10 lors de l'extraction du texte. Ici, la seconde formule a été identifiée comme un paragraphe car ce qui est en crochet est trop épais pour disparaitre avec une ouverture par une boule de taille 10. Par contre en faisant l'ouverture par le segment -- voir l'image ci-dessous -- la seconde formule est bien identifiée comme telle. On voit cependant que le texte d'une ligne est identifié comme une formule. Mais ceci est inévitable car elle a les mêmes propriétés morphologiques qu'une formule. Nous ne pouvons donc pas corriger cette erreur si ce n'est de manière artificielle et donc non robuste.
|
3-Image ccitt-s3.gif
![]() |
![]() |
L'image de droite représente le résultat de l'algorithme sans la reconstruction géodésique avant le remplissage (holefill) au moment de l'extraction des figures. On voit que l'on perd ainsi une partie de la figure. Par contre avec la méthode complète, on détecte toute la figure sauf des petits bouts de texte non connexes à cette dernière. Ceci se vérifie dans l'image ci-dessous.
|
Les petits bouts de texte mal identifiés pourront être inclus dans le masque de la figure par des opérateurs non-morphologiques très simples, par exemple par reconstruction du cadre englobant la figure. Les méthodes purement morphologiques semblent donc assez peu intéressants.
4-Image lettre_d2.gif
Voyons maintenant ce que donne notre algorithme sur l'image suivante assez différente de celles à partir desquelles l'algorithme a été élaboré.
|
Le résultat semble assez bon du point de vue de la segmentation. Les parties de natures différentes ont bien été séparées.
|
V. Critiques, commentaires et améliorations de la méthode
Cette méthode n'est pas unique pour résoudre le problème
posé. Nous avons simplement cherché à reproduire algorithmiquement
l'analyse progressive des structures décrite plus haut. D'autre
part, nous n'avons pas considéré la contrainte de rapidité
de temps de calcul. Il est possible, notamment d'éliminer un certain
nombre d'opérations qui semblent communes à chaque étape
de reconnaissance de structure en considérant plus précisemment
l'influence globale d'une opération de fermeture, par exemple, au
lieu de recommencer pour chaque étape avec l'image d'origine (ou
presque) moins les structures décelées. Notre approche est
donc locale et l'influence des opérations à été
étudiée seulement dans le but d'isoler une structure bien
particulière. Dans cette optique, l'ordre de segmentation à
été choisi dans le sens d'une augmentation des opérations
pour identifier une structure de moins en moins bien définie morphologiquement.
Certaines erreurs persistent donc, faute de pouvoir identifier finement
des structures proches. Par exemple, dans l'image ccitt5-s2, la première
ligne de texte isolée est prise pour une équation car cette
ligne est séparer d'un paragraphe (un bloc de texte) et sa longueur
est semblable à celle d'une ligne d'équation. Sachant qu'une
équation est généralement centrée tandis que
le texte commence plutôt à gauche, la position de la composante
connexe nous permettrait de poser un doute sur l'attribution de l'étiquette
"équation" pour cette ligne de texte isolée. Il
resterait donc à pousser plus finement ce genre d'analyse dans la
description des structures pour séparer des structures proches en
forme.
Bien que la Morphologie Mathématique se prète relativement
bien à l'analyse d'un texte standard comme l'image ccitt5.ima, pour
que la méthode soit valable dans un cas plus général,
il faudrait adapter dynamiquement les tailles des éléments
structurants aux caractéristiques globales du texte à segmenter.
Aussi, il serait intéressant de faire une étude préalable
des espacements entre mots (entre lettres), des inter-lignes, des
espaces entre un paragraphe et une figure ou une équation. En voulant
appliquer l'algorithme sur l'image de la lettre, nous avons, en effet,
remarqué que l'échelle était importante.
Bien sur, il serait stupide de vouloir obtenir une étude complète
des structures du texte par des opérations de Morphologie Mathématiques
lorsque des opérations simples et plus rapides peuvent s'appliquer.
Pour calculer les marges de la page, par exemple, un simple histogramme
horizontal nous permet, d'une part, de séparer les colonnes (la
ligne verticale forme un pic) et d'autre part, de calculer la marge à
gauche et à droite, tandis que l'histogramme verticale nous donne
la marge de haut et bas de page, ainsi que des informations sur les espacements
entre les differentes structures (trous dans l'histogramme). D'autres méthodes
non morphologique peuvent donc rendre ce travail plus précis.
Enfin, il est à noter que l'algorithme à été
testé sur des images binaires et sans bruit fort, ce qui définit
un champs d'application restreint. Cependant, pour rendre ce type d'algorithme
plus robuste au bruit et compatible avec un plus grand nombre de pages
de texte (mise en page différente), d'autres opérations (morphologiques)
peuvent être rajoutées, de la simple ouverture par un petit
élément pour éliminer les pixels bruités à
des opérations plus complexes comme la recherche des titres de sections
ou des formules situées dans un paragraphe de texte.
Pour conclure, cet algorithme ne constitue, donc, qu'un point de départ
et une mise en forme des idées que l'on peut avoir pour aborder
le problème de la reconnaissance de structures d'un texte par une
approche morphologique.