Prodigy ner.batch-train vs Spacy train

I think what's happening here is that the spacy train command expects the base model you want to update to already have all labels added that you want to train. (It processes the data as a stream, so it's not going to compile all labels upfront and silently add them on the fly.) So if you want to update an existing pretrained model and add a new label, you should be able to just add the label and save out the base model:

ner = nlp.get_pipe("ner")
ner.add_label("YOUR_LABEL")
nlp.to_disk("./base-model")