0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

グラフ画像→数値化ツール:線形・対数・確率紙をクリックでCSV化

Last updated at Posted at 2025-11-02

リポジトリ:

注記: 本プログラムは筆者がPythonプログラム開発を学習する目的で作成・公開したサンプルです。機能や設計は学習を優先した最小実装であり、研究・業務での利用可否や精度保証は行いません。競合するグラフデジタイザーツールの存在や仕様は未確認です。

要約

  • 画像のグラフからクリックで数値を取得しCSV出力するローカルPythonツールを作った。
  • x軸とy軸のスケールを独立選択線形 / log / 確率紙の組合せにより9通りに対応。
  • 既知点を2点以上クリックしてキャリブレーション → 欲しい点をクリックしてリストに追加 → CSVへ保存
  • 依存は numpyPillow のみ。ブラウザ不要でローカル完結

メイン画面の例

メインウィンドウ


背景

  • 論文のグラフ画像から数値を取得したいとき、クラウドのデジタイザが選択肢となる。
  • しかし、クラウドへ論文のデータを送信することに不安がある。
  • そのため、Pythonを用い、線形対数確率紙 スケールに対応したデジタイズツールを開発した。

使い方

インストール

python -m venv .venv
# Windows
.venv\\Scripts\\activate.bat
# macOS/Linux
# source .venv/bin/activate
pip install numpy pillow

git clone https://github.com/ceedarr/graph-digitizer-py.git
cd graph-digitizer-py

実行

# 画像未指定で起動 ファイルダイアログが開く
python graph_digitizer.py

# 画像を指定して起動
python graph_digitizer.py path/to/figure.png

基本フロー

  1. スケールを選ぶ xとyでそれぞれ 線形 log 確率紙 を選択
  2. キャリブレーション 軸上の既知点(最小と最大など)を2点以上クリックし表示ダイアログに実座標を入力
  3. データ取得 目的点をクリックすると下部テーブルに追記される
  4. 保存 「データ取得を終了」を押してCSV名を入力 graph_value_output/ に保存

CSVは x,y 2列 ヘッダなし


キャリブレーション

  • 対応スケール線形×線形 線形×log 線形×確率紙 log×線形 log×log log×確率紙 確率紙×線形 確率紙×log 確率紙×確率紙
  • 確率紙モードの注意: 入力単位は0–1 または 0–100% を選択 0 と 100% は不可 分位が発散するため
  • log軸の注意: 0は不可 最小値は正の値を設定
  • 前提: 軸は画像の水平と垂直に平行 斜めの図は事前に回転補正

キャリブレーション中の例

キャリブレーション中

注意

  • MIT License 詳細はリポジトリ参照
  • 依存ライブラリ numpy Pillow
  • 学習目的での提供 開発者(筆者)がPythonプログラム開発を学習するためのサンプルとして公開しています。利用による損害については一切の責任を負いません。自己責任でご利用ください
  • 競合ツールの存在は未確認 本稿は比較検討を意図せず 学習と再現のための最小実装を共有するものです
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?