Surprisingly, none that I've come across are totally accurate.
Illustrator has one built in it now. "Recolor Artwork". I make selections, and pick a color by eye. But I'm sure you want one that does it automatically.
The problem with this is that when you have gradients, and it's CMYK art or RGB art, it will give you thousands of spot color. BUT, if you re-work the results using Recolor artwork, you can force it to narrow the art down to a limited number of spot colors. It takes time tho.