Skip to content

12r9p/HandyForm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

アンケート画像解析ツール

スキャンされたアンケート用紙の画像を解析し、チェックボックスの選択状態や自由記述欄の記入有無を判定して、結果を CSV ファイルに出力するためのツール群です。

主な機能

  • GUIによる簡単な座標設定: アンケート用紙のどこを読み取るか、GUIで直感的に設定できます。
  • スキャン時のズレ自動補正: 用紙に2点のアンカーを設定することで、スキャン時の微妙な回転やズレを自動で補正し、読み取り精度を向上させます。
  • 柔軟な閾値設定: チェックボックスや自由記述欄の判定基準となる閾値を、項目ごとに細かく設定できます。
  • デバッグモード: 読み取り状況を可視化した画像や、閾値調整に役立つグラフを出力し、設定の微調整をサポートします。
  • 統計レポート生成: 解析結果から、単純集計やクロス集計を行ったサマリーレポートを自動生成します。

スクリーンショット

座標設定ツール (coordinate_setter.py)

座標設定ツール

デバッグ用出力 (debug_output フォルダ)

解析結果

ファイル構成

  • 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仮想環境で実行することを強く推奨します。

  1. 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回目以降) 一度環境を作った後、ターミナルを再起動した場合など、2回目以降にこのプロジェクトを使用する際は、以下のコマンドで環境を有効化してください。

    conda activate survey-tool

    ターミナルの行頭に(survey-tool)と表示されれば成功です。


使用手順(ワークフロー)

Step 1: coordinate_setter.py で座標を設定し config.json を作成する

まず、解析したいアンケートの「どこに」「何があるか」を定義する設定ファイル (config.json) を作成します。

  1. Conda環境を有効化し、ターミナルでこのプロジェクトのディレクトリに移動します。

    conda activate survey-tool
    cd /path/to/your/project
  2. 以下のコマンドで、設定ツールを起動します。

    python coordinate_setter.py
  3. アプリが起動したら、以下の操作で座標を設定します。

    • 画像を開く: 「画像を開く」ボタンを押し、見本となるアンケートのスキャン画像を1枚開きます。
    • モード選択: 作成したい領域の種類(チェックボックス、自由記述欄、アンカー1, 2)を選びます。
    • 領域作成: 画像の上をドラッグして四角い領域を作成します。作成後、CSVの列名となる分かりやすい名前を入力します。
    • アンカーについて: 「アンカー1」「アンカー2」を選択して領域を作成すると、その部分画像が images フォルダに anchor1.png, anchor2.png として自動で保存されます。これはズレ補正の基準点として使われます。
    • 調整:
      • 作成した枠はドラッグで移動できます。
      • 右のリストで項目を選び「複製」「削除」ができます。
      • Shift+ドラッグで画像全体を移動、マウスホイールで拡大・縮小ができます。
  4. すべての領域を設定し終えたら、「設定をJSONに保存」ボタンを押し、config.json という名前で保存します。

Step 2: main.py で解析を実行する

  1. images フォルダを作成し、その中に解析したいアンケート画像をすべて入れます。(anchor1.png, anchor2.png もこのフォルダにある状態です)

  2. ターミナルで以下のコマンドを実行します。

    python main.py
  3. 実行が完了すると、プロジェクト直下に results.csv が生成されます。また、自由記述があった画像は free_texts フォルダにコピーされます。

    • デバッグ: config.json"debug_mode": true を設定して実行すると、debug_output フォルダに詳細な解析画像が出力され、閾値の調整に役立ちます。

Step 3: analyze_results.py で結果を分析する

最後に、出力されたCSVファイルをもとに、集計・分析レポートを生成します。

  1. ターミナルで以下のコマンドを実行します。

    python analyze_results.py
  2. 実行が完了すると、analysis_summary.md が生成されます。このファイルには、各項目の選択率や、項目間の関連性を示すクロス集計表などが記載されています。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages