Since English has no way to mark the accusative case explicitly, the only way to tell the direct object is to find an object without a preposition before it. In your sentence neither object has a preposition, so there is no way you can deny that both objects are direct, at least formally, judging by their form and the syntax of the whole sentence. Because of this, English is a language that can have two direct objects of a verb, and that can easily be proved: She taught him Spanish has 2 direct objects, if you remove one of them you can easily see that:
She taught him. - "him" is the direct object.
She taught Spanish. - "Spanish" is the direct object.
If you abstragate from the formal grammar and look at the meaning of the words and at the situation described in the sentence, it is easy to find out what the action is directed at and who it is intended for, but anyway this difference is not expressed in the English sentence. The order in which the objects are put after the verb doesn't tell about their nature, if a verb has two direct objects we can easily transform the sentence so that to make each of the objects indirect:
She taught Spanish to him. - "to him" is the indirect object.
She taught him about Spanish. - "about Spanish" is the indirect object.
That is why the very idea of a distinction between the direct vs. indirect object becomes vanishingly vague when we speak about English.