In bash, and with imagemagick installed,
cat label.txt | for i in *.png ; do read l || break ; convert $i label:"$l" -append out/$i ; done
would do the trick.
Assuming that you have a bunch of png images, and a label.txt file containing one line of text per image, and that, of course, lines of text are in the same order than files appears in *.png (that is alphabetic order)
That can obviously be tuned. But you have to decide a way to match each line of text with an image (number the files, or prefixing lines of label with the filename, etc)
Note that I've tested that on an Linux machine, but nowadays, as far as I understand, you have bash even on windows. And a Mac is already a Unix machine.
So, that, or a variant of that, should be possible with any machine.
2nd note: the key part of the command, of course, is
convert inputImageFileme label:"a text" -append outputImageFilename
convert cat.png label:"Cute cat" -append catWithLabel.png
The rest (for, read, etc) is just about doing the same on all images, and choosing the text line to do so. Since you haven't given details on the format of the "lines of text", nor about the organisation of your files (how do you know which line of text goes onto which image file), it is impossible to be accurate on that part.
Please describe accurately what you have. Or give a partial example of you files.
Just guessing : if you have N image files
and N text files
then, quite similarily to my first command, you can do this :
n=1; while true; do image=$(printf "image%d.png" $n); text=$(printf "image%d.txt" $n); [[ -f "$image" ]] || break ; convert "$image" label:$(cat "$text") -append out/$image ; ((n++)) ; done
Or, same command, but with indentation (that you can copy into a script) :
n=1 # first image file will be image1.png
while true # for ever loop
image=$(printf "image%d.png" $n) # image is the filename of the nth image : example, image12.png, for n=2
text=$(printf "image%d.txt" $n) # same for text file
[[ -f "$image" ]] || break # if the image file does not exist, we end the (otherwise infinite) loop
convert "$image" label:$(cat "$text") -append out/$image # append the image and the label contained in the text file, and generate out/imageNNNN.png with the result
((n++)) # n become the next number
done # end of the loop
If you copy that into a script, and excute it (in a bash windows on a machine with imagemagick installed, that is "convert") it will do the trick...