A form is designed to be filled in by hand and read by a person who knows what the boxes mean. A model does not know what the boxes mean unless the record says so.
Extraction pipelines that flatten forms into text produce something that reads like a sentence and loses the only structure that mattered.
Key and value must stay paired
The label sits in one box, the value in another, sometimes on a different line. Flattened, the pair becomes a run of words, and which number belongs to which label is decided by proximity at read time.
That decision is where errors enter, and it is invisible in the output.
What a form record holds
- Field name, taken from the form's own label, not from a guess
- The value as written, plus a normalized version where the type is known
- Box coordinates for both label and value
- Whether the field was empty, struck through, or amended
- The page and the copy it came from
The third state matters. A corrected field is not noise; it is the most reliable signal on the page about what the person actually meant.
Handwriting is a distribution, not a difficulty setting
Cursive, block letters, the same form filled by a nurse at speed and by a clerk at leisure are different inputs. Collecting only the clean ones produces a model that fails in the field.
Keep the writer profile where it is available and report accuracy per profile.
Check the pairs, not the characters
Character accuracy can be high while the pairs are wrong. Score the record by whether each field-value pair is correct, and the real error rate appears.
Zovda builds these records through Datuva, where labels and values keep their boxes. The image collection shows the fields involved.
Tell us which forms your process depends on. We reply within one business day.
