Ota yhteyttä

Kääritään hihat ja tehdään tuloksia!

Lähetä meille viesti

Optical character recognition (tekstintunnistus) on jo vanha tekniikka, mutta uusia käyttökohteita sille keksitään varmasti jatkuvalla syötöllä. Kaikille lienee tuttu aihe esimerkiksi ajoneuvon rekisterikilven koneellinen lukeminen tai postin lajittelu koneellisesti. Molemmissa tapauksissa syötteestä tunnistetaan automaattisesti tekstiä.

Periaatehan OCR:ssä on hyvin yksinkertainen; se on joko mekaaninen tai sähköinen prosessi, jossa pyritään tunnistamaan tekstiä ja saattamaan se käyttäjälle helpompaan muotoon. Normaalisti se helpompi muoto on digitaalinen muoto, mutta aikanaan on käytetty myös esim. äänimerkkejä (savumerkeistä en tiedä).

Omat OCR-kokeiluni olen aloittanut noin kymmenisen vuotta sitten. Tein silloin kotiautomaatioprojektia, jossa halusin myös vesimittarin lukeman digitaaliseen muotoon – ja mieluiten reaaliajassa. Tuossa tapauksessa en käyttänyt mitään valmiita kirjastoja, vaan “opetin” koodini tunnistamaan vesimittarissa käytettävät numerot. Siihen aikaan se oli vielä mekaaninen rullamittari. Hieman nihkeää pikselitason koodailua, mutta toimiva tuli. Ja reaaliajassa lukemat sai kiinni, kun webbikamera oli asennettuna vesimittarin päälle ja kameran livekuvasta tehtiin frame kerrallaan tunnistusta.

Nykypäivänä voidaan helposti tehdä tekstintunnistussovelluksia, joissa käytetään valmiina olevia OCR-tekoälykirjastoja. Nämä kirjastot ovat opetettu tunnistamaan erilaista tekstiä ja tukemaan eri kieliä. Samoissa kirjastoissa saattaa olla tuki myös muulle kuin OCR:lle, vaikkapa hahmontunnistus. Osa kirjastoista on myös sellaisia, että niitä voidaan jatko-opettaa. Esimerkiksi puuttuva kielituki saadaan, kun opetetaan uusi kieli itse. Näiden kirjastojen käytöllä oman koodin tuottamisen tarve on vähäinen ja (tekoäly)projektien aloituskynnys on matalalla.

Vesimittarin luenta tekoälyvälineillä

Optical character recognition (tekstintunnistus) on jo vanha tekniikka, mutta uusia käyttökohteita sille keksitään varmasti jatkuvalla syötöllä. Kaikille lienee tuttu aihe esimerkiksi ajoneuvon rekisterikilven koneellinen lukeminen tai postin lajittelu koneellisesti. Molemmissa tapauksissa syötteestä tunnistetaan automaattisesti tekstiä.

Periaatehan OCR:ssä on hyvin yksinkertainen; se on joko mekaaninen tai sähköinen prosessi, jossa pyritään tunnistamaan tekstiä ja saattamaan se käyttäjälle helpompaan muotoon. Normaalisti se helpompi muoto on digitaalinen muoto, mutta aikanaan on käytetty myös esim. äänimerkkejä (savumerkeistä en tiedä).

Omat OCR-kokeiluni olen aloittanut noin kymmenisen vuotta sitten. Tein silloin kotiautomaatioprojektia, jossa halusin myös vesimittarin lukeman digitaaliseen muotoon – ja mieluiten reaaliajassa. Tuossa tapauksessa en käyttänyt mitään valmiita kirjastoja, vaan “opetin” koodini tunnistamaan vesimittarissa käytettävät numerot. Siihen aikaan se oli vielä mekaaninen rullamittari. Hieman nihkeää pikselitason koodailua, mutta toimiva tuli. Ja reaaliajassa lukemat sai kiinni, kun webbikamera oli asennettuna vesimittarin päälle ja kameran livekuvasta tehtiin frame kerrallaan tunnistusta.

Nykypäivänä voidaan helposti tehdä tekstintunnistussovelluksia, joissa käytetään valmiina olevia OCR-tekoälykirjastoja. Nämä kirjastot ovat opetettu tunnistamaan erilaista tekstiä ja tukemaan eri kieliä. Samoissa kirjastoissa saattaa olla tuki myös muulle kuin OCR:lle, vaikkapa hahmontunnistus. Osa kirjastoista on myös sellaisia, että niitä voidaan jatko-opettaa. Esimerkiksi puuttuva kielituki saadaan, kun opetetaan uusi kieli itse. Näiden kirjastojen käytöllä oman koodin tuottamisen tarve on vähäinen ja (tekoäly)projektien aloituskynnys on matalalla.

Mikä oli sitten testauksen lopputulos? Jos lähdetään liikkeelle OpenCVSharp3 -kirjaston käytöstä USB-kameran kanssa, niin se toimi juuri niin kuin pitikin. Helppo käyttää ja omaa koodia tarvitaan melko vähän. Tesseract -kirjaston peruskäyttö on myös helppoa ja oman koodin tarve vähäinen. Tesseract on kuitenkin hirveän tarkka sisään menevästä syötteestä. Jos teet itse kuvan vaikkapa Paintilla ja laitat kuvaan tekstiä (ja vieläpä suoraan), niin sellaisen Tesseract tunnistaa virheettömästi. Jos taasen kuva tulee heikkolaatuiselta USB-kameralta livenä, niin kuvalle pitää tehdä monenmoista käsittelyä, että Tesseract tunnistaa siitä edes jotain. Suurin aika tässä testissä menikin kuvanlaadun säätämiseen ja kuvankäsittelyn koodaukseen.

Yhteenvetona voi todeta, että OCR:n käyttö livekameran kuvan kanssa on melko nopeaa ja helppoa, mutta kuvanlaatuun tulee panostaa. Jos kuvanlaatu olisi ollut hyvä, niin tekoälyn kanssa oman koodin tarve on vain murto-osa vanhaan vastaavaan toteutukseen verrattuna.

Nykyisin kaikissa uusissa vesimittareissa alkaa olemaan etäluentaominaisuudet toteutettuna esim. M-Bus -väylällä. Mielestäni kaikille käyttäjille, riippumatta kunnasta tai vesiosuuskunnasta, pitäisi tarjota mahdollisuus liittää uusi älykäs vesimittari lähiverkkoon, jolloin mittaukset saataisiin reaaliajassa. Tämä vähentäisi entisestään vesihuollon tarvetta ajella autolla ympäri kyliä lukemassa ”etämittareita”. Wireless M-Bus -väylän luentaetäisyyshän on kymmenistä satoihin metreihin, riippuen rakenteista ja kelistä. Ja mikä parasta, reaaliaikamittauksella saataisiin uutta dataa ja pohjaa uusille palveluille – vaikkapa softapohjainen vesivuotovahti.

Jos aihe herätti ajatuksia tai ideoita uusista projekteista, niin otapa yhteyttä!

Risto on Oiwan teknologiajohtaja, jolla on taipumusta luovaan ajatteluun ja tekemiseen. Tutustu Ristoon lisää täällä.