With a script.
If make the particle system only have a one frame lifetime then all will be created on frame 1
After pressing Convert (make real) will notice that Lattice.001 is with Suzanne.001, Lattice.002 is with Suzanne.002, ... we can use that.
Also give each lattice its own data so editing one doesn't affect all.
Here is a script select the plane and run script
context = bpy.context
scene = context.scene
ob = context.object # the plane
# make dupes real
# remove the ps
lattices = sorted(l.name for l in scene.objects if l.type == 'LATTICE'
suzannes = sorted(s.name for s in scene.objects if s.type == 'MESH'
for ln, sn in zip(lattices, suzannes):
suzanne = scene.objects.get(sn)
lattice = scene.objects.get(ln)
# give each lattice its own data
lattice.data = lattice.data.copy()
# set modifier to lattice
suzanne.modifiers.object = lattice
Note: Don't have any other objects other than originals starting with "Suzanne" or "Lattice" in the scene.
Worth noting could extend this to look for collection instances in the particle system settings and get the object names from the collection objects.