Skip to content

tissueMO/marksheet-reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

マークシートリーダー

概要

所定のフォーマットに従って作ったマークシートを読み取ります。 読み取った結果はCSVとして保管され、読み取りに問題が生じたものは別ファイルに抜粋されます。

参考程度ですが、サンプルのマークシートにてのべ400ページ程度読み取ったところ、誤りがあったのは10件程度でした。

大まかな流れ

  • 所定のフォーマットに従って、マークシートを作成する
    • Excel等の表計算ソフトを使うことをお勧めします
  • 紙に印刷する
  • 書き込む
  • スキャナー(ADF必須)で大量読み込み
    • このとき、必ずJPEGやPNG等のラスターデータとして保存して下さい
    • 200dpi 推奨。それ以外の解像度で読み込んだ場合はマーカーが正しく認識できない可能性があります
  • 1つのディレクトリーにまとめる
    • 順番を保持したい場合はファイル名を事前に整形しておくことをお勧めします
  • マークシートリーダー実行
  • 集計結果を精査、不備のあるものは手動集計
    • 出力結果は Excel で確認することを想定していますので、あえて Shift-JIS エンコードにしています
    • テキストファイルは UTF-8 です

マークシートのフォーマット

  • すべて同じ行間(高さ)にして下さい
  • マーカー画像 /image/marker.jpg を使って、マーク欄3点にこの画像を配置します
    • 左上
      • マーカー画像の上端と下端まで含めて抽出します
    • 右上
      • マーカー画像の左端まで含めて抽出します
    • 右下
      • マーカー画像の上端までを抽出します
  • マーカー画像の次の行は、必ずページ番号を表す固定マーク欄を用意して下さい
    • 左端から 1, 2, ... ページ目と表します
  • それ以降の行については、記入欄とそうでない行を混在させていても構いません
    • ただし、説明欄は同一行の左側に記載することをお勧めします (段ズレ防止)
  • マーク欄は、セル内いっぱいに塗りつぶされている方がよいため、矩形をお勧めします
    • ただし、一般的ではないので丸でも構いません
    • 枠線は、使用するプリンターにおいて、できる限り薄い色を使用することをお勧めします
  • マーク欄の上下1行ずつ空行を設けることをお勧めします
    • 1行1列ずつ区切るため、空行がないと他のマーク欄の影響を受けやすいためです

フォーマットに従った設定方法

  • フォーマットを変更した場合は /settings.conf の設定値を変更する必要があります
  • 実際のマーク欄がどのページのどの行にあるかを設定するには p_question_indices の項目を編集します

マークシートの読み取り方法

どちらでも構いませんが、ご自分の環境を汚したくない方はDockerを使うことをお勧めします。

起動オプション

  • --imgdir には読み込み対象の画像のパスを指定します [必須]
    • Dockerで動かす場合は、このリポジトリー直下に配置して下さい
  • --threshold は塗りつぶしの閾値で、0.0-1.0 の間で指定します [任意: デフォルト 0.5]
  • --verbose は動作が怪しいときに指定して下さい [任意]
    • フォームを調整したい場合は、これを指定することで実際に抽出した画像を目視で確認できるようにファイルが出力されるようになります

Dockerで実行する

  • Docker と docker-compose をインストールしておく (環境によって全然違うので適宜ググって下さい)
  • ターミナルから、このリポジトリーの直下に入る
  • $ docker-compose build
  • $ docker-compose run marksheetreader --imgdir ./sample --threshold 0.5 --verbose
    • 起動オプションについては先述の通り
    • サンプルを試すだけなら以下
      • $ docker-compose run marksheetreader
  • summary ディレクトリーが作成されて、その中に読取結果およびエラー情報が格納されます
    • 入っているものには、集計データ・回答データ・重複回答・未回答のデータが含まれます

ローカルで直接実行する

  • Python3 および pip3 をインストール (環境によって全然違うので適宜ググって下さい)
  • ターミナルから、このリポジトリーの直下に入る
    • 環境を汚したくない方は適宜事前に仮想環境を作った上で入っておいて下さい
  • $ pip install -r requirements.txt
  • $ python ./main.py --imgdir ./image --threshold 0.5 --verbose
    • 起動オプションについては先述の通り
  • summary ディレクトリーが作成されて、その中に読取結果およびエラー情報が格納されます
    • 入っているものには、集計データ・回答データ・重複回答・未回答のデータが含まれます