I was thinking about this: <a href="http://www.cs.toronto.edu/~graves/handwriting.html" rel="nofollow">http://www.cs.toronto.edu/~graves/handwriting.html</a>
This is similar to the project where images of clouds were fed to face recognition software: <a href="http://ssbkyh.com/works/cloud_face/" rel="nofollow">http://ssbkyh.com/works/cloud_face/</a>
Not strictly related, but reminded me of the exercise in genetic programming by Roger Alsing: <a href="http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/" rel="nofollow">http://rogeralsing.com/2008/12/07/genetic-programming-evolut...</a><p>It's a rather cool attempt to draw the Mona Lisa using random, semi-transparent polygons
This could be a cool way to visually "encrypt" messages. They're readable, but only by the correct tool. I wonder how these squiggles might be creatively arranged steganographicly in an image and still be "read" by the OCR tool.
Looks like he has written tons of very creative bots. They are all very interesting ideas (e.g. <a href="http://randomshopper.tumblr.com" rel="nofollow">http://randomshopper.tumblr.com</a>)
It would be pretty interesting to see one degree of abstraction up from this - what sets of lines are close enough to match a certain word?<p>If you averaged over all those sets, would the resulting blobby heatmap resemble the original word in a legible form? Or something else?
I can imagine generating a few pages or even an entire book of this, and some future generations attempting to figure out what sort of language it was written in... reminds me of this:<p><a href="http://en.wikipedia.org/wiki/Voynich_manuscript" rel="nofollow">http://en.wikipedia.org/wiki/Voynich_manuscript</a>
I highly recommend watching talk Darius Kazemi (author of Reverse OCR) gave at this years XOXO: <a href="http://www.youtube.com/watch?v=l_F9jxsfGCw" rel="nofollow">http://www.youtube.com/watch?v=l_F9jxsfGCw</a>
It has been fantastic watching Darius' myriad experiments over the past few years. His work always has a great mixture of whimsy and serious experimentation.
Here's the source code on github: <a href="https://github.com/dariusk/reverseocr" rel="nofollow">https://github.com/dariusk/reverseocr</a>
A generative model, although computationally expensive, would not suffer this problem. Essentially a generative model can run in reverse, which means that if you feed values into the output you get inputs that could explain the output. Check out "Boltzmann Machines" for an example. There are plenty of examples for the MNIST dataset of hand written digits.
I think one of the problems is that the OCR assumes the images to be (English) letters.<p>To be really really useful, the OCR would need to consider at least all characters in the Unicode Basic Multilingual Plane. And then it needs to be able to reject an image as containing any word, and then it needs to solve the halting problem.
This reminds me of an experiment I played with using random search to "teach" the browser how to draw characters: <a href="http://zwass.github.io/Learn2Write/" rel="nofollow">http://zwass.github.io/Learn2Write/</a>
This actually seems like a great program for automatically generating adversarial examples to improve OCR. A human could rate this text as being illegible or legible. Each example can then be added to the training data to improve its quality.
It would be neat to see the same thing, except using two OCR libraries instead of just one, and requiring both libraries to be able to read the message. I imagine the letters would start to look a bit less insane.
This is pretty cool, although it makes me wonder what the real world applications could be. It does, at the very least, tantalise my curiosity and gets me thinking.