Visually recognizing items is one of those tasks that is very simple for humans but very difficult for machines. Some solutions for visual recognition require that the item is in a very specific position, limit the number of items that may be recognized, or require that a distinctive mark be placed on the item, such as multi-line barcodes or matrix barcodes.
But these solutions do not solve the general problem of quick recognition of any item from a large number of possible items in an uncontrolled environment where the items may be situated in any position, such as items sold at a checkout counter.