We are currently training our rescue dog for recall, it is a long slog.
One thing I leant from watching youtube videos is to use the recall command ONLY when you can then make sure they come back.
eg recall command is Come! (don't use their name) on a long lead, call name, to get their attention, then Come! and if they don't immediately come you give a gently tug on the lead until he comes. Don't keep repeating the Come! Then once they are at your feet, reward.
So - Come! pause, tug, reward.
So that every single time he hears the Come! he ends up at your feet.
Do this whenever you practice until you don't need to tug and then until he responds quickly. We are at the point where he responds when on a lead, but only 50% when off.
(so still on long line)
When you do practice letting him off, find an enclosed space, and several people. Everyone has high value treats, stand in a wide circle, and call him back and forth across the circle, loads of praise and rewards. Do 5 minutes and then back on lead.
When I walk ours on long line, I call Come! about every 5 minutes, so he if constantly practising the command.
If off lead and he doesn't come back, don;t continue to call Come! as that teaches him that he doesn't need to come back for it.
Also, when you call his name, if he turns towards you, get really excited so he starts running to you and then say Come! which reinforces what he is already doing.
But I realise that you may have done all that and he still has crap recall! Our old dog had good recall unless he could smell food. Not kids ice creams etc, more like rubbish bins, and then he would take off after the smell, we'd find him under bush eating crap. We never cured him of that, but as it didn't hurt anyone except his own stomach, we lived with it.