Čo má robiť model a čo má robiť kód
Pri rozpoznávaní cenoviek z fotografií sa ukázalo jednoduché pravidlo: model nech rozumie obrazu, čísla nech overí kód.
Zbierať ceny konkurencie znamená v praxi odfotiť regál a potom prepisovať. Riešenie sa ponúka samo: nech to prečíta vizuálny model. Prvá verzia tak aj vyzerala a fungovala prekvapivo dobre, kým sme nezačali kontrolovať výsledky.
Model občas prečítal cenu správne, ale čiarový kód uhádol. Nie zle prečítal — uhádol, a to vierohodne. Trinásťmiestne číslo, ktoré vyzerá ako EAN a nie je ním, sa v CSV nedá odlíšiť od správneho.
Riešením nebol lepší model, ale rozdelenie práce. Čiarové kódy dekóduje špecializovaná knižnica priamo z obrazu, deterministicky a s jednoznačným výsledkom: buď kód prečíta, alebo povie, že nie. Model dostáva na starosť to, v čom je nenahraditeľný — pochopiť, ktorá z troch cien na cenovke je tá platná, či ide o akciu a ktorý text je názov produktu.
Nad tým je tretia vrstva, validácia. Kontrolná číslica EAN sa dá overiť výpočtom. Cena mimo rozumného rozsahu je podozrivá. Ak sa akcia deteguje farebne aj textovo a obe metódy si protirečia, záznam sa označí ako neistý namiesto toho, aby sa uhádol.
Výsledok je nudný a to je dobre. Deterministickú vrstvu pokrýva stopäťdesiat testov, ktoré bežia bez pripojenia a bez platených volaní. Model sa volá raz na fotografiu a jeho výstup sa vždy overuje.
Zovšeobecnenie, ktoré si z toho odnášame: keď sa v úlohe dá niečo overiť výpočtom, nikdy to nenechávajte na model. Nie preto, že by to nezvládol, ale preto, že keď to raz nezvládne, nespoznáte to.