I wrote a script that does that. It scans through all the blob files and build its "paths" in the ZODB by walking through the back references. This way one can identify to which content items each blob belongs. Example:
INFO [15:21:11] diagnose_blobs: Processing blob 164224 of 164224 (100%)...
Blob path: REDACTED/var/blobstorage/0x00/0x00/0x00/0x00/0x01/0x7c/0x15/0x64/0x03ca32f679680244.blob
Blob hash: (d41d8cd98f00b204e9800998ecf8427e,0)
obj: <ZODB.blob.Blob object at 0x7f5df0e6f140>
It was not straightforward for me, because I've never worked with ZODB at such a low level. Maybe I did things harder than it should be, because I was learning as I went.
I was very impressed because my DB had about 160k blobs, and none of them was there without a reason. Kudos to the ZODB folks!
On the other hand I learned that image scales accumulated, because the site makes heavy use of them. At this moment I'm writing a script to run periodically and remove old image scales.
Anyway, if there is enough interest I can polish the script and publish it. There are some ad-hoc things that I must remove first.