スキャンされたアンケート用紙の画像を解析し、チェックボックスの選択状態や自由記述欄の記入有無を判定して、結果を CSV ファイルに出力するためのツール群です。
- GUIによる簡単な座標設定: アンケート用紙のどこを読み取るか、GUIで直感的に設定できます。
- スキャン時のズレ自動補正: 用紙に2点のアンカーを設定することで、スキャン時の微妙な回転やズレを自動で補正し、読み取り精度を向上させます。
- 柔軟な閾値設定: チェックボックスや自由記述欄の判定基準となる閾値を、項目ごとに細かく設定できます。
- デバッグモード: 読み取り状況を可視化した画像や、閾値調整に役立つグラフを出力し、設定の微調整をサポートします。
- 統計レポート生成: 解析結果から、単純集計やクロス集計を行ったサマリーレポートを自動生成します。
main.py:config.jsonの設定に基づきimagesフォルダ内の画像を解析し、結果をresults.csvに出力するメインスクリプト。coordinate_setter.py: 解析領域を設定するためのGUIツール。config.jsonを生成します。analyze_results.py:results.csvの内容を集計・分析し、サマリーレポートanalysis_summary.mdを生成するスクリプト。config.json: 解析領域の座標、閾値、デバッグモードの有効/無効などを定義する設定ファイル。images/: 解析したいアンケート画像(JPG, PNG)を格納するフォルダ。results.csv:main.pyによって生成される解析結果ファイル。free_texts/: 自由記述欄に記入があると判定された画像がコピーされるフォルダ。debug_output/: デバッグモード時に、解析過程の画像やグラフが保存されるフォルダ。analysis_summary.md:analyze_results.pyによって生成される分析レポート。
このツールは、ライブラリの依存関係を管理するためにConda仮想環境で実行することを強く推奨します。
-
Conda仮想環境の作成とライブラリのインストール ターミナルで以下のコマンドを実行し、必要なライブラリをインストールします。
# 仮想環境を作成し、主要ライブラリをインストール conda create -n survey-tool python=3.11 tk pillow pandas opencv tqdm -y # 作成した環境を有効化 conda activate survey-tool # pipで残りのライブラリをインストール pip install japanize-matplotlib
-
仮想環境のアクティベート(2回目以降) 一度環境を作った後、ターミナルを再起動した場合など、2回目以降にこのプロジェクトを使用する際は、以下のコマンドで環境を有効化してください。
conda activate survey-tool
ターミナルの行頭に
(survey-tool)と表示されれば成功です。
まず、解析したいアンケートの「どこに」「何があるか」を定義する設定ファイル (config.json) を作成します。
-
Conda環境を有効化し、ターミナルでこのプロジェクトのディレクトリに移動します。
conda activate survey-tool cd /path/to/your/project -
以下のコマンドで、設定ツールを起動します。
python coordinate_setter.py
-
アプリが起動したら、以下の操作で座標を設定します。
- 画像を開く: 「画像を開く」ボタンを押し、見本となるアンケートのスキャン画像を1枚開きます。
- モード選択: 作成したい領域の種類(チェックボックス、自由記述欄、アンカー1, 2)を選びます。
- 領域作成: 画像の上をドラッグして四角い領域を作成します。作成後、CSVの列名となる分かりやすい名前を入力します。
- アンカーについて: 「アンカー1」「アンカー2」を選択して領域を作成すると、その部分画像が
imagesフォルダにanchor1.png,anchor2.pngとして自動で保存されます。これはズレ補正の基準点として使われます。 - 調整:
- 作成した枠はドラッグで移動できます。
- 右のリストで項目を選び「複製」「削除」ができます。
Shift+ドラッグで画像全体を移動、マウスホイールで拡大・縮小ができます。
-
すべての領域を設定し終えたら、「設定をJSONに保存」ボタンを押し、
config.jsonという名前で保存します。
-
imagesフォルダを作成し、その中に解析したいアンケート画像をすべて入れます。(anchor1.png,anchor2.pngもこのフォルダにある状態です) -
ターミナルで以下のコマンドを実行します。
python main.py
-
実行が完了すると、プロジェクト直下に
results.csvが生成されます。また、自由記述があった画像はfree_textsフォルダにコピーされます。- デバッグ:
config.jsonの"debug_mode": trueを設定して実行すると、debug_outputフォルダに詳細な解析画像が出力され、閾値の調整に役立ちます。
- デバッグ:
最後に、出力されたCSVファイルをもとに、集計・分析レポートを生成します。
-
ターミナルで以下のコマンドを実行します。
python analyze_results.py
-
実行が完了すると、
analysis_summary.mdが生成されます。このファイルには、各項目の選択率や、項目間の関連性を示すクロス集計表などが記載されています。

