Blender - Plot viewport-independent 2D-Labels I am creating program that translates lithological data to colored 3D-columns which can be imported into Blender. Because the amount of single objects would be huge and disastrous on the readability in in the "outliner" (list of all objects), I am planning to accumulate them in one Wavefront (.obj) object. However, I would like to have labels (stations ids) for each lithological column. Blender seemingly only allows to display the name of objects in Object- and Edit-mode. 

Is there a way to at least label all lithological columns differently while keeping all columns in one single object? Maybe there exist an addon or a niche in the Blender Python API. As far as I know there would be the possibility to write a Python addon which scales and rotates 3D-text-objects according to the viewport movement of the user. Still, I am looking for plain 2D-text and the functionality is somewhere within Blender already, but not necessarily in the Blender Python API.

Thank you in advance!

EDIT:
I intented to do it without the Blender Game Engine. The text should be displayed somewhere over or adjacent the lithological columns (which depends on the current viewport). It would be good if the labels could be switched on and off, to not always interfere with the final results. Additionally, it would be beneficial to preserved the labels in rendered images as well but this is not a necessity. Distance dependent scalability is also optional. The main purpose is to identify the columns/locations while working with them.
The features in blender for this task are not so advanced, so I would suggest one of two options...


Load in Empty objects and name them usefully, enabling the objects display -> name option in the object buttons. 
(note, these names wont render)
Create 3d text objects for each name (reduce the curve resolution to ~4 or so, for faster display), these will render which is their main advantage.
(note, wont point towards the view though you could constrain them to face the camera).


You say that the amount of object would be huge and hard to view in the outliner. To workaround this you could...


Give them a parent, the outliner will nest them under the parent.
Put them on a second layer (probably a good idea anyway), then set the outliner to only view visible layers.


Other alternatives exist like using Python to draw text in the view-port or converting curve data to grease-pencil. But Im not sure these are worth the extra hassle of simply creating named empties or text objects.