From my experience it helps me to keep the Activity time consistent throughout the day and if it changes at all I change it on the shorter end. 2 hours is about the max that MOST (not all) babies can happily be awake at this age. It seems that your son has 1.5 hours in the morning (7-8:30) then 1.5 again....then it goes to 2.5 (12-2:30) then 3.5 (3:30-7). By the end of the day he might be overtired and not want to be awake that long. You might want to try and keep to about two hours throughout the day and see if it helps you at all. Naps are not always going to be 2-3 hours and if he is getting solid 1 hour naps then that might be all he needs. How is he waking up?? Once you get him up after one of these naps is he happy to play until the next sleep time??
He might need another little catnap in there around 5:30 or so until either he extends some of the other naps or extends his wake time a bit so that he can make it to bedtime. If you are getting hour long naps maybe you could try:
7wake
8:30-9:30 nap
11:30-12:30 nap
2:30-3:30 nap
5:30-6 nap (even if you have to wake him to protect bedtime)
7 Bed
Or....
6 wake
8 -9 nap
11-12 nap
2-3 nap
5 catnap
6:30 bed
Hang in there, I know it is so hard sometimes. Your schedule doesn't look bad at all so try not to lose perspective. There is NO perfect routine and very few babies are going to follow the perscribed schedule. Remember some very healthy babies need to eat at night until they are 9 months old. They are just plain hungry! Some babies are short nappers. The most important thing to look at is if your son is content. If he is miserable and tired all of the time then ok, you might need to work to make some changes. But if he seems happy then you just have to go with it. You have to find what works for him and use other schedules as a guide and not the law. After all he is only 3 months old, give him and YOURSELF a break. This mommy stuff is hard so go easy on yourself. You are not out of control!! Your baby will never be worse off if you have to cuddle him or rock him to sleep in order to get some rest. When you feel better then tackle the sleep training. Or work on one nap a day. Gear up for that one nap with trying to get him so sleep independently or trying to extend. But set a time limit for yourself if you have. Say do it for 30 mins and if you are miserable after that time, take it easy and attempt again tomorrow. Just enjoy him right now and work on getting yourself better. I promise it will get easier and it goes sooo fast!! Sooner than you think you will have a little toddler on your hands giving you different sorts of troubles