[Python-es] Captchas

Arnau Sanchez pyarnau en gmail.com
Jue Dic 16 21:47:59 CET 2010


On Thu, 16 Dec 2010 18:42:33 +0100 Sergio Martín wrote:

> ¿Alguien sabe de algún modo para reconocer un catcha?, desde Python o desde
> línea de comandos (por medio de alguna aplicación). La cuestión es que el
> resultado me llegue a Python. 

No sé si existe tal librería, pero aunque así fuera sólo tendría soporte para
captchas específicos y concretos, porque por su propia naturaleza es imposible
encontrar una solución genérica. 

Hay captchas tan sencillos que un simple OCR los resuelve, y otros tan
complejos (¿reCaptcha?) que la tarea se antoja imposible. Cada captcha, pues,
requiere un análisis específico. Si se ve factible, el primer paso es
tratar de arreglar la imagen lo máximo posible, y delegar el trabajo final a un
OCR. "Arreglar" quiere poder decir orientar los caracteres, alinearlos,
separarlos si estaba pegados, limpiar ruido, quitar colores, etc. Si un OCR
estándar no funciona bien a pesar de la limpieza, se puede usar uno que
permitan entrenamiento específico (normalmente lo hacen usando redes
neuronales), lo que suele mejorar los resultados sensiblemente.

Un ejemplo de un captcha sencillo lo tienes en el captcha que venía utilitzando
hasta hace unas semanas Megaupload. Tan sencillo que tesseract lo resolvía a
pelo:

$ wget http://plowshare.googlecode.com/svn/trunk/test/pics/megaupload_dte5.gif
$ convert megaupload_dte5.gif tif:- > captcha.tif
$ tesseract captcha.tif captcha
$ cat captcha.txt | xargs
DTE5

Un ejemplo de adecentamiento de captcha + OCR con el captcha antiguo de
Megaupload:

http://code.google.com/p/plowshare/wiki/BreakingMegauploadCaptcha

y un ejemplo en Javascript usando redes neuronales, también para Megaupload:

http://hg.herecomethelizards.co.uk/mu_autocaptcha

(huelga decir que asumimos que quieres resolver un captcha para un uso
lícito ;-))

arnau


Más información sobre la lista de distribución Python-es