def extract_capacities(data):
    """
    Extracts and calculates capacities from given data.

    Args:
        data (list): List of tuples containing capacity data.

    Returns:
        list: List of dictionaries with extracted and calculated capacities.
    """
    result = []
    for item in data:
        v5, capacity, voltage, current = item
        efficiency = (voltage * current) / 1000
        result.append({
            'id': v5,
            'capacity': capacity,
            'efficiency': efficiency
        })
    return result

# Example usage:
data = [('v5_1768236144', 108217.11959687909, 721, 15009.3),
        ('v5_1768235312', 89435.63603047856, 734, 12184.7),
        ('v5_1768235983', 98379.19963352643, 987, 9967.5)]

print(extract_capacities(data))