Share
OCR技術はあらゆる業種で使われていますが、市販のOCRでは異なるフォーマットやレイアウト、手書き文字では精度が低下してしまうことが課題です。特に日本語はラテン文字を使ったアルファベット言語よりもさらに複雑で、ひらがなやカタカナ、漢字など複雑な文字体系、縦書きテキストなどの複雑なレイアウトの処理が求められます。
IT企業であればたいていどこでも、OCR分野で何らかの研究プロジェクトに取り組んでいますが、実際にはこのような技術的な課題の解決にはどこも苦労しています。弊社Rabiloo(ラビロー)も例外ではありません。弊社はハノイ工科大学の画像認識に関する研究者と協力して、高精度のAI OCR開発に成功しています。
本記事では、レシートからデータを正確に読み取って、画像をテキストデータ化するソリューションについてご紹介します。
今回ご紹介するアプリケーションは、AI技術を用いたOCRの自動データ入力機能を中心に実装しています。プライベートなデータセットで実験したところ、アプリケーションは95%前後の高精度を達成しました。アプリは現在、競争にさらに勝ち残れるよう、常に改良を加えて研究開発が続けられています。
関連記事:AI OCRとは?従来OCRと精度の違いと導入のメリットを解説
レシートの画像をOCRでテキスト抽出するには、3つの大きなステップを踏んでいきます。
文字の検出
文字の認識
情報の抽出
実はわたしたち人間も普段から、レシートを見る時、無意識に同様のステップを踏んでいます。
文字がどこにあるか(where)
内容は何か(what)
どの内容が必要か(which)
人間の脳は瞬時にこれらの判断を行いますが、OCRは文字や画像を認識するために、これらの複雑なステップを順に踏んでいます。
このステップでは、システムが行ごとにテキスト領域を識別します。文字が離れている場合、複数の領域に分割することもあります。
領域を識別後、ソフトウェアはバウンディングボックスを使ってラベル付けします(画像1)。バウンディングボックスとは、テキスト領域を囲む長方形のことで、オブジェクトの位置を示すために使われます。
画像にボックスが示されるのは説明のためで、実際にはボックスの詳細(角の座標、中心の座標、または長さと寸法)を特定するために必要です。
画像1:テキスト検出
しかし、背景のあるレシート画像、例えば画像2のようなケースでは、テキスト検出をどう処理するかという問題があります。
画像2:より複雑な背景のある画像
このような画像でテキスト検出を行うと、必要なテキストは結果に含まれますが、いくつかの問題が発生します。
背景にある文字やオブジェクトがテキストと誤認される可能性がある
テキストの傾きによっては、バウンディングボックスの識別順序に影響を及ぼす
画像が悪いと正確に認識できない
これらの問題は、文字検出が成功しても、次の段階である文字認識に悪影響を及ぼす可能性があります。
これを克服するために、開発チームはテキスト検出の前に以下の2つのステップで前処理を実施しました。
関心領域の切り取り(Crop ROI)
画像の品質強調(Enhance)
これにより、テキスト認識の精度が向上し、問題が解決されました。前処理後の画像は、よりクリアで分析しやすい状態になりました。
画像3:a. ROIの設定後の結果
b. ROIの設定後の結果
c. 検出後の結果
肉眼では区別が難しいかもしれませんが、画像を強調する前後で性能が5%向上しました(75%→80%)。もしかすると、機械は人間よりも少しだけ「細心」なのかもしれません。
前処理を経た画像は、ディープラーニング(深層学習)モデルを用いてテキスト検出が行われます。このプロセスの結果は画像3Cのように可視化され、ソフトウェアはいったん画像内のすべてのテキスト領域を識別し、テキストとして認識可能なエリアを検出します。
バウンディングボックスの情報に基づき、テキスト領域が識別された各画像が生成されます。例えば、画像2では37個のバウンディングボックスがあり、それに対応する37個の画像が出力されます。これらの画像の内容を詳しく知るために、次は文字認識のプロセスへと進みます。
このステップでは、テキスト領域が含まれる画像がソフトウェアによって認識され、機械が処理可能な形式(通常はテキストファイル)に変換されます。
当初、後処理を行わない場合、文字認識効率は80%しか得られませんでした。これは主に2つの問題から生じています。
データが不足しているか、モデルの品質が十分でないため、ソフトウェアの性能が高くない
日本語のテキストは特殊な特徴を持っているため、文字の認識が困難
問題1については、モデルの検索、データセットの構築、モデルの学習に時間がかかる上、ソフトウェアの性能が保証されないため、Rabiloo開発チームは問題2の対応を選びました。具体的には、認識ステップの出力に「スペル補正」の後処理を行いました。
このスペル補正は主にルールベースで行われますが、実際に効果があり、性能は13%向上しました(80%→93%)。
テキスト領域の検出と認識が完了すると、結果を画像4のように視覚化できます。これは、ROD設定後の画像サイズに基づいて白い背景に表示されます。
画像4:文字検出・認識後の結果
この結果は全単語の94.6%(37ボックス中35ボックスが正解)、全文字の99%(292文字中289文字が正解)を達成しました。
認識されなかった部分は以下の2箇所です。
11行目(13ボックス目)の内容(※フライドポテ卜 シュ-ス卜リングカッ卜 1KG 195”)が画像幅を超えたために完全に表示されなかった
35ボックス目のバーコード行が誤認識(これらは情報抽出段階で削除される)
これに基づいて、最終ステップの情報抽出に進みます。
この段階では、ソフトウェアがユーザーの要求に応じて重要な情報フィールドを選択し、それ以外の情報は無視します。抽出する情報の種類は、クライアントの要件によって異なります。この例では、情報抽出後の結果がtxtファイルにエクスポートされ、画像5で示されています。
画像5:情報抽出の結果
必要な情報は以下の通りです。
店舗住所
レシートの発行日
商品情報(商品名・価格)
合計金額とお釣
画像2から得られる情報フィールドは以下の通りです。
レシートの発行日
商品名
合計金額
このAI OCRソフトウェアは、画像2のような入力画像から、画像5のようにテキストファイルを出力します。
この課題解決のために使用された詳細なプロセスは以下のようになります。
この記事では、RabilooによるAI OCR技術を活用したレシートデータ化ソリューションの開発について紹介しました。ベトナムでも多くのIT企業がAI OCR技術の研究に取り組んでおり、特に日本語のような複雑な言語に対応する際の課題が強調されています。
開発プロセスは
テキスト検出
文字認識
情報抽出
の3ステップで構成され、前処理、ディープラーニングモデルの使用、スペル補正による精度向上が説明されています。最終的に、高い精度を達成したOCRコンポーネントが完成しました。
Rabilooは完成した自社のOCR技術を用いてお客様の課題を解決するための、新たなソリューションとしてカスタマイズすることができます。
現在精度の高いOCR技術をお探しの企業様、どうぞお気軽に弊社までご相談ください。
関連記事:
Share