GPT-4Vの画像トークンを90%削減した画面認識システム
| 手法 | 画像サイズ | トークン数(GPT-4V) | 月間コスト(100回/日) |
|---|---|---|---|
| フルスクリーン(1920×1080) | 2.07MB | ~1,700 tokens | $500+ |
| 24分割(1タイル) | ~90KB | ~170 tokens | $50 |
| 差分検知後(平均3タイル) | ~270KB | ~510 tokens | $150 |
削減率: 約70-90%(状況により変動)
目的: 画面を24分割し、必要なタイルのみを送信
主な機能:
# タイル7, 8, 13, 14(画面中央4枚)のみ取得
python screen_capture_24grid.py --tiles 7,8,13,14
目的: 前回との差分を検知し、変化があったタイルのみを送信
主な機能:
# 前回との差分を検知し、変化部分のみ送信
python screen_diff_detector.py --threshold 0.05
目的: テキストの座標を取得し、該当タイルを特定
主な機能:
# "送信"ボタンの座標を検出し、該当タイルを特定
python ocr_text_locator.py --text "送信"
1. タイル単位でのハッシュ比較
各タイルのピクセルデータをハッシュ化し、前回との差異を高速検出。
2. 変化閾値の調整
# 5%以上の変化があったタイルのみ送信
--threshold 0.05
3. 変化パターンの最適化
Claude(Vision Language Model)に画面を見せながら、PC操作を自動化するシステム。従来のRPA(画像認識ベース)と異なり、VLMが画面内容を「理解」して操作します。
このツールキットは、SPQR(Semi-autonomous Prototyping and Quality Refinement)システムの一部として開発されました。質先行量産手法により、実装→テスト→改良を高速サイクルで回し、3週間で実用レベルに到達しました。
# 1. 画面全体を24分割で確認
python screen_capture_24grid.py --tiles all
# 2. Claude: 「フォームは画面中央(タイル13, 14)にあります」
# 3. 該当タイルのみ送信
python screen_capture_24grid.py --tiles 13,14
# 4. Claude: 「氏名欄に入力してください」→ 入力実行
# 5. 差分検知で変化部分のみ確認
python screen_diff_detector.py --threshold 0.05
トークン削減: 1,700 tokens → 340 tokens(80%削減)
# 1. 初回は全体を取得
python screen_capture_24grid.py --tiles all
# 2. 以降は差分のみ
while true; do
python screen_diff_detector.py --threshold 0.05
sleep 5
done
効果: 変化がない場合はトークン消費ゼロ
pip install pillow numpy opencv-python pytesseract
# macOS
brew install tesseract
# Ubuntu/Debian
sudo apt-get install tesseract-ocr