Let's see, you chose to ask "which is the best language" in a C++ forum.
Are you going to listen to any answer which isn't "use C++" ?
Or let me put this another way, do you already know C++ in any shape or form?
No, new to programming, so I would like to invest what free time I have to the best (and probably the quickest to grasp!) language. Any advice would be appreciated, as I would be frustrated 6 months down the line to find that the language (whichever one) does not have the command(s) to carry out the task.
Most programming languages are a very generalised means of implementing all kinds of solutions. C++ is used from everything from a mobile phone to your games to your browser. Although you may think your time would be better spent, once you do "get it", a whole host of possibilities become open to you.
There may well be some "language" or "library" which makes your OMR as easy as falling off a log, but you won't be able to use that knowledge for anything else, it will be far too specialised.
Most of what you've said so far is more reliant on the Win32 API (or the API of whatever OS you're using) rather than any specific language feature.
The next question is where is your data coming from?
Because if it's coming from a scanned image of a hard-copy form, then there are a whole range of other problems which you'll need to solve.
But if the data is already in a machine readable form, why do you need to complicate it with OMR?