Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

No one has made a program to solve these yet?

  1. Jul 21, 2013 #1
    I'm going to try and be of aid to spammers and hackers by making a program that solves these:


    Can't be too hard. Here's a procedure I'm going to implement:

    Given an m x n array of pixels known to contain a letter among a bunch of noise, convert the pixels to their RGB values, give the array a binary mask, then calculate the correlation coefficient between it and each of the m x n binary arrays that would represent images of upper and lower case letters. The one that yields the greatest correlation coefficient will be assumed to be the letter.

    Make sense?
  2. jcsd
  3. Jul 21, 2013 #2
    For instance, I look at the correlation coefficient between the values of binary-masked arrays representing




    after resizing, of course.
  4. Jul 21, 2013 #3


    User Avatar
    Gold Member

    It's hard. That's why spammers just use man-in-the-middle attacks to solve these.
    (I.E. they set up a website where people have to solve these to download pirated movies or something.)
  5. Jul 21, 2013 #4

    jim mcnamara

    User Avatar

    Staff: Mentor

    A priori it is easy to solve captchas - for humans. We are are hard-wired (by evolution of predator avoidance strategies) to see things that are not the way they are normally presented.

    As it stands now, captchas are not even remotely simple to solve by any known algorithms. It is a very hard problem. Please try. Maybe you can find something in graph theory that does it.
  6. Jul 21, 2013 #5
    How do you know the spacing, size, and location of the letters so that you can pick out mxn arrays that contain only 1 letter and not multiple letters, no letters, and partial letters? I think identifying a letter out of an image that is known to only contain 1 letter and noise is easier than taking an image that contains an unknown number of letters at unknown locations and in the presence of noise and intentional size and alignment distortions dividing that image up into groups of single letters.
    Last edited: Jul 21, 2013
  7. Jul 21, 2013 #6


    User Avatar
    Gold Member


    I've also worked on one myself using mathematica. Its not easy. REALLY. Some use neural networks to learn characters for the OCR.

    Thats one of the first problems. Theres many ways. I wrote something that erodes the image to find spaces, looks at average distances between spaces, disregards those beyond some standard deviation from the mean, and compute the average character width, and try to split it up.

    But then if the image is skewed or tilted, yoou have to fix that first.
  8. Jul 21, 2013 #7
    If someone could make one, i guess its AI :confused:
  9. Jul 22, 2013 #8
    To do that you'd first have to identify the sub-matrices that may contain letters, which may not be easy. Assuming that you could seperate letters with high accuracy, I think you're solution would perform perform poorly on most captchas. Other problems are that the letters are usually skewed and put very close together where a sub-matrix of a letter may contain parts of other letters. You need a more robust representation of the images that is invariant to transformations such as resizing and skewing.

    This is a computer vision problem, and I think the current best performing methods are convolutional networks with other tricks like dropout, so I'd probably try train those for this problem.

    It's a pretty hard problem. I have trouble deciphering captchas myself.
  10. Jul 27, 2013 #9


    User Avatar
    Science Advisor
    Gold Member
    2017 Award

    Thanks for the epiphany. I never heard of this but it makes perfect sense. Why try to solve something difficult when you can let someone else unknowingly solve it for you? :cool:
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Discussions: No one has made a program to solve these yet?