OMRとは — マークシート自動認識の仕組み
v0.7.0で追加されたOMR(光学マーク認識)エンジンの仕組みを紹介します。 マークシートの塗りつぶしや手書き数字を自動認識する技術が、 どのように動いているのかをわかりやすく解説します。
OMRとは
OMR(Optical Mark Recognition、光学マーク認識)は、 紙に印刷されたマークシートの塗りつぶしを コンピュータで読み取る技術です。 選択式のテストやアンケートの集計など、 さまざまな場面で使われています。
これまでマークシートを読み取るには、 専用のOMR読み取り機や、高価なソフトウェアが必要でした。 一括採点では、フラットベッドスキャナーやドキュメントスキャナーで 読み取った画像から、ソフトウェアだけでマークを認識します。
OMR機能は、解答用紙作成で設計した解答用紙と連携して動作します。 解答用紙作成の「OMR」タブで選択式バブルや数字欄を配置し、 スキャンした答案画像を読み取ると、 自動的にマークや数字が認識されます。
コーナーマーカーの検出
スキャンした答案は、用紙がわずかにズレたり傾いたりしています。 マークの位置を正確に読み取るには、 まずこのズレを補正する必要があります。
そのために使うのがコーナーマーカーです。 解答用紙の四隅に印刷された黒い四角形のマーカーを検出し、 本来あるべき位置とのずれから、 画像の回転・平行移動・拡大縮小を計算します。
マーカーの検出には、画像処理の基本的な手法である連結成分分析を使います。 これは、画像の中から「つながった黒い領域」を見つけ出す方法です。 見つかった領域の中から、大きさや形がマーカーの条件に合うものを選びます。
コーナーマーカー検出の流れ
- スキャン画像を白黒の2値画像に変換
- 連結成分分析で黒い領域をグループ化
- 面積や縦横比がマーカーの条件に合う領域を候補に
- 画像の四隅に最も近い4つをコーナーマーカーとして選定
- マーカーの座標から画像の変換パラメータを計算
変換パラメータが求まったら、双一次補間という方法で画像の歪みを補正します。 これにより、スキャンのズレや傾きがあっても、 マークの位置を正確に特定できるようになります。
マークの認識
選択式マークシートの認識は、シンプルな原理で動いています。 各バブル(塗りつぶす丸)の領域を切り出し、 その中の黒いピクセルの割合(塗りつぶし率)を計算します。
塗りつぶし率がしきい値を超えていれば「塗りつぶされた」と判定し、 超えていなければ「空白」と判定します。 あるひとつの設問に複数のバブルが塗りつぶされている場合は、 複数選択として処理されます。
| 状態 | 塗りつぶし率 | 判定 |
|---|---|---|
| しっかり塗られている | しきい値以上 | 選択 |
| 塗られていない | しきい値未満 | 空白 |
| 薄く塗られている | しきい値付近 | 要確認(手動で修正可能) |
手書き数字の認識
マークシートだけでなく、 手書きの数字を認識する機能もあります。 受験番号のように数字を書き込む欄で使用します。
手書き数字の認識には、 機械学習モデルのMNISTを使っています。 MNISTは、0〜9の手書き数字を認識するためのモデルで、 機械学習の分野では非常に有名なベンチマークです。
一括採点では、このモデルをONNX Runtimeで実行しています。 ONNX Runtimeは、機械学習モデルを高速に実行するためのランタイムで、 ブラウザやデスクトップアプリケーションで動作します。 インターネット接続は不要で、 すべての処理がお使いのパソコン上で完結します。
手書き数字の認識はすべてローカルで処理されます。 答案画像が外部のサーバーに送信されることはありません。 生徒の個人情報が含まれる答案データを、 安心して処理できます。
認識の流れと結果の確認
OMR認識の全体の流れは、以下のようになります。
OMR認識の流れ
- 解答用紙作成の「OMR」タブでバブルや数字欄を配置
- 解答用紙をPDFで印刷し、テストを実施
- 答案をスキャンしてアップロード
- コーナーマーカーを検出し、画像の歪みを補正
- バブルの塗りつぶし率や手書き数字を認識
- 認識結果をテーブルに一覧表示
- 誤認識があればセルをクリックして修正
認識結果はテーブル形式で表示されます。 セルをクリックすると、そのバブルや数字欄の拡大画像が表示され、 認識結果を手動で修正できます。 完全に自動任せにするのではなく、 先生が目で確認して修正できる設計になっています。
バッチ処理にも対応しており、 すべての答案を一括で認識した後にまとめて確認・修正できます。
Mark2について
一括採点のOMRエンジンは、 慶應義塾大学SFC研究所が開発したMark2の OMRアルゴリズムを移植したものです。 Mark2はMITライセンスで公開されており、 誰でも自由に利用・改変できます。
一括採点では、Mark2のコーナーマーカー検出と マーク認識のアルゴリズムをTypeScriptに移植し、 Electronアプリケーションに統合しました。 コーナーマーカーの検出には連結成分分析とUnion-Findアルゴリズム、 座標変換には双一次補間を使用しています。
Mark2は慶應義塾大学SFC研究所の成果物です。 一括採点はMark2とは独立したプロジェクトであり、 SFC研究所の公式な推奨や承認を受けたものではありません。
OMR機能により、解答用紙作成で設計したマークシートを スキャナーで読み取るだけで、 選択式問題や受験番号の自動認識ができるようになりました。 専用の読み取り機がなくても、 お手元のスキャナーとパソコンだけでマークシート処理ができます。
認識結果はいつでも確認・修正できるため、 自動認識と手動確認を組み合わせた、 正確で柔軟な運用が可能です。
関連記事
- v0.7.0 — 2026春の大型アップデート - v0.7.0の全体的な変更点
- 解答用紙作成の使い方 — 問題構成からPDF出力まで - 解答用紙作成機能の詳しい操作方法
- 答案画像の傾き補正 — 類似変換の考え方 - コーナーマーカーを使った画像補正