I was also thinking about a 2 meter tape measure. But you don't need any fancy image recognition, just a few optical readers (photocells focused on the scale). And a mark on the back or a small hole drilled in the tape can serve as the zero reference. A few logic chips or a processor like Arduino or just a plain PIC could easily handle the logic.
A friend located in Estonia sent me a very unique "soviet ultrasonic sensor", and I made a contact-less measuring unit under the precision of 50mm, with a range of 300...900mm. It requires a very precise 16bit timer able to operate with a scale of 10usec. Nice piece of semi-vintage technology (I think the ultrasonic parts were made in 2010) but in original soviet color and shape. It's big and heavy, and looks like something bade during the cold war, but I like it.
Then I bought a couple of industrial meter-tape units, and I attached an optical-flow on the top, this way the optical sensor is able to read the marks on the tape. It works with the precision of 2mm, with a range of 10..1200mm. It requires a 50Kbit/sec SPI line and 2Kbyte of ram of the pattern-image.