A QR code is a grid of hard-edged black and white modules. Blur happens when those edges soften: a small PNG enlarged for print, a JPEG re-save that smears edges with compression artifacts, a photo taken out of focus, or ink spread on a low-DPI print. Each one turns crisp modules into ambiguous gray.
Photo sharpening filters cannot undo this, because they guess at edges — and a QR scanner needs the modules exactly right, not approximately right. The reliable repair is different: read whatever data survives in the damaged image (QR error correction means a lot usually survives), then regenerate a mathematically perfect code from that data.
That regenerated code is not an enhanced copy of your blurry image — it is a brand-new code carrying the same destination, rendered at full sharpness at whatever size you need.