Mostly good suggestions, but the machine-readable barcode is not one of them. People without smartphones (or the mental capacity to use them to verify the barcodes) will still be disenfranchised and/or confused. Instead, the ballot-tallying machine should read the same printed text the human sees, using OCR.
It’s purely a UX problem. Always remember that voting exists for the humans — we don’t exist to do data entry on voting machines.