I too have struggled with this, so I'll share a few things that I do to help ease the awkwardness. Oftentimes when two people approach a door at the same time, one will open it for the other.
If one person is holding the door for the other, the body language is very simple to read.
When I am holding a door open (and I've noticed the same of others holding the door for me), I will step to the side to make it clear that I'm waiting for the other person. So when you approach a door at the same time as someone else, check to see if they have moved to the side to let you pass.
Another piece of body language is the hand gesture. If for instance the door opens next to a wall where one can't step to the side, it's very common to extend your hand, palm up, and make a gesture to indicate that the other person should walk through.
When you should allow the other person through
Knowing what body language to look for is good, but we also need to talk about when to use it. As I'll talk about a bit later, it's usually good to let people exit before you enter. An easy facilitator of this is that doors often open towards the outside. This is important because the most common pattern is for the person on the side that the door opens to hold it (basically, hold the door when you have to pull on it to open it).
When nobody is holding the door
I don't know if this is the same where you live, but where I live, the general rule of thumb is to let whoever is exiting go first. This is most common on public transit (we even have PA announcements reminding everyone to let people exit first before entering), but we also do it for buildings (though most buildings here have revolving doors that facilitate 2 way traffic).
Unfortunately, these tips may not entirely eliminate your awkward interactions. I've been following the "exiting person goes first" concept for as long as I've lived in a highly populated city, and it works about 95% of the time, but you will occasionally run into someone in a hurry who is just going to go through the door first regardless. One other thing when in doubt, I typically wait for the other person to go first, because it's just a kind thing to do, and I try not to be in a hurry.