Using captchas to provide map data

I had this idea about making captchas, this annoying images of unreadable text, a little more intuitive and useful.
The approach is similar to reCAPTCHA, though I would find it less annoying:

Why not have people solve simple recognition tasks on aerial imagery?

The captcha would contain a small aerial image and the user would have to solve a simple task like “draw a circle around a lake” or “click on 5 houses on the image”.
The results would be compared with results of other people and already existing data, so the captcha would be very hard to solve for a bot (as it would be very hard for a bot to draw maps, that’s why we do it) and at the same time we would get approximately good results.

Technical Background

  • i thought of HTML5-canvas as the basis for the client side. there you could draw points, lines, polygons and free hand paths. And by now it’s supported by any modern browser (even good old IE)

  • the server would load a random piece of aerial imagery (well, not entirely random, more on that later)

  • the client would solve the task and send back the coordinates of his input

  • the server does a plausibility-check and lets the user pass (or not)


There would be different tasks for different qualities of data in the source:

  • Level 0: Recognition
    Used on regions with very few or no mapping data exists at all. The problem is that we have no way of making plausibility-checks for the first few people that click on unknown terretory, but if we have 100 people at a time trying the same image it’s an easy task to compare results. Possible questions:

  • Draw a line along any road you see

  • Click on the roof of a building

  • Draw a circle around a forest / lake / village, etc.

[/*] [*]**Level 1: Verifying recognized places** We take the data from level 0, mix it with some random other inputs and present it to the user. The user has to mark the incorrect data on the map. We know that our random data is most probably incorrect and that the data from other users is at least not totally random, so we can tell if the user is lying. Possible questions:
  • At which of the marked location stands no house?

  • Which of the marked areas is not inside a forest?

  • Click on any line that is not near a road

[/*] [*]**Level 2: Drawing recognized stuff** As soon as we know that there is a building, road, town or lake, we can ask people to draw paths or shapes. Of course we need to keep it simple, so for huge things we would only ask to draw a part of it, e.g. the shore of a lake in the highlighted region. The results are compared with the other user's inputs and we can also check for plausibility using static image analysis (e.g. the shore of a lake or the edges of a house should have a pretty high contrast). Questions:
  • Draw a path around the house marked on the map

  • Draw the shore of the lake in the highlighted region

  • Retrace the road in the highlighted region

[/*] [/list]


Can we already import the data into OSM? Well, that depends on the quality of the data and that’s a thing that I don’t want to leave only to the captcha-solvers, so here’s my idea on that:

  • The results are uploaded on a dedicated server, where real mappers can look through all the captcha-results

  • To make this efficient, the captchas are placed in a matter so that they are not spread randomly over the world, but concentrate on a few regions (which could be decided by the mappers that care for the system, for example)

  • When a new resultset comes in, the mapper can look over it, make some final changes, put it in context (e.g. creating the connection to a road of the neighbor region) and then mark it as reviewed.

  • The reviewed contents can be uploaded to OSM directly, or you could introduce a policy to doulbe-check, or you could make a mini-game out of it where users get points for regions they review… anything that motivates :slight_smile:

The alternative to captcha solving would be to make a minigame out of this, as proposed in this post, but i kind of like the idea to make the crowd also work for OSM instead of just Google books.
I’m a programmer and I’m currently searching an interesting topic for my bachelor thesis, so this might be just what I’ve been looking for (though I’m a little worried I might fail on it because it’s too complex)

What do you think about it?

What about licensing?

I am also wondering how you would match the shapes that people draw - say, 100 people draw n segments of a lake shore - are you going to average the segments? When a new drawing of a segment comes in, how are you going to check against the existing drawings, set up a threshold for how much the drawn segment differs from the collection of existing segments? What about lazy users who draw crude shapes, are you going to reject them?

Just a couple thoughts off the top of my head.

There are some similar crowdsourcing ideas in this thread: