Plant Hunter - A Prototype
I've been working on something fun over the last few weeks. As someone who likes to build stuff in the real world as well as on the internet I've often lamented that there wasn't a larger intersection between the gardening world and the software engineering world. As I've admitted in the past I've got a bit of 'collector personality disorder' happening when it comes to buying plants... I'm pretty sure some of you do as well :) A big part of collecting things you love is sharing your "finds" with kindred souls. Even if you don't buy it - there is still value in spotting a plant and sharing the details with others. With that context I introduce ... Plant Hunter which is a way to document the price and location of those treasures and share them with other plantaholics.
Here I am at the store that shall remain nameless taking a picture and capturing details in the field.
For this prototype I built just enough interface to understand how to best structure the workflow so apologies if the screens below look basic :) Ok - lets get started!
Step 1: Take a picture through the web app. (It's also possible to upload existing pictures already on your phone.)
Step 2: Crop away all but the pertinent details found in the plant label. This is important because it helps with accuracy during the image to text translation step. ( don't worry the original image will be saved) To help images tilted off level I've added some simple controls that rotate the source by a few degrees at a time.
Step 3: Once the image is cropped some behind the scenes pre-processing automatically takes place to help with image to text translation quality.
We may get words from the image but it's difficult to make
assumptions about a plant label's structure because they come in so many
varieties! There is no universal plant label format. They may or may
not contain information about pot size, price, grower, retail nursery, a
bar code, a QR code, water and sun requirements, use in the garden,
etc, etc. Of course how and where this information is organized will
vary from label to label as well. One assumption I do make is that the
label contains the plant name.
The quality of text so far has been highly variable in part because the labels are sticking to the curved surface of a pot which introduces "skew". Curved words make it hard for the OCR engine to do it's job. This is something I need to work on but for now taking a decent, close up shot helps a lot.
When there isn't enough information to determine the plant name the user can always fine tune the selection from a list of plants that contain the same keywords.
Step 4: collects information about where you spotted the plant.
Above is the last step - a quick confirmation before your "field report" (including pictures) is saved to a database in the cloud.
Once saved, the plant details will be aggregated with other field reports and made available to fellow plantaholics for searching, sorting, viewing on maps etc ... that's the next step whose details are not fully flushed out just yet.
For good measure - below is a screenshot showing how the plant and it's details look in the cloud store (database).
Putting my user hat on - I think it would be interesting to discover availability and price of any given plant across an ever growing set of retail outlets. It's one thing to read about a plant and plan on using it in your garden someday - it's another thing to know where you can buy the plant, if it's competitively priced, and possibly even historic price information. Frankly just knowing a little bit about what my local nursery has in stock would be useful. Currently the only alternative is to visit the store.
To be honest this prototype is not ready for prime time but I wanted to share the general idea and solicit some feedback. What do you think? Is this something you would even use? Would you want to save other details about a plant? Do you think a picture of the plant itself is worth saving? Do you think taking lots of pictures upfront on your phone and saving the rest of the workflow for a desktop experience would be better?
Looking forward to any feedback!