API documentation

User experience

Developers using WineEngine often ask for advice on creating the best user experience. Here are our recommendations.

Mobile apps are all about quick and easy results with as little thinking as possible. For an app with a tight focus, ease of use comes from having as few interactions and as few choices as possible. User satisfaction comes from immediate feedback and results. Every quarter-second counts!

Ease of use

To make your app quick and simple to use there should be as few screen taps as possible to perform a search. Ideally, the user would do the following:

  1. Tap once to start a search. We recommend that this tap should launch camera mode, without first asking if the user wants to use an existing photo. If using an existing photo is possible, add an icon to do this that is visible from your camera-mode screen.

  2. The first time a user opens your app, show them a simple one page guide on how to take a good photo with an example. Only show this page again if the user requests it.

  3. Launch camera mode as soon as possible. If using an existing photo is possible, add an icon to do this that is visible from your camera-mode screen. If your app’s main focus is recognizing items using image recognition, then your app can launch directly into camera mode, skipping step 1.

  4. Tap once to take the photo. If you have a “preview image” screen that allows the user to approve the photo they took, initiate the Search call in the background even before the user gives approval. This improves the app’s responsiveness for the vast majority of occasions when users do approve the preview.

    We also recommend that you do now have the app user manually crop their photos as this complicates their experience and is rarely necessary.

  5. Let the user know what’s happening while they wait. While your app is sending the photo, show the user the photo they took while updating them on the progress of the search. E.g. “Sending photo” “Recognizing image”

  6. Display the best match identified by WineEngine, or another action if the object is not recognized.

Optimizing query images for speed

There are two main phases that contribute to the time it takes to get results: sending the query image over WiFi/3G/4G/LTE, etc., and performing the search in WineEngine. Both of these are affected by the size of the query image. WineEngine scales large query images to 1000 pixels in the smallest dimension when they are received, which takes time; scaling them to exactly that size before sending will save transmission time, and also saves time by eliminating the scaling step after receipt.

Optimizing collection images for best results

The images you add to your collection should be 1000 pixels or larger in the smallest dimension. Larger images will not make for better matches, since the API scales larger images down before indexing. Because adding collection images is usually less time critical then searching for images, it is typically less important to pre-scale images to exactly this size before sending them to the API.

Your collection images should concentrate on the label and avoid background clutter and unimportant parts of the bottle. However, because of WineEngine‘s label detection feature, it is no longer crucial to strictly crop the image to only contain the label. If possible, shoot against a uniform blank background. Objects should be shot straight-on and upright.

Having multiple images for a given label is good practice. Having a clean scanned label and one or more photos of the label on a bottle is ideal.

Although the image will match no matter how it is rotated, the picture of the bottle should be as upright as possible to accurately detect the vintage.