L'ORC va manger le chat sous la cap ?

gomoz
WRInaute discret
WRInaute discret
 
Messages: 230
Inscription: 29 Déc 2004

L'ORC va manger le chat sous la cap ?

Message le Ven Avr 14, 2006 13:57

Bonjour,

je suis tombé sur plusieurs discutions sur les systèmes de capcha et généralement on arrive à des système assez compliqué car le méchant OCR est à l'affût.

Par curiosité je me demandai comment pouvait bien fonctionner un system d'OCR. Est-ce que vous avez quelques notions la dessus ou un liens qui en parle ? (par curiosité intellectuel et mieux comprendre comment faire un capcha efficace).


aux modos : j'ai mis le topic ici car cela se rapporte plus à de la programmation mais si vous voyez où le mettre ailleurs, veuillez m'en excuser.
Dernière édition par gomoz le Ven Avr 14, 2006 15:43, édité 1 fois.


spout
WRInaute accro
WRInaute accro
 
Messages: 4109
Inscription: 14 Mai 2003

Message le Ven Avr 14, 2006 15:14

C'est quoi ça ORC?
Les seuls Orc que je connais c'est dans Warcraft ^^

gomoz
WRInaute discret
WRInaute discret
 
Messages: 230
Inscription: 29 Déc 2004

Message le Ven Avr 14, 2006 15:42

oups, je veux dire bien sur OCR... j'ai voulus faire un jeu de mot et voila que je suis pris à mon propre piège (j'edite le message)


spout
WRInaute accro
WRInaute accro
 
Messages: 4109
Inscription: 14 Mai 2003

Message le Ven Avr 14, 2006 15:49

Oui en effet, y'a des petits malin qui arrivent a décoder les captcha sans problèmes.
Une liste ici pour savoir ce qu'il faut faire et ne pas faire:
http://sam.zoy.org/pwntcha/

Bourriquet
WRInaute impliqué
WRInaute impliqué
 
Messages: 637
Inscription: 19 Sep 2005

Message le Ven Avr 14, 2006 16:26

Pour avoir mené un projet de vidéo surveillance par poste informatique durant mes années bts, je peux te dire une chose.

Quand tu t'attaques à un projet du genre, tu te dis souvent que c'est très compliqué. Mais par dychotomie, tu arrives très rapidement à un système performant.


Szarah
WRInaute accro
WRInaute accro
 
Messages: 8093
Inscription: 22 Fév 2006

Message le Ven Avr 14, 2006 16:31

Enfin-bon, la lecture obligatoirement humaine d'un code étant désormais has been comme moyen d'empêcher les robots d'entrer, il y a lieu de faire mieux : remplacez par un test de calcul, par exemple d'addition (un truc pas trop compliqué, que l'internaute humain puisse entrer sans calculette).

gomoz
WRInaute discret
WRInaute discret
 
Messages: 230
Inscription: 29 Déc 2004

Message le Ven Avr 14, 2006 17:02

Oué pas mal du tout, je suis un peu bluffé par le lien de spoutnik.

pour la dichotomie, je connaissais pas : en effet, ça parait tout bête pour transformer une image en noir et blanc mais après, pour trouver les caractères, ça fonctionne comment ?

J'ai pris un cas concret en prenant une image captcha au hasard :
Image
que je transforme ensuite en N&B :
Image

Vu que tu l'air de connaitre le sujet Bourriquet, ca t'embete de m'expliquer un peu plus le principe ?


Szarah a écrit:remplacez par un test de calcul, par exemple d'addition (un truc pas trop compliqué, que l'internaute humain puisse entrer sans calculette).
Genre la racine de deux on evite, c'est ca ? :lol:

Bourriquet
WRInaute impliqué
WRInaute impliqué
 
Messages: 637
Inscription: 19 Sep 2005

Message le Ven Avr 14, 2006 18:00

Par exemple en essayant de trouver les contours de ton image noir et blanc et les comparer à des masques de lettre, par exemple en prenant ces masques un à un et en cherchant le taux de comparaison le plus élevé.

En décompressant une image, tu arrives à un format (bmp ou tiff, ça dépends de l'ordre de stockage des pixels) ou un octet représent un pixel en niveau de gris 256.

Après c'est juste des comparaisons de valeur de pixels.

Par exemple, dans notre projet, la détection d'intrus se faisait pas comparaison d'images successive.

Le principe est simple: prends deux images puis tu calcules combien y a de pixels de différence, tu prends un seuil de tolérance et tu arrives très bien à faire la détection.

N'ayant pas fait de projet OCR, je peux pas te donner une méthode 100% efficace, mais ce que je veux te dire c'est que si tu prends le problème "Reconnaitre une lettre dans une image", c'est compliqué.

Mais c'est une somme de tous petits problèmes, comme par exemple problème numéro 1: isoler une lettre dans l'ensemble.

Une méthode qui pourrait marcher ça serait de passer en noir et blanc, accentuer éventuellement les contrastes, scanner une ligne de pixel et lorsque tu trouves un pixel "noir" ou gris foncé, tu dis que c'est le début de la lettre pour cette ligne. Lorsque tu repasses dans du blanc (avec peut être une tolérance genre 4 pixels blancs successif) tu détermines que c'est la fin de la lettre pour cette ligne.

En faisant ça tu découpes verticalement ton image en secteurs, et tu sais quelles portions tu vas extraire. Puis ensuite pour affiner un peu, tu balaies verticalement cette fois et tu fais la même chose, in facto horizontalement.

Enfin tu compares les pixels à une série de masques (en clair des images qui reprennent chaque lettre de l'alphabet) en ayant redimensionné le masque pour qu'il fasse la même taille que la zone de comparaison.

Donc tu compares un à un les pixels de chaque image avec un bête if (pixel_image1 == pixel_image2) score++ ;

Avec peut être une tolérance aussi ici.

A la fin t'as un score, tu compares avec les autres masques et tu prends le score le plus élevé....

Par exemple :) Mais je suis sur qu'il y a des méthodes plus poussée, les programmes d'OCR fonctionnent très bien avec ton scanner ;)

gomoz
WRInaute discret
WRInaute discret
 
Messages: 230
Inscription: 29 Déc 2004

Message le Ven Avr 14, 2006 19:13

Merci bien, je vais voir et j'essayerai bien quand même sur mon exemple de faire un pti truc en php (les lettres sont droites et assez faciles à identifier en faite).


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Ven Avr 14, 2006 19:53

pour l'identification des caractères : réseaux de neurones, aussi.

haute-definition.info
WRInaute discret
WRInaute discret
 
Messages: 127
Inscription: 7 Nov 2005

Message le Ven Avr 14, 2006 20:03

Il existe déjà une classe phpOCR :
http://www.phpclasses.org/browse/package/2874.html

gomoz
WRInaute discret
WRInaute discret
 
Messages: 230
Inscription: 29 Déc 2004

Message le Sam Avr 15, 2006 22:28

merci, j'ai regardé, c'est pas mal du tout, je vais le prendre comme base et l'adapter avec ce que disais bourriquet


Suede
WRInaute accro
WRInaute accro
 
Messages: 3722
Inscription: 4 Oct 2002

Message le Sam Avr 15, 2006 22:54

Le probleme de ces systemes de capcha vient des limites des systemes sur lequel on les installes.
S'il était possible de faire de simple rotation/déformation de lettre, de changer facilement de police etc , ce serait beaucoup plus simple. Mais ce n'est pas possible de maière simple.

François


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: salva et 3 invités