お知らせ

Evernote の画像認識の仕組みについて

2014/2/12 by Evernote Japan

2014/2/12 by Evernote Japan

コメント

(この記事は開発者向けの内容ですが、画像内の文字認識をより高めるためのヒントになる情報も含んでいます。Evernote に保存した画像の文字検索については、こちらの記事もご覧ください。)

画像に含まれるテキストの検索は、Evernote の最も人気ある機能の一つです。本日は、この仕組みについてご説明し、よくあるご質問に対してお答えします。

画像の処理方法

同期することによりノートが Evernote へ送信されると、そのノートから PNG・JPG・GIF の MIME 形式と一致するすべての Resources が複数の OCR(光学文字認識)専用サーバへ送信されて、サーバ側の文字認識処理によって抽出された文字が返されます。文字認識の結果は、recoIndex と呼ばれる、ノート閲覧時には見えないメタデータ属性としてノートに追加されます。recoIndex の内容を全て確認したい場合は、ノートを ENEX ファイルとしてエクスポートすれば見れるようになります。

例えば、私は先日、ビール瓶の写真が 1 枚入っているだけのノートを自分のアカウントから見つけました。

このノートを ENEX ファイル(Evernote のノートを XML 形式で出力したもの)としてエクスポートして、ファイルの一番下を確認すると、recoIndex 要素が表示されています。recoIndex の中には、複数の item ノードが存在します。それぞれの item は、Evernote の OCR エンジンによって文字として認識された箇所を囲む枠を示しています。

それぞれの item には 4 つの属性があります。item が示している領域の左上の座標を指す xy、そして item の幅と高さを示す wh です。

画像に文字が含まれているかどうかを判断するため、一致すると思われるものはすべて、該当する item の子要素として作成されます。それぞれの一致には、weight(itemw 属性)が付けられます。これは、受信したテキストが実際の画像に含まれたテキストと同じであるかの確率を示す数値です。

OCR の認識結果はノートに埋め込まれ、その後ユーザのクライアントアプリケーションに再度同期されます。この時に、画像から抽出されたテキストが検索可能な状態になります。

先ほど紹介したノートの recoIndex 要素の中からitemt (一致結果) 要素が含まれた部分をお見せします。ほとんどの item 要素には、複数の t 要素が含まれ、各要素に前述の weight value が付いています。ユーザが Evernote クライアントで検索を実行すると、t 要素の内容が検索されます。

longhammer.enex______Desktop__-_VIM2_and_Evernote

PDF ファイルの処理方法

Evernote の OCR エンジンでは PDF ファイルも処理できますが、画像とは違う方法で処理されます。PDF に文字認識を実行すると、認識されたテキストが含まれた PDF 文書がもう一つ作成され、元の PDF が入っているノートに埋め込まれます。ここで作成された PDF はユーザには見えず、検索処理に使用するためだけに存在します。また、ユーザの月間アップロード容量にはカウントされません。

PDF を OCR の対象にするには、以下の条件を満たしている必要があります。

  1. bitmap 画像が含まれていること
  2. 選択可能なテキストが含まれていないこと(または、含まれていても最小限の量であること)

これにより、ワードプロセッサやその他のオーサリングツールなど、テキストベースの形式を使用するアプリケーションで生成された PDF のほとんどが除外されます。PDF がスキャナ装置から生成された場合は通常、上記要件を満たすことになります。スキャナ側のソフトウェアで既に OCR 処理されていると、Evernote 側では OCR 処理は行われません。

OCR 処理された PDF を含むノートをエクスポートした場合、PDF には data および alternate-data の 2 つのノードが含まれます。data ノードには元の PDF を Base64 方式でエンコードしたバージョンが含まれ、alternative-data は同じ PDF の検索可能なバージョンを表しています。

よくある質問

— どんな種類のテキストを認識できるのですか?

OCR システムが文字であると判断したものすべてです。文字であることさえ認識できれば、活字のテキスト(例: 道路標識、ポスターなど)および手書き文字(最高にきれいな字ではなくても)の両方が Evernote の OCR 処理の対象となります。

また、文字の向きも認識結果に影響します。画像に含まれた文字の場合は、以下の向きに数度以内の誤差で表示されていることが前提となります。

  1. 0° — 普通の水平な状態
  2. 90° — 垂直に向いた状態
  3. 270° — 垂直に向いた状態

上記の角度で表示されないテキスト(斜めに表示された文字や反転された文字を含む)は無視されます。

なお、OCR を完璧にするのは非常に困難であり、認識されるはずだと思っていたテキストが認識されないこともあります。それを踏まえて、Evernote の OCR エンジンは精度を向上させるために常に改良されています。

— Evernote の OCR を使って、テキストを含む画像からテキスト版のコピーを作成することはできますか?

できません。前述の通り、OCR システムによるマッチング処理では 1 対 1 の組み合わせとはなりません。どちらかというと、テキストを囲んだ一つの領域に対して複数の一致候補を検出することの方が多く、そして実際はその候補のほとんどが不正確な結果となります。

— 画像の OCR 処理にはどのくらいの時間がかかりますか?

ユーザが画像を含んだノートを同期すると、その画像が Evernote の OCR 専用サーバへ送信されます。このシステムは先着順に処理されるため、既に処理を待っている他の画像の後に処理されることになります。しかし、プレミアムユーザが同期した画像の場合は、無料ユーザの画像よりも順番が繰り上げられて優先処理されます。

必要な時間についてですが、これはその時点で既に処理を待っている状態の画像の数によって変化します。プレミアムユーザの場合、画像は通常数分あれば処理されるはずです(それ以上かかる可能性もあります)。無料ユーザの場合、順番待ちの画像が多ければ多いほど、プレミアムユーザと比較して時間がかかります。

— Evernote の OCR システムはいくつの言語に対応していますか?

現在、Evernote の OCR システムは 28 言語の活字および 11 言語の手書き文字をインデックス化することができます。自分のデータをどの言語でインデックス化するかを選択するには、アカウントの個人設定メニューにて文字認識に使用する言語を指定してください。

— OCR 処理を実行するためだけに Evernote API を利用することはできますか?

いいえ、できません。OCR 機能のみを目的に Evernote の API を利用することは、API ライセンス使用許諾契約(英語)に違反します。

— Evernote の OCR システムを動かしている基盤について詳しく知りたい場合はどこで情報を得られますか?

Evernote Tech Blog(英語)に、認識技術の構造やプロセスなどについて詳細に解説した記事が 2 件ありますのでご覧ください。

※ 本記事は 英語版ブログ記事 の翻訳です。

Premium

Evernote プレミアム

アップグレードすると、仕事・プライベートでさらに活用できます。

プレミアム会員になる
このカテゴリの記事を見る: 'お知らせ'
Support Info

製品に関するお問い合わせ、サポートをご希望の方は、サポートページからお問い合わせください。

1 件のコメント RSS

この記事に対するコメントを残す

  • 雨月

    Evernote様のサポート体制について疑念や不満があるので
    直接お話ししたいと思っています。

    迅速な対応を、よろしくお願いします。