リポジトリ:
注記: 本プログラムは筆者がPythonプログラム開発を学習する目的で作成・公開したサンプルです。機能や設計は学習を優先した最小実装であり、研究・業務での利用可否や精度保証は行いません。競合するグラフデジタイザーツールの存在や仕様は未確認です。
要約
- 画像のグラフからクリックで数値を取得しCSV出力するローカルPythonツールを作った。
-
x軸とy軸のスケールを独立選択。
線形 / log / 確率紙の組合せにより9通りに対応。 - 既知点を2点以上クリックしてキャリブレーション → 欲しい点をクリックしてリストに追加 → CSVへ保存。
- 依存は
numpyとPillowのみ。ブラウザ不要でローカル完結。
メイン画面の例
背景
- 論文のグラフ画像から数値を取得したいとき、クラウドのデジタイザが選択肢となる。
- しかし、クラウドへ論文のデータを送信することに不安がある。
- そのため、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
基本フロー
-
スケールを選ぶ xとyでそれぞれ
線形log確率紙を選択 - キャリブレーション 軸上の既知点(最小と最大など)を2点以上クリックし表示ダイアログに実座標を入力
- データ取得 目的点をクリックすると下部テーブルに追記される
-
保存 「データ取得を終了」を押してCSV名を入力
graph_value_output/に保存
CSVは
x,y2列 ヘッダなし
キャリブレーション
-
対応スケール:
線形×線形線形×log線形×確率紙log×線形log×loglog×確率紙確率紙×線形確率紙×log確率紙×確率紙 - 確率紙モードの注意: 入力単位は0–1 または 0–100% を選択 0 と 100% は不可 分位が発散するため
- log軸の注意: 0は不可 最小値は正の値を設定
- 前提: 軸は画像の水平と垂直に平行 斜めの図は事前に回転補正
キャリブレーション中の例
注意
- MIT License 詳細はリポジトリ参照
- 依存ライブラリ
numpyPillow - 学習目的での提供 開発者(筆者)がPythonプログラム開発を学習するためのサンプルとして公開しています。利用による損害については一切の責任を負いません。自己責任でご利用ください
- 競合ツールの存在は未確認 本稿は比較検討を意図せず 学習と再現のための最小実装を共有するものです

