Погуглив на английском, нашел, что задачи такого типа называются optical mark recognition, либо сокращенно OMR.
Если искать по этим ключевым словам, то находится достаточно много примеров и готовых библиотек.
Вот парочка репозиториев если кому-нибудь будет нужно:
https://github.com/GregoryCMiller/omr
https://github.com/rbaron/omr