Not sure how true it is for CD-ROM, but certainly for CD-Audio you can do a lot better at the SCSI or MMC level than you can at the block level (where "dd" and "ddrescue" operate), because some drives are capable of telling you which bytes in the sector it failed to read, rather than just whether the whole sector is good or not. If you've got several iffy bits in the same sector, that facility makes it much easier to assemble one correct read out of several partially-correct ones.

Peter