¿OCR es una amenaza para CAPTCHA?

Sí. Muchos captchas son bastante vulnerables. En este momento están a salvo por la dificultad de romperlos (se necesitaría un sistema bastante sofisticado, utilizando tecnología de punta; definitivamente algo que tendría que estar ubicado en un servidor central, por lo que solo sería económico si se vendiera como un servicio o si un grupo privado extremadamente grande lo estuviera usando), no porque no sean frágiles. Las distorsiones + características de oscurecimiento leves que se ven en un captcha típico probablemente se pueden resolver un 80% del tiempo si alguien creara un sistema utilizando el estado actual de la técnica.

La principal ventaja de seguridad que tiene Captcha es 1) hay muchas distorsiones y efectos diferentes que se pueden agregar, que son difíciles de explicar en general. Sin embargo, se puede tener en cuenta un efecto específico. 2) El esfuerzo involucrado anteriormente. Si superar un captcha es realmente importante para usted, un enfoque de crowdsourcing es probablemente un mejor uso del dinero que usar OCR para romperlo. Si no es así, busque un sitio sin seguridad de captcha: hay muchos de ellos. También puede usar un OCR más genérico y simplemente soportar una tasa de resolución muy baja, pero no nula. A veces un captcha es fácil por accidente.

Daré un ejemplo de cómo construiría un solucionador de captcha para un tipo particular.
Visite http://www.google.com/recaptcha/… para ver el que estoy hablando. Tiene tres características:
1) Tiene dos palabras, espaciadas, una palabra de aspecto más o menos regular que generalmente se puede resolver con OCR normal.
2) Una palabra distorsionada
3) con una gota alrededor de una parte invertida en color.

La palabra normal se puede resolver de manera bastante razonable con OCR convencional. La segunda palabra distorsionada podría tratarse más o menos de la siguiente manera:
1) “elimine” la burbuja identificándola: se trata básicamente de geometría alrededor de las partes del borde que están lejos de las letras, y de interpolar en las regiones donde se encuentra. “voltea” los píxeles del área interior, luego suaviza un poco para deshacerte de los huecos extraños. Si somos flojos para implementar este paso, a veces arruinaremos nuestra imagen, pero en general lo haremos lo suficientemente bien como para que no sea nuestro cuello de botella.
2) Aplicar varios algoritmos de distorsión. En general, esto implicaría enfoques semi-geométricos (enderezar líneas con otra distorsión mínima, encontrar esquinas / puntos para moverse). Está bien, usamos varios de ellos y comparamos resultados.
2.5) EDITADO EN: Olvidé decir esto antes, pero realmente necesitas segmentar las letras, para que otros algoritmos puedan ver cada letra por separado. Al igual que con la distorsión, debe aplicar libremente varios algoritmos. Algunos algoritmos basados ​​en la detección de bordes pueden funcionar, pero probablemente necesite crear una solución personalizada basada en “estadísticas de imágenes de texto” (en oposición a las “estadísticas de imágenes naturales” típicas). Este es realmente un paso bastante difícil.
3) Aplique un algoritmo OCR tanto al texto distorsionado original como al texto destorsionado para encontrar una palabra. Una red neuronal “convolucional” u otra arquitectura profunda convolucional es probablemente el estado del arte en esta área, tal vez combinado con un modelo tipo HMM que nos empuja hacia cadenas de letras que tienen más probabilidades de ser palabras reales.
4) Encuentre un buen método para estimar la “confianza” de nuestros resultados para que podamos hacer clic en “darme un nuevo captcha” si el algoritmo considera que es probable que esté equivocado. Si los pasos 1, 2 y 3 se realizan bien, una buena implementación del paso 4 nos moverá de “buen interruptor de captcha” a “gran interruptor de captcha”