Azure の OCR の日本語認識力徹底調査

初めて登場します、セールス担当の浜野です。

Advent Calender「ネクストスケープ クラウド事業本部 Advent Calendar 2017」 7日目の記事です。

私は Azure機械学習系サービスであるCognitive Services の Compute Vision API(OCR)について少し検証してみたいと思います。

ComputerVision



新聞やら雑誌やらでとても興味深い記事を見つけて、後で読み返したり参考にしたりするのにスマホで写真を撮っておくのですが、その後いろいろと面倒なことがあります。

例えば、ストレージに置くと画像ファイルを開いて中を見るという手間やそもそも検索ができないなど、いざ見ようとする時に手間がかかるんですね。

そこで、表題にあるComputer Vision APIのOCRを使って、TeamsやSlackなどのコラボレーションツールに投稿したりYammerなどの共有サイトへ投稿したりして、記事を文字におこし検索できる状態で保管しておくということができないか検討してみたいと思います。実装時に気になるところは、きちんと文字として認識されるのかという点です。

この回ではOCRの認識率(特に日本語環境)についていろいろと考察してみたいと思います。

【目次】 

  1. Computer Vision APIとは?
  2. 検証環境とその構築方法
  3. 検証
  4. まとめ

1.Computer Vision APIとは

Computer Vision APIはMicrosoftが提供するコグニティブサービスのうちの一つで、画像から様々な情報を抽出してくれるクラウドサービスで提供されるAPIです。例えば、画像にタグ情報や説明などのラベル付けをしたり、画像の中にある文字列を抽出したりできます。

詳しくはこちら

https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/

2.検証環境とその構築方法

私自身はコーディングを得意としていない(できない)のでLogicAppを使って環境を構築しようと思います。

検証環境の概略は以下の通りです。

  1. Office Lensで記事を撮影しOneDriveにアップロード
  2. アップロードされた画像ファイルをComputer Vision APIのOCRにかける
  3. OCRの結果をYammerに投稿

尚、Logic Apps + Cognitive Service の組み合わせについては、「プログラミングなしでお手軽な Azure Logic Apps」で触れてるので、そちらも参考にしてみてください。

【概略図】

logicapp

尚、Logic Appの設定は以下通りです。

logicapp2

とりあえずテストしてみます。

自分の名刺をスキャンします。日本語面でやってみましょう。

 【アップロード画像】
 【OCR結果】
名刺表画像  名刺表OCR 


非常によい精度で認識できていますので、この環境を使って様々な文書のパターンを検証してみます。

3.検証

その1 ~~縦書き~~

海外製品であるということで、縦書きの文書を読み込んだ時になんと返すのかが気になるところです。自宅にフリーの地域新聞があったのでそれで検証してみます。

 【アップロード画像】
 【OCR結果】
縦書き  縦書きOCR 

行単位では縦読みできてますけど、順番がバラバラです。結構大きめにとって読みやすくしているのですが、、、
他の記事もやってみたのですが、一段下げになっている行は最後に回される(?)ようです。


その2 ~~フォント~~

明朝体やゴシックなどは読み取れるのですが、学習していなさそうな特殊なフォントはどうでしょうか?
例えばセブンイレブンの封筒のロゴなんかはフォントとしてトレーニングしてなさそうです。 

 【アップロード画像】
 【OCR結果】
seven   読み取れず!


文字として認識されませんでした。

引きで撮ったりして何度かトライしましたが、文字として認識されてませんでした。

では縁取りはどんな感じでしょう

 【アップロード画像】
 【OCR結果】
 縁取り  縁取りOCR

文字として認識されない文字があります。

波打ってる文字はどうでしょう

 【アップロード画像】
 【OCR結果】
 波  波OCR

特に波打っていても認識してますが、「っ」が認識されませんでした。

今度は白抜きの文字なんかどうでしょう。

 【アップロード画像】
 【OCR結果】
 白抜き  白抜きOCR

おしい、「ー」も認識されづらいのですかね?


その3 ~~紙の反射などによる文字の欠損等~~


光沢のある紙の場合は照明などで光が反射して文字が飛んでしまう場合があります。

 【アップロード画像】
 【OCR結果】
 反射あり  反射ありOCR


「コペンハーゲン」が光の反射のせいで文字が薄くなってしまっています。その場合はうまく読み取れませんでした。

文字の濃淡が比較的均等になるように撮りなおしてみた結果

 【アップロード画像】
 【OCR結果】
 反射なし  反射なしOCR


きちんと認識されましたね。

OCRにかけるまえの元素材の状態は認識に大きな影響を与えるようです。

 

その4 ~~文字の大きさ~~


弊社の会社プロフィールの表紙全体をスキャンしてどれくらい文字を認識するか試してみます。

来年の年賀状をちょっと引きで撮ってみてやってみましょう。

 【アップロード画像】
 【OCR結果】
 文字大きさ2  文字大きさ2OCR

おお!!文字が小さくても読み込めてますね。
驚いたのは縦書きと横書きが混在していても認識されるという点です。

住所は文字色が薄かったからかな?

もう一つ、弊社の会社プロフィールの表紙も引きで撮ってみます。

 【アップロード画像】
 【OCR結果】
 文字大きさ  文字大きさOCR

こちらも英字と数字はしっかりと認識してます。

弊社の吾郷の意見ですが、日本語は読み取れなかったのは

「一度読んだ文字をディテクトが走っていて、英語って判断しているので、日本語のところは読み飛ばされてるんだと思います」

とのこと。

英数字は読み込んでいるので文字の大きさは多少小さくても認識できそうです。 


その5 ~~二段組みの場合~~


割とあるのが二段組みになっているタイプ。例えばテストした会社沿革やレシートなんかも二段組みになっている場合が多いです。

 【アップロード画像】
 【OCR結果】
 二段組  二段組OCR

左の行を下まで読み取ったあとに右の列を読み取りに行くようです。


4.まとめ

日本語の認識率はとても優れていると思いましたが、1文字だけ読めないなど完璧な結果を返すのは難しそうです。

その他、思ったことはこちら。

  • 縦書きは読み取れるが複数行になると順序が前後する場合がある。
  • 横書きでも二段組みの場合は左から順に読み取っていくので読みづらい
  • 小さい「つ」や「-」は読み取りづらい?
  • 文字の濃淡を均等にした方がいい
  • ロゴとかで使っているフォントは読み取れないかも
  • いただいた年賀状の整理をするのに使えそう
おまけ
レシピはいい感じだった。そして旨そう。

 【アップロード画像】
 【OCR結果】
 レシピ  レシピOCR

ネクストスケープ企業サイトへ

NEXTSCAPE

検索する

タグ

メタデータ

投稿のRSS