Replace per-cell word filtering (which allowed the same word to appear in
multiple columns due to padded overlap) with exclusive nearest-center
assignment. Each word is assigned to exactly one column per row.
Also use row height as Y-tolerance for text assembly so words within
the same row (e.g. "Maus, Mäuse") are always grouped on one line.
Fixes: words leaking into wrong columns, missing words, duplicate words.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>