I doubt LIDAR would be cost effective.
Without seeing it my first approach would be simple light beams. Detecting height that way is easy, you just direct a light to sensors across the width of the conveyor and see which ones are broken and which are not. It gets a little more complicated if the boxes are different widths but the same height or can be at different positions across the conveyor.
It comes down to how accurately you need to focus the barcode reader. The lines on bar codes are arranged so the exact width of the code isn't too important so if you are using a standard scanning reader you don't need perfect distancing. I would try light beams projected inward from just outside the conveyor edge and up to sensors at a suitable angle that any box would shadow at least one beam. That way if you read all the sensor states you could use a simple look-up table to find the size and position of the box.
Ultrasonics is an option but you would probably face them picking each other up unless you sequenced them so only one transmitter was active at a time.
Brian.