Empty cells are another useful row-level control. Some extractors omit them entirely, shifting the remaining values left and producing fluent text with the wrong column assignments. A row with a blank rate and a populated duration can reveal that failure more clearly than a fully populated row.
I would preserve explicit empty-cell positions in the representation, then check the same row after a page break or repeated header. That extends your acceptance record with a structural failure that can survive text extraction, while keeping the expected result grounded in the original cell coordinates.