For most crimes, the witness' disposition goes down, so you could maybe detect witnesses but I can't think of any way to determine exactly who reported it. For theft, it seems that the amount of the disposition drop depends on the value of the item you stole. It doesn't seem to matter who owned the item though.
Out of curiosity I did some crime experiments on Arrille. Also in the room is Tolvise Othralen. Both have a starting disposition to me of 40.
I don't know how useful any of this is to you, but I found it interesting and might as well post the data.
Stole a bottle (1gp) on Arrille's counter, which belongs to Elone - dispositions of both him and Tolvise stayed at 40, even though it was seen and reported and they attacked me.Added a bowl (5gp) on the floor that belongs to Fargoth, who isn't in the building. Stole it, disposition of Arrille and Tolvise dropped to 38.Stole a book (25gp) which belongs to Arrille, disposition of him and Tolvise dropped to 28. [So they always seem to drop by 1/2 value rounded down.]Stole a pitcher (12gp) upstairs which belongs to Elone, disposition of Hrisskar dropped only by 2 points from 85 to 83. Maybe because we're both Nords?pickpocket Arrille, I saw an item and tried but failed to take it - disposition dropped to 0, Tolvise stayed the same. Bounty went to 100, even though I didn't succeed.pickpocket Arrille, saw an item, closed without trying to take - disposition dropped to 15, Tolvise stayed the same. Bounty 25.pickpocket Arrille, didn't see any items - disposition dropped to 15, Tolvise stayed the same. Bounty 25.pickpocket Arrille, successfully stole 2 scrolls but was caught - disposition dropped to 15, Tolvise's disposition stayed the same. Didn't check the bounty.assault Arrille - his disposition dropped to 25, and Tolvise's dropped to 0! I guess she likes him. Both attacked me. Tried the opposite, assault on Tolvise, and her disposition dropped to 25, Arrille's to 0. So witnesses get more angry than the victim in an assault.
When pickpocketed, only the victim notices, but when you steal an item in the open, or assault, then others will witness it and react. They drop disposition and usually attack.
Theoretically you could detect if somebody witnessed a crime by detecting a drop in the NPC's disposition at the same time as an increase in player's bounty. That won't mean they reported it though, and you'd have to check each NPC individually.
=====
I could be wrong, but I'm pretty sure the game doesn't retain any info on exactly what crime you committed, it just remembers the total bounty.
This wasn't quite right. It may not remember long-term, but I just noticed there's a scripting function called OnMurder which is set to 1 for one frame when the calling actor is murdered. So a script could detect murder at the moment it occurs. I don't see any function that detects theft though.