In my experience, this task is incredibly difficult for generality.

Handcrafting based on the dataset is the only way to get high performance.