Smart UV Unwrap Multiple Objects
Scripting with Python

As you mentioned, Smart Unwrap in object mode takes all the objects as a whole. It's more useful to create a texture atlas, rather than individual UV maps.

Like in most scenarios where a tedius task must be done several times, you can try to automate the process with python code. 
You can write a script that iterates through all the selected object of the scene, enter edit mode for each object, select all the elements of the object an run the smart_project() function.

Here's what a possible script could look like:

import bpy

if bpy.context.selected_objects != []:
    for obj in bpy.context.selected_objects: #loop through all the selected objects
        if obj.type == 'MESH':
            bpy.context.scene.objects.active = obj
            bpy.ops.object.editmode_toggle() #entering edit mode
            bpy.ops.mesh.select_all(action='SELECT') #select all objects elements
            bpy.ops.uv.smart_project() #the actual unwrapping operation
            bpy.ops.object.editmode_toggle() #exiting edit mode