I am running a functional annotation using blast2GO (blastp). Some descriptors are "uncharacterized protein", however the second blast hit have the same same score and a protein description. Can I improve the annotation automatically in order to retrieve the second hit?
short answer, I'm afraid not. That is the downside of those automatic procedures.
What you could consider doing is: check if those 'uncharacterised protein' hits are all (or mostly) derived for instance from a single species/genome in your blastDB. If so, remove that one from the DB and run your analysis again. However: KEEP IN MIND that this will/might create a bias in your analysis (as you might remove the 'best hit' by doing so)