今回は、Cloud Vision APIを利用して、ローカルディスク上にある画像内のテキストを検索できるようにしてみます。
デザイナーさんは過去に作成した画像データや素材、ロゴなどのファイルを多く持っているのではないでしょうか。そんなデータを通常の検索と同じ方法(Macならスポットライト検索)で、見つけることができれば便利なはずです。
Cloud Visionは、Google社が提供している人工知能(AI)のサービスのひとつです。専門的なことを学習させたりすることはできませんが、文字やロゴ、顔認識、ランドマークの認識などが可能です。
このうち「文字を認識」する機能を利用して、ローカルディスク内にある画像に書かれた文字を読み出します。
通常、Mac/Windowsとも画像に書かれてしまった文字は、検索することができません。これは、画像=ピクセル情報であり、そこには文字情報がないためです。人間であれば、見れば分かる画像内にある文字もコンピューターにとっては、それが文字だとはわかりません。
それを分かるようになったのが、最近のAIのいいところです。Cloud Visionでは、その文字認識が手軽にできるようになっています。
Cloud Visionを利用するには、あらかじめ登録しAPIキーを取得しておく必要があります。また、クレジットカードの情報登録も必要になります。
というのも、90日の無料期間を超えると有料になってしまうからです。とは言っても、現時点では3万円分ほどは無料で使えますし、1日1000回を超えなければ無料のままです。
Cloud Visionの登録に関してはユーザーの状況によって異なりますが、以下のページを参考にして登録してください。
https://syncer.jp/cloud-vision-api
登録し終わればAPIキーが発行されます。Cloud Visionは90日以降は有料ですが、どのくらい使用したのかはGoogle API Consoleで確認することができます。
●Google API Console
https://console.developers.google.com/apis/
これで準備はできました。それでは、いよいよ画像検索をしてみましょう。
まず、画像から文字を抽出した結果は「画像ファイル名」のあとに「TEXT.txt」の拡張子を追加したテキストファイルとして保存します。
これは画像と検索結果を対応させるのに楽だからです。dgcr.jpgなら抽出したテキストはdgcr.jpg.TEXT.txtとなります。
検索した結果は以下のようになります。これは、この原稿を画面キャプチャーし、Cloud Vision APIを使って認識させたものです。一応分かち書きも対応しているっぽいのですが、とりあえず全文は最初にまとめてくれます。
データはJSON形式で返されるので、もしプレーンテキストとして処理するなら、何らかの編集作業や処理が必要になります。
------
{
"responses": [
{
"textAnnotations": [
{
"locale": "ja",
"description": "Gen kou.txt\nクリエイター手抜きプロジェクト\nMac+Al編Cloud Vision APIを利用したテキスト検索\n古籏-浩\n今回はCloud Vision APIを利用してローカルディスク上にある画像内のテキストを検索できるようにしてみます
------
これらのテキストデータは、通常のコンピューターでの検索にひっかかります。ひっかかったファイルがdgcr.jpg.TEXT.txtならdgcr.jpgに、その文字が書かれている、ということになります。
ということで、実際のスクリプトは以下のようになります。これはシェルスクリプト(Shell Script)で、UNIX上で動作します。Mac OS X/OS Xならターミナル.appから実行することになります。
以下のスクリプトをテキストエディタで入力し、文字コードはASCIIかUTF-8、改行コードLFで保存します。拡張子は.shにしておきます。保存したファイルは、そのままでは実行できませんので
chmod +x 作成したファイル名
のようにして実行権限を追加します。以下のスクリプトの●は印の部分に取得したAPIキーを指定します。
#!/bin/bash
cd $1
file=*.jpg
for i in ${file}
do
echo '{"requests":[{"image":{"content":"' > ./temp.json
openssl base64 -in $i | cat >> temp.json
echo '"},"features":[{
"type":"TEXT_DETECTION",
"maxResults":20
}]}]}' >> temp.json
curl -k -s -H "Content-Type: application/json" https://vision.googleapis.com/v1/images:annotate?key=●
--data-binary @./temp.json > "$i.TEXT.txt"
あとは、作成したファイル名(例えばaiText.sh)の後に画像があるフォルダ(例えばデスクトップにあるsampleフォルダ)のパスを指定します。ターミナルでは以下のようになります。
./aiText.sh /Users/dgcr/Desktop/sample
すると以下のように画像に対応したテキストファイルが生成されます。
11_240x.jpg
11_240x.jpg.TEXT.txt
url.jpg
url.jpg.TEXT.txt
画像の中に何も文字がない場合、TEXT.txtファイルは以下のようになります。
{
"responses": [
{}
]
}
JPEG画像でなくPNG形式の画像を処理したい場合は上から3行目の
file=*.jpg
を
file=*.png
に変更してください。また、最大検索数を変更する場合は
"maxResults":20
の20の数値を変更してください。
なお、横書きは結構認識されますが、縦書きの場合うまく認識されません(うまくいくこともありますが、期待してはいけません)。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
デジクリでAIと省略表記するとAdobe Illustratorなのか人工知能(Artificial Intelligence)のAIなのか分かりにくいかも。ここは、人工知能の場合はAIと書かずに「人工知能」と書いた方がよいのかも。
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・訂正一覧はこちら
http://www.openspc2.org/reibun/IchigoJam/book/index.html
・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/
・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/
・データビジュアライゼーションのためのD3.js徹底入門
http://www.amazon.co.jp/dp/4797368861
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/