#daiizメモ

Scrapboxに夢中

Cloud Vision APIのOCRにより範囲を定めて写真を切り取るツール

コンセプト

OCR (Optical Character Recognition) によって写真の切り取り撮影範囲 (Range) を指定するアイデア (Orange 🍊 )です.トリミング指定範囲の左上と右下に短形のコーナーを表すマグネットシートを置いた状態で写真を撮影します.マグネットシートには左上と右下を示すための「左上」,「右下」のキーワード文字が入っています.これらの文字を認識した座標位置と傾きに基づいて画像がトリミングされます.キーワード文字の認識には Google Cloud Vision API の TEXT_DETECTION 機能を用います.

用意するもの

撮影の流れ

  • スマートフォンなどの任意端末で写真を撮影
  • 撮影時に範囲指定用のキーワード入り「くの字」マグネットシートを作って使う(撮影結果のサンプルを参照)
  • マグネットなのでホワイトボードの範囲指定もできる
  • 真上から撮影しないとほぼ失敗する
  • 専用のウェブアプリから写真をアップロード
    • サーバーで Cloud Vision API の TEXT_DETECTION を呼び出し
    • キーワード「左上」「右下」(格好悪いので今後さらに検討)を検出して位置を確定
    • 見つかったものを採用(片方指定でも良い)
    • デフォルトは(0, 0), (W, H)
    • どちらも検出できなければ切り取らない(完全デフォルト)
  • 切り取り済みの画像が返却される
  • Gyazo にアップロード可能

写真切り取りウェブアプリの様子

https://i.gyazo.com/4c82067573ce984e9f97b2a21e8b16e2.gif

撮影結果のサンプル

  • オレンジの模型を真上から撮影

  • 書籍裏表紙を真上から撮影

  • クーポンを選択して撮影

ソースコード

本ツールをローカル環境で実行する場合は,Google Cloud Vision API Key と Gyazo API Client ID をご用意ください.

今後の展望

  • スマホアプリ化
  • 「くの字」マグシートの傾きにあわせたトリミング
    • Cloud Vision API の文字認識を使うと単語位置の4隅座標が得られるため,水平傾きを算出できる.
    • 正しい角度を求めるために,文字の大きさ等を検討する.(キーワードの手書きはまずいだろう)
    • OCRが効く範囲で対応する
  • 回転したいときとそうでないときがあるので,角度を提案するに留めて,クライアント側で回転角度を自由に調節できるようにしたい
  • マイタックラベルのサイズ (直径8mm) を利用して,切り取られた画像のサイズを算出して管理

Cloud Vision API を使った過去アプリ

(2017-02-06 1:00 投稿予約)