シャオミのスマートフォンに表のOCR機能が搭載された。印刷された表を認識して、Excelデータに出力してくれる機能だ。しかし、そのアリゴリズムは複雑で、意外に難易度が高いとIT之家が報じた。
表計算を認識できる機能をスマホに搭載
スマホカメラはいろいろな機能を持つようになっている。最近話題になっているのは、カメラで撮影した文字をテキストにしてくれるOCR(Optical Character Recognition/Reader、光学的文字認識)機能だ。撮影対象の中から文字部分を認識し、テキストデータ化をしてくれるため、テキスト保存することや外国語を母国語に翻訳をすることができる。
スマホメーカー「小米」(シャオミ)の創業者、雷軍(レイ・ジュン)は、カメラで表を認識し、Excelなどのスプレッドシートデータに出力できる機能を開発し、Xiaomi 10Sシリーズ、MIX Flod 2シリーズなどに搭載をしたと発表した。
紙に印刷された表を認識して、データ化することができ、Excelなどでそのまま編集できるようになる。もちろん、セル結合された複雑な表にも対応をしている。
意外に難易度が高い表のOCR
表のOCRは簡単なように見えて、実はかなり難易度が高い。なぜなら、多くの表は、文章などと混在をしているため、まずは表検出をする必要があるからだ。しかも、カメラの映像は表に対して正対しているとは限らない。そこで、シャオミのアルゴリズムでは、表らしき図形を検出すると同時に表の4隅も検出をする。この4隅の距離を見て、画像の歪みを補正して、表として抽出をする。
このような抽出は、ディープラーニングの中心技法であるCNN(畳み込みニューラルネットワーク)を利用して、特徴抽出を行い、その特徴が表に合致をするかどうかを判定すれば難しいことではなくなっている。しかし、この演算をスマートフォンという限られたリソースの中で行うのは至難の業だ。シャオミでは、shuffleNetV2を利用し、徹底した軽量化を行う必要があった。
表の認識を難しくしているセル結合
表のOCRで問題になるのは、多くの表がセル結合を使い、セルの大きさがバラバラであるということだ。特にヘッダー行などではセル結合が多用される。
そこで、まず表の全体を見て、M行×N列という行数と列数を割り出す。それから1つ1つのセルを見ていき、単一セルは0、横結合されているセルは1、縦結合されているセルは2のラベルを割り振っていく。
これで表の構造が把握できる。
難易度を上げているテキストの折り返し
次に表構造のラベルに基づいて、独自のセル番号をそれぞれのセルに割り振り、そのセルのテキストや数字を認識し、データを読み取っていく。
この時、問題になるのが、セル内で折り返しをしているテキストだ。1つのセルの中に複数の行がある。1つのセルに4行ある場合、これを1つのセルと判断をするか、それとも4つのセルがあるのかは判断が難しい。
これには、テキストの矩形とセルの矩形のIoU(Intersection over Union)=重なり具合を計算する。このIoUが最大値になるということは、テキストの中心とセルの中心が一致をしているということになる。つまり、1つのセルに1つの要素が中央寄せをされて記述されている。
このIoUが最大値ではないものの、比較的大きな値を取るということは、1つのセルに1つの要素が左寄せまたは右寄せされて記述されている。
このように、IoUの大きなテキストからセルにあてはめていくと、最後に複数行のセルが残る。すでに他のセルはデータが埋まっているので、残りのセルに複数のテキストが入るということがわかる。これにより、複数行のセルの内容も決定していく。
意外に役立つ表のOCR
このようにして、すべてのセルの内容が決定でき、しかも左寄せ、中央寄せ、右寄せも決定できる。あとはこの内容をExcel形式で出力をすればいいだけだ。
地味ではあるが、仕事をする上では大きな助けになる機能だ。雑誌や新聞、ウェブに掲載されている表を読み込み、グラフを作成するときなどに役立ってくれる。