AI-OCRってどんどん賢くなるの??
はじめに
本記事はAI-OCR製品を購入しようか迷っている方向けに書きました。
筆者はOCR製品を取り扱っている会社のSEで、表題の言葉を頻繁に聞かれます。
本疑問を抱いている方々のAI-OCR製品へのイメージが少しでも明確になればと思い、本記事を書きました。
AIとは
表題の件について言及する前に、まずはAIについてサクッと説明します。
「Artificial Intelligence」の略で、日本語では人工知能という意味になります。
このAIというものは誰かが作っています。
何が言いたいかと言うと、AIは自然発生しないということです。
AIのジャンルの1つとして機械学習が存在
AIを作り出す手法の一つとして機械学習、いわゆるディープラーニング(深層学習)と言われているものが存在します。
機械学習とディープラーニングは厳密には違うものを指していますが今回は本題からそれるため言及しません。
※参考サイト:https://innovation.mufg.jp/detail/id=93
今回はAIはどうやって作られるのかを説明するために、ディープラーニングについて触れていきます。
ディープラーニングとは
ディープラーニングとは、大量のデータを用いて学習を行う手法です。
大きく2つの学習手法に分類されます
- 教師あり学習
入力データとそれに対する正解の値を学習モデルに与え学習させます。
その結果、未知のデータの正解を導き出します。 - 教師なし学習
入力データに対して正解をあたえません。
例えば、猫の写真から猫という生き物を学習させたい場合は、猫の写真を大量に入力として与えます。
その結果、勝手にAIが猫を見つけ出すような振る舞いを行います。
OCRとは
次に、OCRについて簡単に説明します。
こちらはAIよりは知っている方が少ないのではないかと思います。
OCRとは「Optical Character Recognition」の略で、日本語では光学文字認識という意味になります。
印刷や手書きの文字をテキストデータとして文字起こしする処理となります。
Siriなど、音声を文字データとして取り出す音声入力は皆さん利用されていると思います。
OCRを音声入力にならって日本語化するなら、手書き入力といったほうがイメージがつきやすいでしょうか。
ただ、OCRは手書き文字だけでなく印字された文字なども含めてテキストデータ化する技術です。
AI-OCRとは
それでは本題に入っていきます。
AI-OCRとはその名の通り、OCRにAIの技術を搭載して文字認識の精度を高めたOCR技術のことを言います。
先ほど述べた中に、AIを作る方法として「教師あり学習」があると説明しました。
AI-OCRは大抵この教師あり学習を用いて、文字認識の精度を高めています。
AI-OCRと呼ばれる製品はざっくり以下の流れで作られています。
1. 使用する学習モデルを選定
※ここでの学習モデルとはニューラルネットワークとかそういった類のものを指します
この学習モデルで、各データ1つ1つに対してどれほど真剣に学習するか(ばらつきをどの程度許容するか)といった値や特徴の抽出方法、畳み込み層の構成の決定など、いろいろなことを指定します。
2. 膨大な文字データを取り込む
教師データをたくさん取り込みます。
ここで大変なのが、正解データも与えてあげる必要があるということです。
単純に考えると、多くのデータを取り込んだほうがAIは賢くなります。
ただ、1億個のデータを学習させるということは1億個の画像を見て、1億個の正解をAIに教えてあげる必要があります。
3. テストに使っていないデータを使って精度を確認
作成したOCRエンジン(OCRに特化して学習したモデル)に未使用の文字データを入力して、正解の値を返してくれるかを確認します。
ここまでで気づいた方もいらっしゃるかもしれませんが、
AI-OCRとはAIの技術を駆使して学習させたOCRのことです。
要するに、既に頑張って学習させた後なのです。
OCRの精度を高めるには2つの要素が必要
ここで、OCRという技術についてもう少し詳細を説明していきます。
OCRというと、文字の認識精度に注目が集まりがちですが、要素としては以下の2つの要素が大切です。
- 文字認識
- レイアウト識別
文字認識はOCR精度を高めるにはもちろん必須ですが、レイアウト識別とは何でしょうか。
重要と言われて、パッとその重要さがわかる人は多くないと思います。
レイアウト識別の重要性
仮に文字認識の機能しかなかった場合、どうなるのでしょうか。
答えはすべてを文字として判別しようと頑張ります。
なんとなく予想はつきますが、罫線は全て"1"として認識してくれそうですね。
また、OCRを使いたい人というのは紙からテキストデータを抽出して、そのデータを何かに活かしたい人がほとんどです。
そのためには記載されている全ての文字をただただOCRされても、そのデータは使い物になりません。
具体的には、データを取り込むべきシステムに、取り込める形(CSVなど)で出力してほしいのです。
その場合、記載されている文字をすべて取得したいとは限りません。
例えば以下画像の表データをシステムに取り込みたいとします。
もっと言うと、表データの左側はデータ名称のため、実際には右側の値が欲しいです。
その場合、最低限以下の制約が発生します。
- 画像上部に記載されている英字はOCRしない
- 画面下のロゴ達はOCRしない
- 表の左はシステムに取り込みたいデータ名称である
- 表の右がシステムに実際に入れたいデータ
レイアウトについては、ある程度帳票のレイアウトやデータ名称に予測がつくもの(請求書や注文書など)であれば事前にレイアウトが学習されている可能性はありますが、基本的にはどんな線が罫線であるか程度の情報しかAI-OCRに搭載されていないと想定してください。
そのため、OCR製品のほとんどはOCRしたい画像上の座標をもとに指定した領域内に記載されている文字をOCRしています。
座標ではなくデータ名称(上記画像だと"Battery"など)の記載場所を特定し、その右にある文字を読むといった仕組みでOCRする製品もありますが、その場合はデータ名称のOCR結果がまず正しいということが大前提のためさらに難易度は上がります(OCR精度は下がります)。
以上からレイアウトがバラバラなものを読むというのは大変難しいことがわかります。
間違った箇所を修正すれば賢くなるのか
AI-OCRに興味を持たれている方で、画像をOCR製品に取り込み、それを修正することでOCR製品のOCR精度がどんどん良くなると思っている方がいます。
今までのことを踏まえると、それはかなり難しいことがわかります。
文字認識の精度を向上させるためには
前述したように、学習モデルの教師データを増やすことで文字認識の精度を向上させることができます。
デスクトップやサーバ(オンプレ)環境にインストールするタイプのOCR製品は精度が上がることはまずありません。
クラウド製品の場合は、入力画像データの収集を行っている企業が提供している製品ならば、精度が徐々に向上する可能性はあります。
それでも即時に学習されるということはないでしょう。
また、自分の文字に特化(癖を学習)したものを作り出すというのは無理です。
自分の文字に特化させるということは他の人の文字(その他多くの文字)は誤読する可能性が高くなるからです。
あくまで多くのデータに該当した特徴しか学習していきません。
レイアウト識別を向上ためには
レイアウトについては、OCR製品の機能として自分でレイアウトの設定ができるようになっていることがほとんどで、AIの要素はあまりないと思っていいです。
現状、帳票種別に応じた法則や特徴が抽出できないのだと思います。
今後、日本全体として帳票の種類(領収書や請求書)によってレイアウトが統一される試みがなされればレイアウトから帳票種別を識別してくれるAIを作れるかもしれません。
AI-OCRは便利なのか
ここまでAI-OCRの仕組みを解説してきました。
結局使ったほうがいいの?どうなの?と思った方が多いと思います。
昨今、文字認識にディープラーニングを利用していることで、文字認識の精度はかなり高まっています。
そのため、レイアウトが変わらないもの(定型フォーマット)であり、テキストデータとして欲しい文字が記載されている場合は、OCR製品を導入することをお勧めします。
指定領域のOCRはほぼ読めるので、かなり手入力の手間がなくなると思います。
以上、個人的な意見でしたがAI-OCRの導入を検討されている方の参考になればと思います。
Discussion