無駄ロボット研究所

AIを活用して本の表紙画像から情報をデータベース化 ~叡智! 表紙解析ロボの巻

本文よりも表紙を愛するあなたへ

『無駄ロボット研究所』ではRPA(Robotic Process Automation)ツール「UiPath Studio」を使って役に立たない、無駄なロボットを作っていきます。業務を効率化するという本来RPAで実現すべき目的とは真逆のロボットたちをお楽しみください。

 あなたは本好きですか? ボクは表紙好きです。書店に並ぶきらびやかな風景、手に取ったときのワクワク感。人も第一印象が大切ですが、本も、パッと表紙を見たときに受ける第一印象って大切ですよね。そこで、今回は、そんな表紙愛をAIにぶつけるロボを作ってみました。

表紙に何が書いてあるか?

 すみません。

 もしかすると、今回は、少し、役に立ってしまいそうなロボットを作ってしまったかもしれません。

 本の表紙に何が書いてあるのかを解析するロボットです。

 もしかして、日本だけなんですかね? 本の表紙に、あんなにいろいろな文字が書かれているのって?

 『映画化決定』『●●万部突破!』『もっとも注目される××』。タイトルとサブタイトルまではいいとして、最近では、本の表紙に、その内容を表す言葉がぎゅうぎゅうに詰まっています。雑誌だと、もっと具体的で、記事タイトルや内容がそのまま書かれていることもありますね。

 紹介文に同じ言葉が使われていることもありますが、せっかくなので表紙から、こうした文字をテキストデータとして取り出してみましょう。

AIを使えば簡単

 表紙から文字を取り出すには、AIを使います。

 通常のOCR(画像認識)でも不可能ではありませんが、本の表紙の場合、タイトルのフォントがデザインされていたり、斜めに文字が配置されていたりするので、一般的なOCRでは認識精度が極端に低下します。

 画像認識用のAIは、いろいろなクラウドサービスで提供されているのですが、今回はGoogleの“Cloud Vision API”を使います。

 Web上からサービスを試せるので、興味がある人は適当な画像をドラッグしてみることをおすすめしますが、このサービスは、なかなか完成度が高く、次のようなことができます。

  • Labels:分類
  • Web:関連するWebコンテンツの表示
  • Text:テキストの抽出
  • Properties:使われている色の割合
  • Safe Search:AdultやViolenceに該当するかどうかの判断

 色も分析できるので、膨大な数の表紙を分析したデータベースを作れば、『●●に関する赤い本』のような検索もできそうですが、今回はテキストだけ抽出してみます。

 なお、“Cloud Vision API”は月間1,000ユニットまで無料です。本気で表紙データベースを作りたいなら有料プランが必要ですが、少し試す程度ならタダなので、ぜひ活用しましょう。

 前回の記事(饒舌! お返事ロボ2の巻)を参考に、Google Cloud Platformにサービスを追加して、アクセスするためのAPIキーを取得しておきましょう。

Google Cloud Vision APIを使って表紙画像を解析する
サービスにアクセスするためのAPIキーを取得しておく

ロボットはシンプル

 さて、ロボットは実にシンプルです。本稿執筆時点で筆者が使っている「UiPath Studio」(Community Edition 2019.5.0 Beta0)には、標準で“Google Cloud Vision OCR”エンジンが搭載されているので、これを使って画像からテキストを簡単に抽出できます。

画像データの確保

 事前の準備として、解析したい表紙データを用意します。今回は、インプレスブックスのサイトから『できるUiPath』の表紙データをダウンロードしました。

画像を読み込み

 ローカルに保存した画像ファイルを扱うには、[画像を読み込み]アクティビティを使います。このアクティビティを配置後、読み込むファイル名を指定しましょう。なお、プロジェクトと同じフォルダーに表紙画像を保存した場合はパスなしでファイル名だけの指定ができます。

 プロパティパネルでは、[出力]の設定が必要です。[Ctrl]+[K]キーを押して変数作成モードにしてから、“imageDat”などの画像を格納する変数を指定しておきます。

プロパティパネルの出力に変数(ここでは“imageDat”)を作成

Google Cloud Vision OCR

 「OCR」などのキーワードでアクティビティを検索すると、“Google Cloud Vision OCR”が表示されます。これを配置し、プロパティパネルに必要な情報を設定しましょう。
  • 言語:"Japanese"
  • APIキー:Google Cloud Platformで確認したAPIキー
  • 入力:imageDat(画像を読み込みの出力で作成した変数)
  • 出力:resText([Ctrl]+[K]キーを押して新しく変数を作成)
プロパティパネルで、言語、APIキー、入力、出力を設定

1行を書き込み

 resTextを指定して、[出力パネル]に結果を書き出します。

 さあ、これでロボットが完成しました。実行すると、画像データがクラウドサービスに投げられ、解析された結果が[出力パネル]に表示されます。

 一部、誤認識も見られますが、ロゴっぽい表記なども正確に読み取られており、その精度の高さに感心させられますね。

結果を確認

 ちなみに、今回はローカルに保存したファイルを指定しましたが、Web上のデータを直接指定して解析することもできます。[OCRでテキストを取得]アクティビティを使って、ブラウザー上の画像を指定、標準のOCRエンジンを削除して、今回と同じ“Google Cloud Vision OCR”に置きかえるだけです。

 「UiPath」はWebスクレイピングのツールとしても使えるので、Web上の画像データを自動的に収集して、解析するといったことも技術的には可能です。

 ただし、サイトによっては、スクレイピングが禁止されている場合もあるので、実際に試す場合は注意しましょう。