I think I got it working.

The procedure is that you put the background image (named "background.png", the ticket without the number, but with 2014/) in a folder, together with the script below. Then, if you run the script (after editing the three lines in the head section):
The script produces numbers from 001 to 500 (but it can be any number you define in the head section)
Subsequently , using imagemagick:
the script creates (number by number) separate layers (files) with the number in the right position
- it copies the background layer + number layers into a new file, saved in the same folder, for each number.
- the script then removes the (temporary) additional layers

Notes
You may have to install imagemagick:
sudo apt-get install imagemagick
I used this free version of the font. It turned out that in the script, I had to set the absolute path to the font for it to work. I just copied it to ~/.fonts and used that path. In the head section of the script, set yours.
The script:
#!/usr/bin/env python3
import subprocess
import os
curr_path = os.path.dirname(os.path.abspath(__file__))
#---
number_of_tickets = 5
bg_file = curr_path+"/"+"background.png"
font = '/home/jacob/.fonts/dirt2 soulstalker.otf'
#---
def command(string, layer, position):
return "convert -size 2858x1000 xc:None -fill black -font "+'"'+font+'"'+\
" -stroke None -fill white -pointsize 123 -style Normal -gravity west -draw "+\
position+"'"+string+"'"+'" '+layer
def print_tofile(string, number):
print("creating file "+number+"."*3)
layer_1 = curr_path+"/"+number+"_a.png"
layer_2 = curr_path+"/"+number+"_b.png"
cmd_1 = command(string, layer_1, '"text 497,-420 ')
cmd_2 = command(string, layer_2, '"text 1035,-420 ')
subprocess.call(["/bin/bash", "-c", cmd_1])
subprocess.call(["/bin/bash", "-c", cmd_2])
cmd_3 = "convert "+bg_file+" "+layer_1+" "+layer_2+\
" -background None -layers merge "+curr_path+"/"+number+"_ticket.png"
subprocess.call(["/bin/bash", "-c", cmd_3])
os.remove(layer_1)
os.remove(layer_2)
print("done")
ns = [str(n) for n in range(number_of_tickets+1)][1:]
for item in ns:
number = str(int(3-len(item))*"0")+item
string = number
print_tofile(string, number)
How to use
Copy it into an empty file, in th head section of the script, set:
- the number of tickets
- the (absolute) path to the font
- the name of the background image (ticket without numbers) if you want to change it
and save it as numbering.py, together with your background image (2858px by 1000px), named background.png in one and the same folder.
Run it by the command:
python3 /path/to/script.py