この Blog で先にご紹介した完全無料でお使いいただけるマークシートリーダー MS_Reader V3 の使い方のご案内です。
【もくじ】
1.マークシートの準備
2.マークシートの印刷
3.マークシート読み取り前の確認
4.マークシートをスキャナーでJpeg画像化
5.スキャンしたマークシート画像の保存先
6.マークシート読み取りと採点のための準備
7.処理に必要なメモリー容量の確認
8.採点対象の読取専用画像が入ったフォルダを選択
9.特徴点の検出
10.マークシート情報の設定
11.マークシート設定の複写
12.マーク読み取りの実行と確認
13.音声読み上げ
14.正解・配点・観点別評価の区分の入力と保存
15.成績一覧表、正答率一覧表の作成と印刷
16.採点結果通知シートの作成と印刷
17.まとめ
18.お願いとお断り
1.マークシートの準備
試験で使用するマークシートを準備します。MS_Reader V3 で使用するマークシートには特徴点が必要です。マークシートの左上隅の任意の位置に ■■■(ドットを3つ)ご用意ください。
プログラム自体は、特徴点がなくても、スキャンした画像の左上を座標原点 (0, 0) として動作するように組んでありますが、動作テスト時に一部データの読み込みに問題が発生することがありました。ですので、誤動作を極力防止するためにも特徴点は必ずご用意いただけますよう、お願い申し上げます。
【ご注意願います】
特徴点をご用意いただいた場合でも、MS_Reader V3 が常に意図した通り、完全に動作することは保証できません。MS_Reader V3 を使用される方の完全自己責任の下、十分な動作テストを行っていただいた上で、マークシートの読み込み性能に納得していただける場合のみ、MS_Reader V3 はお使いいただけます。悪しからず、ご了承ください。

MS_Reader V3 に同梱した Mark Sheet Maker をご使用いただければ、上図のようなマークシートをどなたでも簡単に作成できる(?)と思います。(もし、難しかったらごめんなさい)
< 戻る >
2.マークシートの印刷
マークシートの印刷には、輪転機ではなく、必ずインクジェットプリンターを使用してください。
高性能化が進む輪転機ですが、マークがどうしても濃く印刷されてしまい、マーク読み取りの際に問題が発生することがあります。タイトル及び特徴点以外の、マーク・罫線部分の印刷の濃さは、「実際の運用でご使用になるスキャナーで読み取ったマークシート画像のマーク内の数字がモニター画面上で読み取れ、かつ、その画像を実際にご使用になるプリンタで印刷した場合に、マーク内の数字が何であるかある程度判別可能な濃さ」としてください。
< 戻る >
3.マークシート読み取り前の確認
スキャナーでマークシートを読み取る前に、次の事項について確認し、必要な作業を行ってください。
(1)欠席者の位置に白紙のマークシートを挿入

(2)マークシートに付着した消しゴムの屑を除去
塵も積もれば・・・ナントカで、消しゴムの屑が付いたままのマークシートをスキャナーで何百枚も処理すると、スキャナーの光学読取装置部分が大変なコトになります。ですので、マークシートに付着した消しゴムの屑は出来る限り除去してからスキャン作業を行ってください。
(3)マークシートが出席番号番号「昇順」に並んでいることを確認
マークシートが出席番号(もしくは受験番号)の昇順(=スキャナーで読み込む順)に並んでいることを最低2回は確認してください。また、その際、上下の逆転がないことも入念にご確認ください。
< 戻る >
4.マークシートをスキャナーでJpeg画像化
マークシートは解像度 200 dpi、カラー、Jpeg 画像を指定してスキャンしてください。
必要以上に解像度を高くしても良いことは1つもありません。200 dpi で十分な精度が得られます。また、必ずカラー画像としてスキャンしてください(スキャナー側では二値化処理しないでください)。
一般的に使用されている複合機のスキャナーでスキャンした PDF ファイルは、Jpeg 画像のコンテナのような形式で作成されていることが多いと聞き、MS_Reader V3 には、そのような PDF ファイルであった場合、Jpeg 画像を抽出する機能も搭載しましたが、様々なスキャナーで作成されたPDF ファイルを入手し、必要十分な動作テストを行うことは私の環境では不可能でありますので、この PDF ファイルから Jpeg 画像を抽出しての処理は、その可否をご確認の上、可の場合でも必要十分な動作テストを実施後にご利用ください。
なお、筆者の職場にあります E 社製複合機のスキャナーで解像度 200 dpi、カラー、PDF を指定して読み込んだデータを用いた動作検証を行い、プログラムが意図した通りに動作することを確認しましたことを申し添えます。
< 戻る >
5.スキャンしたマークシート画像の保存先
スキャンした画像は、MS_Reader_V3.exe と同じフォルダにある ScanData フォルダ内に任意の名称のフォルダを作成し、そこへ保存してください。各 Jpeg 画像ファイルの名称は、この後の読み取り処理専用画像作成の際に一括して変更しますので、どのような名称でもかまいませんが、ファイルの並びが出席番号(=受験番号)順となるような名称である必要があります。

Jpeg 画像を保存するフォルダの名称は、実際には「年度・考査名・教科科目名・クラス名」を組み合わせて作成すると良いと思います。
例:R8_考査①_物理基礎_2A
【重要】フォルダ名には「 – 」や「 ー 」を用いないでください。
フォルダ名に「 – 」や「 ー 」が含まれていた場合、読み取り専用画像を保存するフォルダ名は、スキャナーで読み取った画像を保存したフォルダ名中の「 – 」や「 ー 」を自動的に「 _ 」に変換して作成されます(文字列処理の中で「 – 」を分割に利用しているため)。この点につきましては、どうか十分にご注意願います。
また、スキャナーで読み取った画像を入れるフォルダの配置については、次の例をご参照ください。
【良い例】

【動作しない例】

< 戻る >
6.マークシート読み取りと採点のための準備
MS_Reader V3 を起動し、マークシート読み取りと採点のための準備を行います。

MS_Reader_V3 フォルダ内にある上のアイコンをダブルクリックして起動します。
ダウンロード直後の初回起動時に、次のような Windows Defender SmartScreen による警告画面が表示されると思います。「詳細情報」をクリックし、次に表示される画面の「実行」をクリックしてプログラムを起動してください。

ダウンロードされたファイルに「 Zone.Identifier 」という「ゾーン識別子」が付加されていると、Windows はこの識別子を見て「インターネット経由で取得されたファイル」と判断し、SmartScreen が警告を表示します。
MS_Reader V3 が起動したら、まず、読み取り専用画像を作成します。次の図に示す「矢印がフォルダ内へ入っている」アイコンをクリックしてください。

「選択」をクリックして、スキャナーで読み取った Jpeg 画像を保存したフォルダを選択します。


次の図に示すように①→②→③の順で操作してください。
①で、必要があれば回転方向を指定します。
②で、画像のリサイズ指定が可能です(A4のマークシートであれば「なし」か「自動」を指定)
③をクリックすると読取専用画像を保存するフォルダを指定するダイアログが表示されます。
【ご注意】
②でリサイズする際、サイズを指定した場合は必ずその数値をメモしてください。他のクラスも同じ設定で読み取りと採点を行うためには、全クラス同じサイズで画像を変換する必要があります。

ProcData フォルダ内に読取専用画像を保存するフォルダが自動作成されますので、このフォルダをクリックして指定し、その後 Ok をクリックしてください。

「変換実行」をクリックしてください。

「マークシート」と「手書き答案の採点」を併用する場合は「はい」、併用しない場合は「いいえ」をクリックしてください。

確認メッセージが表示された場合は、Ok をクリックしてください。

他のクラスも連続して処理する場合は「画面の初期化」を、読取専用画像の作成作業を終了する場合は「終了」をクリックしてください。

< 戻る >
7.処理に必要なメモリー容量の確認
図の「矢印がフォルダから出ている」アイコンをクリックしてください。

次の案内が表示されます。

上記案内に表示している画像1枚あたりのサイズは、「メモリ上に展開されたOpenCV IplImageの生ピクセルデータサイズ」で計算しています。こちらのメモリ検証を参考に、お使いの PC で快適に作業できる答案枚数をご確認ください。
プログラムは、画像をメモリ上に展開しなくても動作するように作成してありますが、都度画像を読み込んで処理する場合、動作速度(=ユーザー体験)は大変遅くなります。可能な限り、全画像をメモリー上に展開して作業環境で MS_Reader V3 をお使いいただけますよう、伏してお願い申し上げます。
プログラム作成の流れで言うと、非メモリー展開モードが当初作成した「都度画像を読み込み、採点結果を都度書込みという流れのオリジナル」で、それではどうしても動作速度的に満足できないと(新規に手書き答案採点プログラムを書き直した意味がない・旧版の AC_Reader に比較して明らかに良くなっている・進化していることが自分自身の中での絶対的評価基準でした)、このユーザー体験の改善「やるか・やらないか」の二択なら「やるしかないだろ」ってコトで、もう一度イチから出直して新たに追加したのが「全画像をメモリ上に展開し、読み込みはそこから行い、採点結果は画像に書き込まず JSON ファイルに保存、それが必要な時は JSON ファイルから読み出して画像上に描画する」というメモリー展開モード(=自分的には、新しく採用したアルゴリズム:現実世界では、これが業界標準のようですが・・・)です。
上記の理由から、MS_Reader V3 のプログラムは、状況に応じて2つのモードを使い分けて動作するように出来ています。・・・ 出来ているはずなのですが、メモリー展開モードを追加してからは、ほとんど、この環境でしか動作テストを行っておりませんので、もしかしたら、非メモリー展開モードでの実行時に何らかの予期しない不具合が発生するかもしれません。
ただし、非メモリー展開モードは、私ではない善意の第三者が、高校現場において、定期考査の採点に実際に使用し、致命的な問題がないことをリアル採点現場で確認済みです(この際、判明した問題点はすべて修正・改良しました)。
< 戻る >
8.採点対象の読取専用画像が入ったフォルダを選択
解答用紙のサイズを選択し、受験者数を入力してメモリー展開モードでの作業の可否を確認後、Ok をクリックすると「フォルダーの選択」ダイアログが表示されます。

ここではファイルではなく、「フォルダー」を選択することに注意してください。上の例で言えば「 01_MarkSheet 」フォルダをクリックして選択 ⇨ 「フォルダーの選択」ボタンをクリックという流れになります。
案内が表示された場合は、Ok をクリックします。

< 戻る >
9.特徴点を検出
今回の冒頭でお示ししたように、MS_Reader V3 では、マークシートのマークを個別に切り出す際の座標原点として、マークシート(解答用紙)の左上隅に印刷した ■■■ を特徴点として利用します。これがなくても動作するように設計しましたが、マークシートだけでなく、手書き答案の採点プログラムでもこれがあることをあくまでも大前提としておりますので、MS_Reader V3 で処理する解答用紙の左上隅には必ず ■■■ を設置していただけますようお願い申し上げます。
解答用紙は通常ワープロソフトで作成されることが多いと思いますが、10.5~14ポイントくらいの大きさで ■■■ を入力していただければよろしいかと思います。
前作と異なり、MS_Reader V3 では、特徴点を自動認識するよう、アルゴリズムを改善しました。以下、特徴点検出方法です。

■■■ の下に Thresh とある表示の右側の閾値表示用 ComboBox が「空欄」の状態で、その閾値表示用 ComboBox の右にある特徴点自動検出ボタンをクリックしてください。
特徴点検出手続きが実行され、プログラムは画像の左上付近に捜索範囲を限定して ■■■ を探します。プログラムは検出閾値を次々に変え、最も安定して利用できると思われる最適な値を見い出します。最適な値が見つかったら場合、その値付近でさらに数回試行し、安定動作(検出)出来た場合は検出動作を停止して特徴点を赤枠で囲み、ユーザーに確認を求めます。

【特徴点が検出された場合】

(背景のマークシート画像がぼやけているのは検出手続き中でガウスぼかしを利用しているためです)
【特徴点が検出されなかった場合】
特徴点が検出されなかった場合は、次のメッセージが表示されます。

上記いずれの場合でも次の確認メッセージが表示されます。マークシートのみの採点作業及びマークシートと手書き併用型の採点作業を行う場合は「はい」を、手書き答案の採点作業のみを行う場合は「いいえ」をクリックしてください。

続けて、手書き答案の採点作業を行うかどうかの確認メッセージが表示されます。

< 戻る >
10.マークシート情報の設定
特徴点が検出できたら、次にマークシートの情報をイニシャライズファイルに登録します。

また、設問番号部分はブロックに入れません。
MS_Reader V3 では、上の図のようにマークシートのマーク欄を群(ブロック)に分け、さらにその群(ブロック)を行と列に分割してマーク単体を切り出し、その部分の濃度を計測してマークの有無を判定しています。前作までのマークシートリーダーでは白黒二値化後の塗り面積計算でマークの有無を判定していましたが、これを濃度を計測しての判定に変更することで、次のような点で判定精度を向上させることが出来たのではないかと考えます(比較実験は行っておりません)。
(1)薄いマークや濃淡のあるマークの検出精度の向上
(2)スキャナーの機種の違いに強くなる(採点現場では統一されていないことの方が多い)
(3)「消え残り」と「真のマーク」を区別しやすくなる
(4)紙の汚れ・印刷のムラに強くなる(マーク領域全体の平均をとることで、局所的なノイズの影響が統計的に薄まる)
(5)パラメータ調整が容易になる(白黒二値化では、閾値を1動かしただけで検出結果が逆転することがあり、感覚的に調整しにくい)
高校における実際の定期試験の採点現場では、スキャン環境も受験者の筆記具も統一されていないのが当然で、白黒二値化から濃度計測への判定アルゴリズムの変更は、判定精度と運用安定性の両面で大きな改善につながったと思います。
まず、群(ブロック)数を入力します。

次のメッセージが表示されます。

スキャナーで読み込んだ画像の罫線の状態は粗めになっていることが多く、余程良好な状態でないと群(ブロック)ごとの罫線枠の自動検出は成功しないと思われます。
【参考:罫線枠の自動検出に成功した場合】

ちなみに上の場合のパラメータ設定は「10」です。こちらを先に設定してから左隣の「マーク欄の自動検出」ボタンをクリックしてください。群(ブロック)数設定時の操作ミスを防止する観点から、敢えてコントロールの位置を自動検出ボタンの「右」側にしてあります。

自動検出に成功した場合は、次のように操作してください。まず、検出できた座標を保存します。

2つ目に自動検出された罫線枠が自動的に選択されます。2つ目に検出できた座標を保存します。

設定した群(ブロック)数回、同様に操作します。これ以降の設定方法は自動検出機能を利用しなかった場合と同じです。
なお、罫線枠(マーク欄)の自動検出には「適応的二値化」を用いています。これにより紙の折り目跡などによる画像の濃淡の違いに強くなり、より安定して検出できるようにはなっていると思うのですが、私の行った試行では誠に残念ながら上手く検出できることの方が少なかったです(検出精度を数値的に評価するような実験は行っておりません)。・・・ですので、ここでは罫線枠(マーク欄)の自動検出機能は利用せず、手動でマーク欄の情報を設定する方法を説明致します。
罫線枠(マーク欄)の自動検出機能を使用しない場合は「いいえ」をクリックします。

次のメッセージが表示された場合は、よく読んでから Ok をクリック。

マウスのカーソルが大きな「+」になります。範囲の設定は必ず読み取りブロックと表現している罫線枠(マーク欄)の左上から右下へドラッグするかたちで行ってください。まず、+になったカーソルを左上位置にポイントします。

ポイントしたらカーソルを動かさずに、そこでクリックして右下方向へドラッグします。画面はマウスの動きに追従して自動的にスクロールするはずです。

実際には、右下隅でぴったり罫線枠に合わせるのは、なかなか難しいと思います。そこで、少し大きく範囲指定して微調整できるようにアルゴリズムを改善しました。

微調整は Shift キーを押したまま、上下左右の矢印キーを押し下げして行います。
上の状態を例に説明すると、
Shift + 左向きの矢印キー押し下げで、幅が左へ小さくなります。
Shift + 上向きの矢印キー押し下げで、高さが上へ小さくなります。
また、MS_Reader V3 では、赤い点線で範囲指定した枠そのものも移動できるようにしました。
上下左右の矢印キーを押し下げすると、1回押し下げにつき1ピクセルずつ、赤い点線で範囲指定した枠そのものが押し下げた矢印キーの方向へ移動します。
1つめの範囲を指定出来たら、その座標を保存します。

次に2つ目の読み取り範囲の罫線枠(マーク欄)を指定しますが、ここにも改良を加えました。MS_Reader V3 で使用するマークシートにおいて各マーク欄ブロックの幅と高さは全て同じという大前提ですので、2つ目以降のブロックは特徴点からの距離が変化するのみで、その大きさは変わりません。そこで、1つ目で指定した範囲をそのまま2つ目のブロックへドラッグ&ドロップ出来るようにしました。作業内容は、次のようなイメージです。


マウスはなるべく水平方向へ移動するよう操作してください。上や下方向へマウスを動かすと画面がスクロールしてしまいます。ご注意ください。

2つ目の罫線枠(マーク欄)の座標を保存します。

同じ操作を、ブロックの数だけ繰り返し、すべてのブロックの座標を取得・保存します。
次に1ブロックあたりの行数、1解答欄(=設問)あたりの選択肢数他を指定します。


次に1解答欄(=設問)あたりの選択肢数を指定します。


用紙のサイズと向きも ComboBox の選択肢から選んで指定します。最後の項目は縮小率(%)です。

画像のリサイズが「なし」or「自動」の場合は縮小率は「100」を指定し、任意のサイズを指定した場合は指定したサイズ(%)の数値を指定します。(下の図を参照してください)

次に設問数を設定します。100設問設定可能なマークシートであっても実際に使用しているのが 74 設問分であれば設問数には 74 を設定してください。


次に選択肢の始まりの番号を指定します(多くの場合、それは「1」だと思いますが、高等学校の教科「情報」のように選択肢の始まりの番号が「0(ゼロ)」である場合があります。ご注意ください)。

次に複数マークの扱いを指定します。
【チェックなしの場合】

(99 は複数マークであることを示すフラグです)
【チェックありの場合】

最後に、マークシート情報が正しく設定されていることを目視して確認します。

画面をスクロールしてマークシート情報が正しく設定されているかどうか、確認してください。
最後に設定内容をイニシャライズファイルに保存します。


< 戻る >
11.マークシート設定の複写
複数クラスに同じマークシート設定を適用する場合は、作成したマークシート設定を複写できます。

【「はい」を選んだ場合】



「フォルダの選択」ボタンをクリックすると、既存のマークシート設定が複写先のクラスのフォルダへコピーされます。

< 戻る >
12.マーク読み取りの実行と読み取り結果の確認
これでマークシートを読み取る準備が出来ました。たくさん準備を行ってきましたが、読み取りはあっけないくらい 走召 高速です。初めて実行した時、機械が壊れているんじゃないかと思ったくらいです。
「実行」ラジオボタンをチェックして、「マーク読み取りを実行」ボタンをクリックするだけです。

私の環境では、1設問あたり8選択肢、100 設問、40 Sheet分、すなわち 32000 マークを

1.011 秒で読んでいます。もちろん、読み取りミスもありません。
マークの有無の判定アルゴリズムは3種類用意してあります。
・Area:面積法
・Intensity:濃度法
・Hybrid:上記2つの方法の組合せ
何度も試行して確認しましたが、濃度法一択でよろしいのではないかと思われます。
続いて、読み取り結果の確認です。
例えば 50 設問用のマークシートを使用し、実際の設問数は 46 であった場合、47, 48, 49, 50 は間違えてマークした生徒を除き、受験者全員が空欄になっています。このような空欄は最初からチェックの対象としないように設定できます。また、0を指定すると、そのブロック内のすべての回答欄がチェック対象となります。

チェックの設定は保存しておき、同じ試験を実施した他のクラスにも適用できます。

チェックを実行すると「空欄:999」と判定したマークと、「複数マーク:99」と判定したマーク位置でチェックが停止します。目視して該当マーク部分の読み取り判定結果をチェックしてください。
【空欄と判定した場合】※ 空欄のフラグは 999

【複数マークありと判定した場合】※ 複数マークのフラグは 99

塗りつぶしが薄すぎて空欄判定になっていたり、消したマークの消し方が不十分で複数マークありの判定になっている場合は、読み取り結果を採点者の判断で正しく修正してください。
すべてのマークをチェックしたら、保存ボタンをクリックして、読み取り結果を保存します。

既存のファイルがある場合、上書き確認のメッセージが表示されます。

採点の「確定」を確認するメッセージです。採点結果を確定しないと合計点や採点結果通知シートの作成は行えません。また、採点結果を確定した場合は、次回当該クラスのフォルダを指定して開いた際、採点処理をしなくても合計点他の計算や各種資料の印刷が可能になります。

< 戻る >
13.音声読み上げ
グリッドコントロールの任意の箇所をクリックしてアクティブにした位置から音声による読み取り結果の読み上げが可能です。マークシートの実際のマークと読み取り結果の照合や、入力した正解が正しいかどうか等の確認にご使用ください。読み上げ速度も設定可能です。

< 戻る >
14.正解・配点・観点別評価の区分の入力と保存
採点を実行する前に、採点に必要な情報を入力し、保存します。

「編集」をチェックしないと値を入力できません。

必要なすべての値を入力したら採点に必要な情報を保存します。上の図にある保存ボタンをクリックします(既存のファイルがある場合、上書き確認のメッセージが表示されます)。
【採点情報の複写方法】
マークシートの設定同様、採点情報も同一の試験を行った他のクラスに複写して利用できます。

複数クラスに複写する場合は、Ctrl キーを押しながらフォルダをクリックしてください。

< 戻る >
15.成績一覧表、正答率一覧表の作成と印刷
旧版では別プログラムだった成績一覧表の作成を MS_Reader 内できるようにしました。また、併せて旧版では出来なかった正答率一覧表の作成や印刷も可能としました。さらに、旧版と比較した場合、いずれの処理も高速に実行できます。

成績一覧表のサンプルです(成績はデタラメです)。

正答率一覧表のサンプルです(こちらも適当です)。

< 戻る >
16.採点結果通知シートの作成と印刷
受験者に配布する個別採点結果通知シートの作成と印刷が可能です。マークシート画像上に採点結果、配点、観点別評価の区分、正答・正解を描画し、さらに任意の位置に合計点他を描画、採点結果通知シートとして印刷できます。
「調整」をチェックして作業を開始します。


【印刷プレビューの表示】


【印刷の実行】


○:正答・正解 △:部分点有り ×:誤答・不正解 K1, K2:観点別評価の区分
【合計点表示例】
合計点他は任意の位置に

【採点結果通知シートのサンプル】

< 戻る >
17.まとめ
・名称:MS_Reader V3(完全無料のマークシートリーダー)
・超高速読取り:My PC では 約 32000 マーク/秒
・極軽量:本体わずか4MB
・手書き答案のデジタル採点機能付き(横書き&縦書き両形式答案に対応)
・観点別評価に対応
・成績及び正答率一覧表、採点・配点・正解マーク&得点合計&順位付き採点結果通知の作成&印刷
・CSV出力
・音声読み上げ
・答案画像の傾き補正
・マークシート作成ソフトも同梱
・動作保証一切なし、サポートなし、バグあるかも?
・完全自己責任のもとでのみ使用可能です。
< 戻る >
18.お願いとお断り
このサイトの内容を利用される場合は、自己責任でお願いします。記載した内容(プログラムを含む)を利用した結果、利用者および第三者に損害が発生したとしても、このサイトの管理者は一切責任を負えません。予め、ご了承ください。
< 戻る >