Get a quote
AI

Vipkurum — Optical mark recognition without reader hardware

Marks on an optical answer sheet are read from the image of the form rather than through a reader's optics. Scoring stops being something that happens at one machine in one office: whoever uploads the sheet gets the result.

Category AI
Client Vipkurum · Education technology
Services AI Consulting, Management Systems, Web Software
Year 2025
Status Live
Role Design & development

The context

Optical mark reading usually belongs to whoever owns the machine. The reader sits at one office, so branches send their answer sheets there and wait. If the device fails, or an exam needs a sheet the device will not accept, scoring stops. Vipkurum removed that dependency by design: the reading happens on the image of the form, through OpenCV, and not inside a machine anybody has to own. It is worth being precise about what went away. The hardware did; the requirement that a mark be filled in properly did not, and a sheet completed carelessly still scores like one.

How we work on every project

Planning

We go through how the work runs today and what you expect from the software; the scope comes out of that.

Architecture

We decide what the system is made of and where its information is kept.

Modelling

We draw the screens and the flow before any code, and start building once you have approved them.

Development

We write and hand over the software so another team could carry it on.

See our process →

What we built

  • Marking detection in software

    OpenCV extracts the marks from the form image, so the reading happens in the application's vision layer rather than a device's optics.

  • Layout changes handled in code

    A new sheet layout is handled on the Python side; no replacement device and no device-specific form stock has to be ordered.

  • Both ends of an exam

    The cropping tool produces the answer key and this tool extracts what the student marked; the two meet on the same exam record.

  • Web upload and record layer

    Sheets are uploaded from the browser, the Python reading service is called through Node.js, and results land in MySQL on the Laravel side.

How we built it

  • Python
  • OpenCV
  • Node.js
  • Laravel
  • MySQL

Challenge and result

Each row is a pair: the challenge the work had to solve on the left, and how the system answers it on the right.
Challenge Result
One optical reader sits at head office, so branches ship their answer sheets there A branch scores its own exam without shipping forms to head office
When the device breaks, scoring across the whole institution stops Scoring no longer waits on one machine being in working order
Only forms the reader accepts can be used, which fixes the sheet design The institution can use a sheet design the old reader would have refused
A layout change turns into a procurement question with no answer in software A new sheet layout is absorbed in software, not in a purchase order

Want a system built like this?

Tell us how the work runs today and we will look at which step could move into software.