マークシート処理システム MarkScan の使い方まとめ 3日目
前々回の記事でマークシート用紙の作り方を簡単にまとめて、前回の記事では様式ファイルの作り方を詳しくまとめたので、今回の記事では、実際にマークシートを使った調査を行った後に、スキャナで取り込んでMarkScanで解析する部分を簡単にまとめたいと思います。
回答用紙のスキャン
紙にマークしてもらった回答用紙をパソコンで処理するために、まずはスキャナで読み込む必要があります。大量の回答用紙を一枚一枚スキャンしていくのは大変なので、ADF機能付きのスキャナを調達できればベストでしょう。
MarkScanには、スキャナからの入力を直接受け取って解析する機能がついているので、スキャナをつないでそのまま解析することもできます。しかし、スキャンしたデータを一度画像ファイルの形で保存し、フォルダごとMarkScanに渡す方法を強く勧めます。なぜなら、MarkScanによる解析作業はかなりの試行錯誤の連続なので、同じデータを何回も解析することになります。そのたびにスキャナで取り込みなおしていたら面倒だし時間の無駄なので、画像ファイルの形でパソコンに保存しておきましょう。加えて、MarkScanのエラー処理の際に、スキャン画像を見ながらエラー訂正をしたりする場面もあるので、画像ファイルの形で整理しておいたほうがいろいろと楽でしょう。
MarkScanが入力として受け取ることのできる画像ファイル形式は、.jpg, .bmp, .pdfの三種類ですが、ファイルサイズと取り扱いやすさの観点からjpg形式を勧めます。僕の記憶違いかもしれませんが、pdf形式からの読み取りはあまりうまくいかなかった記憶があります。
MarkScanで解析
MarkScanを起動したら、設定画面で作成した様式を指定します。そうしたら、「フォルダ選択」ボタンから、スキャンしたJPEG画像が格納されたフォルダを指定します。すると、その下で↓のように「しきい値」と「濃度」を指定することができるようになるので、この二つのパラメータを指定します。この二つのパラメータの指定は非常に重要で、デフォルト値のままうまく解析されることはめったにないです。パラメータを変えては解析をやり直して、満足できる精度が出るまで試行錯誤することになります。

MarkScanの処理工程
これらのパラメータの意味と指定方法を説明する前に、MarkScanがどういう順序でマーク解析を行っているかを見てみたいと思います。前々回の記事でサンプルマークシートを解析したときに、↓の画面を見せたことがあるかと思いますが、この画面下部のステータスバーに注目してみて下さい。
「解析開始=0ms / 2値化完了=235ms / 回転完了=672ms / プレビュー完了=782ms / TempFileSave完了=860ms / 位置解析完了=1485ms / マーク読取完了=1547ms / 解析完了=1547ms」と書いてあるのが見えると思います。これは、マークシートを解析するときの各工程と工程ごとに要した時間を表したものだと思われます。この表示から察するに、MarkScanは次のような手順でマークシートの解析を行っていると考えられます。
- 2値化
- 画像を「白」「黒」の2色に減色
- 回転
- シート右上と右下の主基準マークを基準に回転
- プレビュー
- エリア解析など?
- 位置解析
- シート右側とセクション下部のマークを基準に、マーク位置を特定
- マーク読取
- マーク位置に占める「黒」の割合からマークされているかどうかを判定
これらの工程のうち、最初の「2値化」は「しきい値」を指定することで、最後の「マーク読取」は「濃度」を指定することで、処理を細かく制御することができます。
しきい値の指定
「しきい値」は、マークシート画像を白黒に2値化するときに、白と黒を分ける明度のしきい値をさしています。つまり、しきい値よりも明るい色の点は白だと判断されて、しきい値よりも暗い色の点は黒だと判断されます。よって、「しきい値」が高ければ高いほど、「黒」だと判断される点が多くなるということです。しきい値の設定のよって解析結果がどう変わるのかを見るために、↓のような図を用意しました。
見ての通り、しきい値を上げたほうが黒として判断されている箇所が多いことがわかります。元画像はBの鉛筆を使って結構しっかりとマークした例ですが、それでもしきい値100だとほとんどマークが認識されていません。しきい値が高すぎると、紙の汚れや消しゴムで消した跡なども黒として判断してしまうリスクがありますが、経験的にはしきい値は高めの値にしておいたほうが良いと思います。
濃度の指定
↑の図をもう一度見てみると、MarkScanによって解析された画像では、各マークが青い点線で囲まれているのが見えると思います。MarkScanは、この点線で囲まれた部分をマーク欄として認識して、この四角形の中に「黒」と判断された点が何%あるかどうかで、マークされているかされていないかを判断しています。この判断基準になるのが、「濃度」というパラメータです。したがって、「濃度」が高ければ高いほど、「マークされた」と認識されづらくなるということです。
↑の図の下部には「クリック位置の濃度 (%)」というラベルとその隣の35や67といった数値があるのが見えると思います。この数値は、画像中央の水色と赤で色づいている部分の、「黒」の比率です。元画像を見ると、この部分はかなりしっかりと塗りつぶされているのがわかりますが、しきい値100ではわずか35%、しきい値200でも67%程度しか「黒」として認識されていないのがわかると思います。これは、紙に印刷されたマーク欄が円形なのに対し、MarkScanが認識するマーク欄はそれを包む四角形だからでしょう。なので、「濃度」はできる限り低めにしておくのがおすすめです。
ただし、「濃度」をあまりにも低くしすぎるのもよくありません。紙に印刷されたマーク欄の円形と、その中の数字だけでも黒の比率は25%程度になります。したがって、少なくとも30%程度にはしておかないと、全く塗りつぶしていない回答欄までマークされていると誤認識して、大量の「複数回答」エラーに悩まされることになります。
パラメータ指定のポイント
ポイントというほど大したものではないですが、
- しきい値は高め (200以上)
- 濃度はやや低め (35%〜50%)
だと考えておけばちょうどいいかと思います。マークシートの形状やスキャナの種類などによっても変わりますが。
コツとしては、感度を高める設定にしておいて、「複数回答」エラーが多少出てもいいから、「無回答」エラーを回避するような設定にする事をすすめます。つまり、しきい値は思い切って高めにして、濃度を35%程度にする方法ですね。
理由としては、「複数回答」エラーの方が数が少なくなりがちだからです。「複数回答」エラーの原因の多くは、消しゴム跡と間違えてわずかにマークした部分を放置したケースなどです。それに対して、「無回答」エラーのほとんどは回答者の筆圧の弱さが原因で起こります。したがって、「複数回答」エラーは基本的には例外的にしか起こりませんが、「無回答」エラーは一人の回答者が何十件も引き起こすことがあります。なので、感度を高めて筆圧が弱い人の回答をできるかぎり拾えるようにしておいたほうが、全体としての誤認識率は減らすことができます。
試行錯誤
パラメータを指定したら、実際に読み取りを行います。はじめは、10枚程度をピックアップして、パラメータを変えながら何回も解析を繰り返す事をおすすめします。読取結果パネルを見ると、↓の図のように正常に読み取れている欄と誤認識している欄を確認することができるので、これを見ながらパラメータを微調整していきます。

エラー修正
試行錯誤しながらパラメータを設定し、マークシートを全て解析したら、次は「エラーの修正」ダイアログでエラーを訂正していく作業です。エラー訂正の流れは前回の記事でも軽く説明したとおり、解析画像を目視で確認しながら正しい値を入力していきます。まれに、↓の図のように解析画像からはどちらが正解なのかが全く読み取れないことありますが、そのときは解析前の元画像を見るようにしましょう。

完成
エラー処理が完了すれば、あとはCSV形式で保存するだけです。保存する際、何かと邪魔なので「簡易集計」のチェックは外しておいたほうがいいかもしれません。どうせそのままエクセルなりSPSSなりRなりに取り込んで処理をするはずなので。
以上で、MarkScanの使い方のまとめはほぼ終わりです。少なくとも、僕がMarkScanを使って学んだことは以上でほぼ全てまとめられています。
とはいえ、実際に調査をしたときには「あーすればよかった」「こーしとけばよかった」というような感想をかなり抱いたので、次回でその点を簡単にまとめて、MarkScanの使い方まとめシリーズを終わりにしたいと思います。

