Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

名刺画像からの企業ロゴ抽出技術

こんにちはDSOC R&D の糟谷です。

今回は、Sansanで開発した「名刺画像からの企業ロゴマーク抽出技術」について紹介しようと思います。
SansanやEightでは取り込んだ名刺のロゴマークが表示されるようになっています。表示されるロゴは、Webから取得したものと、名刺から取得したものに分かれます。
Webだけでも数十万社分は取得できるのですが、日本には300万以上の会社があるので、もう一歩踏み込んでみよう、ということで名刺画像から画像処理を用いた取得技術も開発しています。
今回のブログではその開発の様子を紹介したいと思います。

二つのエンジンを併用

画像処理でロゴを抽出する技術は二つあり、並行して動かしています。

  1. 画像特徴量をブースティングツリー(Xgboostのライブラリを使用)でスコアリングして判定する
  2. 畳み込みニューラルネットワーク(CNN)を用いてロゴを抽出する

f:id:kasuya_ug:20190723113439p:plain
特徴量ベースのロゴ抽出技術
f:id:kasuya_ug:20190722213438p:plain
畳み込みニューラルネットワークによるロゴ抽出

最近の画像処理だと最初からCNNを使っていくケースも多いかと思いますが、特徴量ベースの手法も使用している理由を説明していきたいと思います。

Sansanのデータ

Sansanの名刺入力では、名刺をピースと呼ばれる部分画像にばらばらに分割し、個人情報ではない状態にしてから、それぞれに「会社名」「部署名」「氏名」などタグをつけ(選択工程)、タグの内容に沿って最適な手順で文字起こしします(入力工程)。
詳しくはこちらを参照ください。
クラウドソーシングによる名刺データ化プロセスの実践)

名刺データとしてはロゴは入力する必要がないので、ここがロゴであるというようなタグはありません。ただ、ロゴは会社名が読み取れる可能性があるので、「会社名」タグが付いていることが多いです。

そのため、会社名とタグが付いていて、会社名として使われていない部分はロゴの可能性が高いということになります。
このようなデータを1000程度抽出し、当社のオペレーターさんにロゴかロゴでないかを判断していただき、正解データとすることにしました。

ロゴとは何か

しかし、ここで難しい課題に直面します。
What is ロゴ? 
ロゴとは何か?です。
普通のフォントで書かれた会社名はもちろんロゴではないですが、では会社名が特殊なフォントで書かれていたらどうでしょうか。
名刺にはグループのロゴや商品・サービスのロゴ、ゆるキャラなども載っています。これらはロゴでしょうか。
また、どこまでがロゴでしょうか。ロゴの下に標語がある場合もありますが、それもロゴでしょうか。
マーク+会社名で初めてロゴとして成立することもあります。

これらを自分たちの中で定義できないと、オペレーターさんも迷ってしまったり質問が来てもタイムリーに答えられなかったりします。

最終的には

  • 企業ロゴとは:会社名またはその英語や頭文字などを基に意匠化した企業を代表する図案
  • 意匠化とは:マークを追加したり、色やフォントを複数使用する等して変形すること
  • 企業ロゴでないもの:グループのロゴ、商品のロゴ、意匠化されていない会社名
  • その他ロゴとするもの:マーク+会社名、標語などの上下左右の文字はあってもなくてもロゴ

と決めました。

エンジン開発の方針

オペレーターさんの負荷を考えると、あまり多数の正解データは作れないことや、既にピースに分割されている画像なので、CNNを使うより特徴量ベースの手法のほうが低計算量かつ短期間で開発できると考え、特徴量をXgboostで分類するモデルとそれにヒューリスティックスを加えたロゴ判定エンジンを開発しました。
現在、このロゴ判定エンジンで数十万社のロゴが取得できています。


そして、もう一歩踏み込むため、CNNベースのエンジンを追加で開発し、今までロゴが取れていなかった名刺に適用することとしました。

学習データとして最初のモデルで得られたロゴのうち、特にスコアが高いもの数万件と、追加で正解データを作成してロゴを抽出するニューラルネットを学習しました。
こちらを併用することで、さらにロゴを取得できるようになりました。
個人的にはスコアが高いといっても、自動抽出したものなのでミスも含まれ、そのあたりが汎化されるかが気になっていましたが大丈夫だったようです。

今後はサービスを継続しながら、精度とコストを勘案してCNNベースのエンジンで判断する範囲を増やしていこうと考えています。

終わりに

今回はロゴ抽出技術について紹介いたしました。
ここに書いたこと以外にも、どうやって事業部にデータを連携するか、法的な問題はないか、ロゴ抽出のミスが見つかった際のフィードバックはどう受けてどう対応するかなど、様々なことを考えてシステム化しました。

SansanのR&Dは少人数でいろいろなことをやっているので、一人一人が考えられる裁量の幅は広いです。
使うデータも一般にはないデータがあって、それを工夫して使うことができますし、「自分たちが認識したい対象は正確には何なのか」ということから決めることができます。
そういった環境に興味のある方はぜひ、Sansanにジョインしていただければと思います。

© Sansan, Inc.