Szkennelt oldalak vizuális analízise

Szkennelt oldalak vizuális analízise

A dokumentum-feldolgozás mesterséges intelligenciája gyakran a „fekete doboz” mítoszában él: beteszünk egy szkennelt vagy generált dokumentumot, és kijön a strukturált adat. A valóság azonban jóval messzebb áll ettől. A szkennerek, a mobiltelefonok kamerái és a különböző minőségű inputok miatt az oldalakat és az azokon szemmel látható pixeleket ritkán lehet „tiszta” adatnak nevezni.

Nemrégiben egy olyan projekten dolgoztunk, ahol a egy feldolgozó rendszernek kellett minden dokumentumoldalról pontos, géppel értelmezhető metaadatokat szolgáltatnunk. A feladat kulcsa egy szigorúan definiált JSON schema volt, amely nemcsak annotációs segédletként szolgált, hanem valójában egy előfeldolgozási pipeline-t kódolt le. Ebben a rövid post-ban bemutatjuk, hogyan építettük fel ezt a struktúrát, miért kritikusak a látszólag apró szabályok, és milyen tanulságokat vonhatunk le belőle a dokumentum-előfeldolgozási projektek számára.

A kihívás: Miért olyan kaotikusak a szkennelt, vagy fotózott dokumentumok?

Mielőtt bármely OCR vagy NLP modell elkezdené értelmezni egy oldalt, három alapvető probléma merül fel:

  1. Geometriai torzítások: A dokumentumok gyakran elforgatva, vagy fejjel lefele kerülnek be a rendszerbe, ráadásul egy lapon belül többféle forgatási irány is előfordulhat.
  2. Jel-zaj arány: A hátoldalak, a szkennelési zaj, a vízjelek vagy a nyomtatott sablonok elmoshatják, torzíthatják a valódi tartalmat.
  3. Jogi és folyamatkritikus elemek: Aláírások, bélyegzők, azonosító adatok pontos felismerése nélkülözhetetlen a compliance és az automatizálás szempontjából.

Ezeket a problémákat nem lehet „utólag” javítani anélkül, hogy a modellnek előre jeleznénk a kontextust. Itt lép képbe a strukturált annotáció.

A JSON schema mint előfeldolgozási motor

A projektünk során a következő mezőkből álló objektumot kellett minden oldalhoz generálnunk:

MezőTípusCél
image_qualitystringA szkennelés vizuális minősége
image_contentsstringA képi tartalom leírása
is_rotatedbooleanA szöveg el van forgatva?
rotation_angleintegerAz óramutató járásával megegyező elforgatás mértéke
corrective_rotation_angleintegerA helyes tájoláshoz szükséges javító forgatás
is_back_sidebooleanTartalommentes oldal kiszűrése
has_signaturesbooleanKézi aláírások jelenlétének jelzése

Nézzük meg, miért nem triviális ezen mezők pontos kitöltése, és milyen logikát rejtnek.


Az „azt láttad-e, amit láttál?” elv

image_quality mező rövid, de döntő jelentőségű: egy „blurry” vagy „low contrast” jelölés már az elején figyelmeztetheti a downstream modelleket, hogy alacsonyabb képminőséget feltételezve dolgozzanak.

image_contents ennél szigorúbb. A schema expliciten tiltja a szövegfordítást és a jelentésfeloldást. Csak a vizuálisan jelenlévő elemeket kell leírni: típus, nyelv, elrendezés (fejlécek, táblázatok, űrlapmezők), logók, vonalkódok, bélyegzők. Miért? Mert a modelleknek nem a jelentést, hanem a vizuális mintázatokat kell megtanulniuk. Ha az annotátorok elkezdnek „feloldani” vagy fordítani, a modell hallucinálni kezd, és elveszíti a generalizációs képességét.


A forgatás rejtelmei

Ez a projekt legszabályozottabb része. A gyakorlatban sokan összekeverik a dokumentum fizikai elhelyezkedését a szöveg tájolásával. A schema ezt szigorúan szétválasztja:

  • is_rotated csak akkor true, ha a szöveg nem olvasható fejforgatás nélkül balról jobbra, fentről lefelé. Egy álló ID-kártya tájolt képen nem forgatott oldal.
  • rotation_angle csak {0, 90, 180, 270} értékeket vehet fel. A 90° és 270° közötti különbség a legkritikusabb:
    • 90°: A szövegsorok vízszintesen futnak balról jobbra, a betűk egyenesek, a tartalom a kép bal oldalán helyezkedik el.
    • 270°: A szövegsorok függőlegesen futnak fentről lefelé, a betűk oldalra dőlnek, a tartalom a kép jobb oldalán van.
  • corrective_rotation_angle a javító forgatás. A schema matematikailag is rögzíti: (rotation_angle + corrective_rotation_angle) % 360 = 0. Ez a kényszerérték gyakorlatilag automatikus validációt biztosít, és megakadályozza az annotációs driftet.

A jel és a zaj szétválasztása

A szkennelt dokumentumok hátsó oldalai gyakran tartalmaznak fejlécet, logót, oldalszámot, QR-kódot, nyomdai, vagy szkennelési zajt. A schema egyértelműen definiálja: ha csak ezek vannak, az oldal is_back_side: true.

Kivétel: személyi igazolványok, vezetői engedélyek vagy azonosító dokumentumok sosem hátoldalak, még akkor sem, ha nagy fehér terület veszi körül őket. Ez a szabály közvetlenül a compliance és az adatminőség védelmét szolgálja.


Mi számít aláírásnak?

A jogi érvényesség szempontjából kritikus mező. A schema szigorú: csak kézzel írt aláírás, vagy monogram számít true-nak. Géppel írt név, digitális időbélyeg, vagy akár nyomtatott űrlapmezőbe kézzel tett jelölés sem minősül aláírásnak. Ez a megkülönböztetés elengedhetetlen az automatikus routing szempontjából.


Milyen eredményeket sikerült elérnünk?

Első körben nekünk is a Computer Vision és a Multimodal LLM rendszerek 95 százalék körüli felismerési pontosságát (forrás: https://arxiv.org/html/2511.04161v2) sikerült elérnünk a lapokon szereplő szöveg forgatási irányának meghatározásakor.

A számítógépes látás (computer vision) alapú algoritmusok rendkívül megbízhatóak a dokumentumok és képek orientációjának (0°, 90°, 180° és 270°) ellenőrzésében és osztályozásában. A modern, neurális hálózatokra épülő modellek jellemzően 92% és 99% közötti pontossággal működnek ezen a négyszögű (4-osztályú) irányfelismerési feladaton.

Specializált training-gel és a szigorú pipeline bevezetésével ezt az értéket 99-100% körülire sikerült felhúznunk. Ezzel egy nagyon fontos célt értünk el, ugyanis naponta több tízezer szkennelt oldalt kell előfeldogoznia collAIgue robotnak, hogy automatizálható legyen a digitalizáció során a képek megfelelő irányba forgatása és az üres oldalak kiszűrése.

Mivel a collAIgue minden esetben determinisztikus kimenetet ad, van lehetőség az adatok validációjára. A felismerés pontosságát táblázatos formában jelenítjük meg, színekkel jelölve az elvárt és az attól eltérő értékeket. Az első képen egy kimondottan az elforgatott lapokat tartalmazó 80 elemű batch eredménye látható, a második képen egy 600 elemű batch mely közelebb áll a valóságban feldolgozandó inputokhoz.