Just ask the people to upload a picture, period. Even people who have a nonsmart-phone should be able to easily do that. And the people completely without a phone surely have a camera somewhere.
The duplicate part shouldn't be a problem at all. Each receipt has unique information on it.
You have two ways to recognize uniqueness
- A combination of store, terminal number, and time; if not unique, add items. Practically nobody gets two receipts from the same store in the same minute. In the rare case where this happens, the items will be different (e.g. because someone bought multiple items, but wanted to pay some of them with private money and others with funds of some organisation he belongs to).
- Find out if there is a unique number to the receipt or transaction, then a combination of the store and transaction number will suffice. On my picture, the TA-Nr in the middle (just below Terminal-ID) and the unlabeled 7-digit number in the lower right are good candidates.
If you have a very small number of stores/chains participating, you could create an OCR system which knows where to look for the unique data on the receipt of each store, and automatically bar people from uploading the same receipt twice. But this is quite a lot of work, especially if you have to support many stores with different receipt layouts.
The way I would go is to allow people to upload whatever they want, without checking for dupes. Once a winning person has been chosen, somebody goes manually through all the pictures the winner has uploaded and compares them based on the numbers mentioned above. If duplicates are found, the "winner" is disqualified and another one is selected, until you find somebody who did not upload duplicates.
The problems with this system: 1) different people could reuse the same receipt. You can reduce the probability by checking the picture files for being the same, or maybe use some picture recognition algorithms to compare them for one picture being a crop of the other. You cannot stop it from happening completely with the solution above, because they can take many pictures of the same receipt. But I think this is a risk most organisers will be willing to take, especially if participants don't know how well you can recognize duplicates.
And 2), there is a risk that somebody will forget they already entered their receipt and enter it a second time by honest mistake, disqualifying themselves. As you are already gathering personal information anyway (I assume you are), you could also give them the opportunity to have something like an account (openID login will be probably easiest for both sides, don't make them remember a password for this occasion) where they can control what they have entered already.