QR codes come with (differing levels of) error correction. You could decode it and take the amount of corrected errors as a score.
I don't know what unit/chunk of data the error correction works on but you could alternatively dive a bit into information theory and calculate how close any of the chunks are to an uncorrectable error and use that as a score.
Since the first uncorrectable error will cause the scan to fail this would match your problem definition fairly well.
One benefit of this approach would be that it's a single scan and done vs searching n permutations of the same code.
Or maybe you'd want to scan it a couple of times to rule out any additional errors introduced by the camera or environment.