Use the nbd system (network block devices) and qemu to create a qcow2 image with your defective device as the base device. Serve this qcow2 image with qemu-nbd and attach it as a NBD device locally. Then run fsck or testdisk on the NBD device. This will let you repair the filesystem Linux sees without writing to the disk. Testdisk can scan for any filesystems left on the device if the partitions no longer match filesystems.
Also, if all else fails use photorec to slice the file types you need.
Also, ddrescue can try to read any actually failing sectors and work out what they contain, but puts a lot of stress on the device.
Beware, any method that puts more wear on the disk should not be used unless you’re willing to accept the risk that the drive could get worse.