Bit corruption or?

If it's truly corruption due to bit rot, the data recovery labs are unlikely to be of help: If it were possible that due to bit rot a random bit changes, you'd have a hard time finding that bit. If more bits 'flip' it will become impossible to tell which bits it concerns and guess their original value. I can only comment on repairing digital images, but if for whatever reason such files are corrupt while most of the original data is still inside the file, this is a manual and time consuming process.

While it is true bits can flip because an analog value no longer meets a threshold value on the media to count as a '1' most drives can both detect this and correct using ECC. If too many bits corrupt in one block ECC will be able to detect but not correct. In that case the drive should and will respond with a read error, not with corrupt data.

In my experience most errors attributed to bit rot are actually caused by other issues:

enter image description here

In this case it was assumed by client files were 'bit corrupted' so he initially sent me a few of the corrupt files. After inspecting them I suggested to him file system was corrupt, he didn't need repair, he needed recovery. After he did several failed attempts drive was sent to me and I carved all photos, almost 100% success. So this was file system issue.

This is just one example, I get them more often. Most times non corrupted part is actually JPEG data, corrupt part contains 'foreign data' like file system structure, parts of different file types etc.. Some times JPEG data but clearly encoded with different settings, so part of a different file.

'Bit corruption' = file corruption

This is a case where files themselves were actually corrupt:

enter image description here

Repair is done file by file, manually. It basically does not matter what caused the corruption. There's no way a data recovery lab can do this for $2500 for an entire drive or array worth of data, if they can at all (most labs do not repair individual files).

Where a lab can help is get data from drives that become unresponsive due to read errors. You mention no such errors, you mention SMART deems the drive healthy. I expect a lab not to be able to magically repair individual files by drive repair or cloning them.

Where a lab can not help is with random file corruption. I have seen for example CF cards with bit corruption. Not due to the NAND being bad but due to the connection being bad. Files were saved corrupt to begin with. There is no way to recover from that. I was able to work out exact bit offsets within a sector where bits got 'stuck'. These are just 3 examples highlighted:

enter image description here

These can only be spotted here because what value is supposed to be. Impossible to tell correct value inside actual image data. In fact this file could not even be opened. This is the JPEG data decoded with a valid header from a reference file:

enter image description here

These files were corrupt from the moment they were written to the drive. There is no way to recover or repair them.

Corrupt files, if not caused by for example file system corruption, need to be examined and repaired file by file probably. Many file types are small file systems themselves with many pointers to data structures and the actual data. This is time consuming and expensive. For many file types you will find no repair tools. For repair of various RAW photo types, my main tool is a hex editor.

File system corruption

If root cause is file system issues, file carving is often an option. That's how I recovered the files from illustration 1.

Since this is an array, first step would be to remove drives from the enclosure and image the individual drives.

As a next step the array needs to be (virtually) rebuild. This may be do-able using Linux, or else data recovery software exists that can help with this. For example ReclaiMe Free RAID can reconstruct arrays and export them to a disk image. The disk image can then be scanned using file recovery software. Again, if files are internally corrupt, then this will yield no results.

This is an interesting problem to ponder, but not an easy one.