初めて登場します、セールス担当の浜野です。
Advent Calender「ネクストスケープ クラウド事業本部 Advent Calendar 2017」 7日目の記事です。
私は Azure の機械学習系サービスであるCognitive Services の Compute Vision API(OCR)について少し検証してみたいと思います。
新聞やら雑誌やらでとても興味深い記事を見つけて、後で読み返したり参考にしたりするのにスマホで写真を撮っておくのですが、その後いろいろと面倒なことがあります。
例えば、ストレージに置くと画像ファイルを開いて中を見るという手間やそもそも検索ができないなど、いざ見ようとする時に手間がかかるんですね。
そこで、表題にあるComputer Vision APIのOCRを使って、TeamsやSlackなどのコラボレーションツールに投稿したりYammerなどの共有サイトへ投稿したりして、記事を文字におこし検索できる状態で保管しておくということができないか検討してみたいと思います。実装時に気になるところは、きちんと文字として認識されるのかという点です。
この回ではOCRの認識率(特に日本語環境)についていろいろと考察してみたいと思います。
【目次】
- Computer Vision APIとは?
- 検証環境とその構築方法
- 検証
- まとめ
1.Computer Vision APIとは
Computer Vision APIはMicrosoftが提供するコグニティブサービスのうちの一つで、画像から様々な情報を抽出してくれるクラウドサービスで提供されるAPIです。例えば、画像にタグ情報や説明などのラベル付けをしたり、画像の中にある文字列を抽出したりできます。
詳しくはこちら
https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/
2.検証環境とその構築方法
私自身はコーディングを得意としていない(できない)のでLogicAppを使って環境を構築しようと思います。
検証環境の概略は以下の通りです。
- Office Lensで記事を撮影しOneDriveにアップロード
- アップロードされた画像ファイルをComputer Vision APIのOCRにかける
- OCRの結果をYammerに投稿
尚、Logic Apps + Cognitive Service の組み合わせについては、「プログラミングなしでお手軽な Azure Logic Apps」で触れてるので、そちらも参考にしてみてください。
尚、Logic Appの設定は以下通りです。
とりあえずテストしてみます。
自分の名刺をスキャンします。日本語面でやってみましょう。
【アップロード画像】 | 【OCR結果】 |
|
|
非常によい精度で認識できていますので、この環境を使って様々な文書のパターンを検証してみます。
3.検証
その1 ~~縦書き~~
海外製品であるということで、縦書きの文書を読み込んだ時になんと返すのかが気になるところです。自宅にフリーの地域新聞があったのでそれで検証してみます。
【アップロード画像】 | 【OCR結果】 |
|
|
行単位では縦読みできてますけど、順番がバラバラです。結構大きめにとって読みやすくしているのですが、、、
他の記事もやってみたのですが、一段下げになっている行は最後に回される(?)ようです。
その2 ~~フォント~~
明朝体やゴシックなどは読み取れるのですが、学習していなさそうな特殊なフォントはどうでしょうか?
【アップロード画像】 | 【OCR結果】 |
|
読み取れず! |
文字として認識されませんでした。
引きで撮ったりして何度かトライしましたが、文字として認識されてませんでした。
では縁取りはどんな感じでしょう
【アップロード画像】 | 【OCR結果】 |
|
|
文字として認識されない文字があります。
波打ってる文字はどうでしょう
【アップロード画像】 | 【OCR結果】 |
|
|
特に波打っていても認識してますが、「っ」が認識されませんでした。
今度は白抜きの文字なんかどうでしょう。
【アップロード画像】 | 【OCR結果】 |
|
|
その3 ~~紙の反射などによる文字の欠損等~~
光沢のある紙の場合は照明などで光が反射して文字が飛んでしまう場合があります。
【アップロード画像】 | 【OCR結果】 |
|
|
「コペンハーゲン」が光の反射のせいで文字が薄くなってしまっています。その場合はうまく読み取れませんでした。
文字の濃淡が比較的均等になるように撮りなおしてみた結果
【アップロード画像】 | 【OCR結果】 |
|
|
きちんと認識されましたね。
OCRにかけるまえの元素材の状態は認識に大きな影響を与えるようです。
その4 ~~文字の大きさ~~
弊社の会社プロフィールの表紙全体をスキャンしてどれくらい文字を認識するか試してみます。
来年の年賀状をちょっと引きで撮ってみてやってみましょう。
【アップロード画像】 | 【OCR結果】 |
|
|
おお!!文字が小さくても読み込めてますね。
住所は文字色が薄かったからかな?
もう一つ、弊社の会社プロフィールの表紙も引きで撮ってみます。
【アップロード画像】 | 【OCR結果】 |
|
|
こちらも英字と数字はしっかりと認識してます。
弊社の吾郷の意見ですが、日本語は読み取れなかったのは
「一度読んだ文字をディテクトが走っていて、英語って判断しているので、日本語のところは読み飛ばされてるんだと思います」
とのこと。
英数字は読み込んでいるので文字の大きさは多少小さくても認識できそうです。
その5 ~~二段組みの場合~~
割とあるのが二段組みになっているタイプ。例えばテストした会社沿革やレシートなんかも二段組みになっている場合が多いです。
【アップロード画像】 | 【OCR結果】 |
|
|
左の行を下まで読み取ったあとに右の列を読み取りに行くようです。
4.まとめ
日本語の認識率はとても優れていると思いましたが、1文字だけ読めないなど完璧な結果を返すのは難しそうです。
その他、思ったことはこちら。
- 縦書きは読み取れるが複数行になると順序が前後する場合がある。
- 横書きでも二段組みの場合は左から順に読み取っていくので読みづらい
- 小さい「つ」や「-」は読み取りづらい?
- 文字の濃淡を均等にした方がいい
- ロゴとかで使っているフォントは読み取れないかも
- いただいた年賀状の整理をするのに使えそう
【アップロード画像】 | 【OCR結果】 |
|
|