Reading the QR code spec (or even just the wikipedia page) could help a lot here. A lot of the room on the code is taken up by metadata, rather than output-data. The output data is repeated lots of times across the code (this is why you can have a brand logo right in the middle of the code). Repairing the metadata parts & iterating over each of the version number should make the overwhelming majority of broken QR cod…
In practice, I mostly I find that the corners are the most finicky part. However, that is just my current opinion.