A Valid JSON Object Can Still Be a Wrong Answer
Structured output can make a model response easier to parse. It cannot tell you whether the invoice number or amount was extracted correctly.
Try a synthetic invoice with a subtotal, tax and total. Ask an OpenAI model to return a small structured record, then independently compare the chosen amount with the field your workflow actually needs. Test a document where that field is absent as well.
Handle refusal and incomplete responses explicitly instead of coercing them into empty success records. Keep schema validation and business validation as separate checks. Your next step needs to know both that it received the expected shape and that the values have enough supporting evidence to be used.