Download Game! Currently 62 players. Last logged in:MahjongAxlBazilRytkonen

Blitzer's Blog >> 72594

Back to blogs index
Posted: 20 Sep 2026 16:12 [ permalink ]
TC$mC$ on tC$ydellinen oivallus. Astut juuri nyt alueelle, jota konenC$C6n
tutkimuksessa kutsutaan nimellC$ Layout Analysis (Asettelun analysointi) tai
Document Structure Parsing.
Jos annamme tekoC$lylle koko ruudun yhtenC$ massana, se hC$mmentyy ("Miksi
tC$C$llC$ lukee 'Antti' ja 'perjantai', pitC$C$kC6 minun klikata niitC$?").
Mutta jos annamme sille hierarkian, jossa on selkeC$ "Navigaatio/Lista" ja
"Aktiivinen nC$kymC$", tekoC$ly osaa heti ignoroida vasemman reunan, kun sen
pitC$C$ lC$hettC$C$ tiedosto aktiiviseen chattiin.
Se piirtC$mC$si "oranssi viiva" on konenC$C6ssC$ nimeltC$C$n pC$C$jakaja (Main
Divider). Vaikka sitC$ ei ole piirretty ruudulle vC$rillC$, voimme lC6ytC$C$
sen etsimC$llC$ ruudulta suurimmat, toisistaan irrallaan olevat lohkot.
Rakennetaan pC$ivitetty moottori. Jaamme prosessin toivomallasi tavalla:
Makro-taso (Layout): EtsitC$C$n ruudun pC$C$alueet (Frames) kC$yttC$mC$llC$
massiivista OpenCV-blurrausta, joka "sulattaa" tekstin piiloon ja paljastaa
vain UI:n suuret rakennuspalikat.
Luokittelu: TehdC$C$n heuristinen luokittelu (esim. vasen kapea palkki =
"Sidebar/Nav", iso oikea = "Main Content").
Mikro-taso (AST): Ajetaan aiemmin koodaamamme tarkka OCR/Icon -analyysi vain
nC$iden alueiden sisC$llC$, ja lisC$tC$C$n koordinaatteihin offset.
Koodi: Hierarkkinen Semanttinen JC$sennin (layout_parser.py)

MitC$ odottaa tulosteelta?
Kun ajat tC$mC$n, OpenCV:n massiivinen blurraus (100, 100) yhdistC$C$
vasemmanpuoleiset yhteystiedot yhdeksi isoksi pystypilariksi, ja
oikeanpuoleisen chat-nC$kymC$n toiseksi pystypilariksi. SillC$ vC$lin oleva
tyhjC$ tila (oranssi viivasi) toimii erottimena.
Tulosteen pitC$isi nC$yttC$C$ nyt suurin piirtein tC$ltC$:

# AST-MD: Hierarkkinen KC$yttC6liittymC$kartta

## Sidebar / Navigation List (Frame_1)
> Alueen rajat: X:0, Y:0, W:500, H:1080

  - `[f0_n1]` **Text**: "Hae tai aloita uusi keskustelu" (X:80, Y:190)
  - `[f0_n5]` **Text**: "Antti" (X:147, Y:443)
  - `[f0_n9]` **Text**: "perjantai" (X:554, Y:446)

## Main Content / Active View (Frame_2)
> Alueen rajat: X:505, Y:0, W:1415, H:1080

  - `[f1_n3]` **Text**: "Carlos, HAUKI, KUHA, SinC$" (X:707, Y:161)
  - `[f1_n12]` **Text**: "ai_training_data.jsonl" (X:1571, Y:780)
  - `[f1_n42]` **Icon**: *Graphic* (X:600, Y:970) # Klemmari
  - `[f1_n43]` **Text**: "kirjoita viesti" (X:648, Y:972)


Nyt, kun haluat opettaa botin lC$hettC$mC$C$n tiedoston, voit asettaa
kielimallille sC$C$nnC6n: "Etsi tekstikentC$t ja napit aina sisC$ltC6alueelta
(Main Content). ClC$ koskaan yritC$ lC$hettC$C$ viestiC$ Navigaatio-alueelle."
Kokeile, lC6ytC$C$kC6 koodi kaksi (tai useampaa) erillistC$ framea
WhatsApp-ruudultasi! Voit joutua sC$C$tC$mC$C$n koodin alun MORPH_RECT, (100,
100) -arvoa hieman (esim. (50, 200)), jos se ei heti "nC$e" oranssia linjaasi
luotettavasti.