Kérdőív feldolgozó rendszer #4: Beüzemelés & négyzetek és válaszok felismerése

EmguCV használata a projektben

Legkönnyebben: NuGet-tel le lehet tölteni, bár a frissítés dátuma alapján, nem egy friss változat, közel fél évvel le van maradva a hivatalos kiadástól. (Changelog-ok alapján nekem ez is megfelel.)
NuGet-tel: Install-Package EmguCV, az alábbi package-ek lesznek még hozzáadva a projekthez: ZedGraph és OpenTK. Az EmguCV részéről pedig három fájl:Emgu.CV.UI.dll, Emgu.CV.UI.GL.dll, Emgu.CV.World.dll.

Add Reference-féle importálásnál pedig a fent már említett három fájlt beimportáljuk, illetve célszerű a ZedGraph-ot is mellékelni.

Képfelismerés

A programozás a Visual Studio 2015-ben, C# nyelvben történt. A példaprogram jelenleg felismeri a négyzeteket, kigyomlálja azokat, amelyeket esetleg kétszer ismert fel. (Például ha vastag a vonal vagy rossz minőségű a kép.)  A kód nagy része a hivatalos példából származik, de jónéhány változtatást eszközöltem rajta.

A program bal oldali képdobozában az eredeti, feldolgozásra váró kép jelenik meg. Ezután az Elemzés gombra kattintva megjelennek a program által talált négyzetek a jobb oldali dobozban.

Jobb oldali TextBoxban pedig az algoritmusom munkája látszik, megnézi, hogy a négyzetek közül melyek vannak bejelölve, illetve kiírja a négyzetek középpontjainak a koordinátáit. Amennyiben be van jelölve egy opció, akkor a válaszhoz tartozó négyzetet nem látja a képfelismerő, ahogy az a következő példán is látszik:

 

Továbbá már az érvénytelen választ (itt: egynél több van bejelölve) is képes kezelni. A válaszok kezelése (mi van bejelölve és mi nincs) lista segítségével van megvalósítva.

A négyzetfelismerést kipróbáltam létező kérdőíven is, mely kiváló eredményt hozott.

EREDETIKEP_KERDOIV

 

Kérdőív feldolgozó rendszer #3: Követelményrendszer & hibás válaszok

Tervezett főbb funkciók listája (2016. december)

Szakdolgozat II befejezésére:

  • App:
    Kérdőív válaszok felismerése
    Kérdőív szöveges részeinek felismerése és kivágása (személyes adatok, szöveges mezők)
    Kivágott szöveges részek rendezése
    Adatok mentése adatbázisba (képeknek a fájlneve)
    Sql szerver konfigurálhatóság
    Több fajta adatbázis támogatása
    Képek tárolóból beolvasása
    Alapvető OCR-funkciók implementálása
  • SQL szerver:
    Segítség a letöltéshez és/vagy a csomag tartalmaz egy telepítőt
    Silent telepítés
    Alapvető hibaelhárítás (tudok-e csatlakozni, jó-e az user/pass)
  • Kimutatást készítő modul
    Diagram, kis leírás (sablonozható)
  • Kézírást felvivő modul
    Login/névbeállító ablak, hogy látható legyen ki fért hozzá az adatokhoz
    Egyszerű egy ablakos alkalmazás, melyben megjelenik a kivágott kép
    Kép nagyítható, kicsinyíthető, fekete-fehérre váltható
    Szövegbeviteli mező a válaszhoz

 

Opcionális funkciók

  • Azure integráció (storage elérés, nem VM-ben való futtatás esetén)
  • Active Directory támogatás
  • .NET Core támogatás – Linuxon futtatás

Javítások kitöltés közben, hibakezelés
Sokakkal előfordult – velem is -, hogy kitöltés közben elkalandozott, vagy félrecsúszott a keze és rossz opciót jelölt be. Mivel a programot fel kell készíteni az összes lehetséges helyzetre, így erre is. Az általam látott kérdőívek többségénél az volt látható, hogy a véletlenül bejelölt választ egyszerűen csak lesatírozták, aztán a jót pedig nyilvánvalóan x-szel jelölték. Emiatt nekem az fordult meg a fejemben, hogy ha egy sorban az x adható válasz helyett x+n választ adtak, akkor össze kell hasonlítani a bejelölt válaszokat, az alábbi módon:

negyzetek
Algoritmus megtalálja a négyzeteket, azokat kivágja, majd összehasonlítja a kettőt, amelyikben több nem fehér (vagy háttérszín) pixel van, az lesz a kérdésre adott válasz.

Hibakezelés fontos dolog lesz, hiszen a hiányosan kitöltött kérdőíveket fel kell ismerni, nem akadhat be a program, hogy keresi az adott kérdésre a választ, de ahhoz vagy nem töltöttek ki semmit, vagy mindent kitöltöttek. Például amennyiben közel az összes választ bejelölte valaki, de csak egyet kellett volna, akkor azt a válaszát érvénytelennek jelöljük és ugrunk tovább a többire.

Kimutatásnál jól jöhet, hogy melyik kérdésre hány feldolgozható, érvénytelen és üres válasz érkezett, ezzel a kérdésekről is készülne visszajelzés, amelyek alapján talán lehetne azokon is javítani.