ホーム ブログ UX/UI

OCRとは?RabilooのO...

OCRとは?RabilooのOCR(文字認識)開発事例

Rabiloo

名刺や手書き文書などをカメラでスキャンして、文字データとして取り込むOCRの技術がどんどん進歩しています。

OCR技術を利用したアプリケーションもわたしたちの身近になってきました。

OCRは、ペーパーレス化が進む現代社会に不可欠なソリューションです。OCRは様々な分野で人々の生活を支えています。

本記事では、弊社Rabiloo(ラビロー)が取り組んだ文字認識プログラムの研究開発ストーリーをご紹介しながら

  • OCRとは何か
  • OCRを活用したソリューションの例

について専門的に解説します。ぜひ最後までご覧ください。

OCRとは?

OCR文字認識プログラムの概要

OCRとは、Optical Character Recognition(光学式文字認識)の略で、テキスト画像をコンピューターが理解できる別の形式に変換する技術やテクノロジーのことです。

OCR文字認識プログラムは、以下のステップで動作します。

ステップ1:画像ファイル(写真、コンピューターで作成した画像、スキャンした画像)、PDFファイルなどによって入力する

ステップ2:それらのファイル上のテキストや文字を自動的に検出・認識する

ステップ3:認識されたテキストをコンピューターで読める形式に変換する

ステップ4:データを直接処理するか、データベースに保存して集中的に処理する

OCR(光学文字認識)の実態

OCRは実際、非常に難しい技術です。

入力に影響を与えるもの、例えば、画質、色、画像の解像度、画像内のノイズ、あるいはテキストのスタイルなどはすべて可変だからです。まだ、完全には解決できていません。

しかし現在、OCRはほぼ完璧に近いレベルまで近づいてきました(すべてのものには常にリスクの確率があるので漸近的な進歩です)。そのため、この分野では、識別システムの研究、運用、開発、保守のための人材を常に必要とします。

関連記事:AI OCRと従来のOCRを比較!ビジネス活用するならどちら?

画像上の数字を認識するシンプルなプログラムの結果

画像2:画像上の数字を認識するシンプルなプログラムの結果

OCRの導入事例

OCRの代表的な導入事例について見ていきましょう。

  • テキスト形式への変換
    画像やPDFファイル(単純にテキストをコピーできないファイル)を、word・txt・excel形式のファイル(通常の方法で編集できるファイル)に変換します。
  • ナンバープレートの識別
    OCRは駐車場で用いられ、ルート管理や運転者の識別、さらには犯罪の発見などに役立っています。

駐車場でのナンバープレート認識

画像3:駐車場でのナンバープレート認識 

  • 交通標識の認識
    目の前にある標識を運転者に知らせたり、警告したりします。

画像4:標識の文字の認識

画像4:標識の文字の認識

  • 文書からの情報抽出
    請求書、保険証、名刺、銀行カード、身分証明書などの文書からの情報を自動的に抽出し、データベースにデータを保存したり直接処理したりすることが可能になります。

 

IDカード情報の抽出

画像5:IDカード情報の抽出

  • データの自動入力
    文書から指定された情報をソフトウェアに入力します。(予め情報を抽出する必要があります)
  • 視覚障害者向けのリーダー
    OCR技術と音声読み上げ技術を組み合わせたものです。

OCR開発事例:レシートからデータを読み取る

IT企業であればどこでも、OCR分野で何らかの研究開発が行われています。しかし技術的な課題点を解決するのにどこの企業も苦労しています。

一般的な使用に適したソリューションには至っていないため、各社は競合他社に負けないソリューションを生み出そうと必死に努力しています。

弊社Rabiloo(ラビロー)も例外ではなく、これまで独自の文字認識プログラムを研究してきました。このアプリケーションは、OCRの自動データ入力という機能を中心に実装しています。プライベートなデータセットで実験したところ、アプリケーションは95%前後の高精度を達成しました。

アプリは現在、競争にさらに勝ち残れるよう、常に改良を加えて研究開発が続けられています。それはOCRのハイクオリティのソリューションには需要があり、性能を向上させ続けることが非常に重要だと信じているからです。

OCRソリューションの3つのステップ

OCR技術上の課題を解決するには3つの主要なステップを踏まなければなりません。

  • 文字の検出 (Text detection)
  • 文字の認識 (Text recognition)
  • 情報の抽出 (Information Extraction)

これらの各ステップでは、必要に応じて複雑なデータの前処理や後処理が行われます。

人間でも機械でも画像上の文字を認識するには、まず文字がどこにあるか(where)、内容は何か(what)、そしてどの内容が必要か(which)というステップを踏まなければなりません。わたしたち人間はそれらのステップを何も考えずに瞬時に行なうため、機械でも簡単にできると思ってしまいます。しかし機械が文字や画像を認識するために、OCRはこのように複雑なステップを踏んでいます。

次に「レシートから情報を抽出する」という事例を用いてOCR活用手順を説明します。

ステップ1: テキスト検出 (Text Detection)

このステップではシステムは通常、行ごとにテキスト領域を特定します。しかし、文字間の間隔が離れている場合には、各行を複数の領域に分割することがあります。

テキスト領域を特定した後、ソフトウェアはそれらにバウンディングボックスのラベルを付けます(画像6)。バウンディングボックスとは、あるオブジェクト(ここではテキスト領域)を囲む長方形のことで、そのオブジェクトの位置を定義するためのものです。

画像上にボックスがが描かれているのは説明のためですが、テキスト検出の本質は、バウンディングボックスの情報(角の座標、中心の座標、または長さと寸法)を特定することです。

レシートからテキストを検出する

画像6:テキスト検出

しかし、画像7のような背景のあるレシートの画像の場合は、どのようにテキスト検出を処理するのでしょうか。

背景のあるレシートの画像の場合は、どのようにテキスト検出を処理するのでしょうか

画像7:より複雑な背景のある画像

上のような画像をテキスト検出にかけた場合、返される結果には必要なテキストが含まれています。しかし、いくつかの問題があります。

  • 文字やオブジェクトを含む背景は、テキストと誤認される可能性がある

  • テキストの傾斜角度によりバウンディングボックスの認識順序に影響を与える

  • 画質が十分ではない可能性がある 

以上の問題があると、文字検出には失敗しなくても、次の文字認識の段階で悪影響を及ぼします(この部分は実験によって、いくつかの問題を発見しました)。

これを解決するために、弊社は文字を検出する前に、入力を2つのステップで前処理を行なうことにしました。それは、ROIの切り取り(Crop ROI)と画像の強調(Enhance)です。前処理の結果は、画像8a、8bのようになりました。

a.ROIの設定後の結果  b.ROIの設定後の結果  c. レシートから文字を検出後の結果

画像8:a. ROIの設定後の結果 b. ROIの設定後の結果  c. 検出後の結果

肉眼では,強調前の画像と強調後の画像の違いを見極めるのは難しいかもしれませんが、実際に実験してみると強調後の性能は5%(75%→80%)向上しました。もしかしたら、機械が画像を観察する方法は、人間よりも少しだけ「細心」なのかもしれません。 

2つの前処理工程を経た画像は、ディープラーニング(深層学習)モデルで文字を検出します。その結果は、画像8cのように可視化されます。この場合、ソフトウェアはすべてのテキスト領域やテキストとして認識できる領域を検出します。

テキスト領域のバウンディングボックスの情報を頼りに画像を検索し、各画像が検出されたテキスト領域になります。画像7の場合、37個のバウンディングボックスに対応する37個の出力画像があります。これらの画像がどのような内容かを知るために、文字認識のステップに進みます。

ステップ2: 文字の認識 (Text Recognition)

このステップでは、テキスト領域を含む画像はソフトウェアによって認識され、機械が理解して処理できる形式に戻されます(通常はtxtファイルとして保存されます)。

  • 当初、後処理を行わなかった場合の認識効率は80%程度でした。この結果は、主に2つの問題に起因しています。データが不足しているか、モデルがソフトの性能を十分に発揮できていない
  • テキストが日本語という特殊なものであるため、文字の認識が難しい

問題1については、モデルの検索、データセットの構築、モデルの学習など、処理に時間がかかりすぎますが、ソフトウェアの性能は保証されていません。そのため、弊社Rabilooは、問題2の処理を選択することにしました。具体的には、認識ステップの出力である「スペル補正」の後処理を行いました。

このスペル補正はほとんどがルールに基づいて行われますが、実際に効果があり、13%の性能向上(80%→93%)が得られました。

画像領域の検出後の情報と認識後の内容が得られると、画像9のように結果を視覚化することができます(結果はRODの設定後の大きさで白い画像に反映されます)。

文字検出・認識後の結果

画像9:文字検出・認識後の結果

上記の結果は、全単語の94.6%(37ボックスのうち35ボックスが正解)、全文字の99%(292文字のうち289が正解)に達しています。認識されなかった部分は以下の通りです。

  • 11行目(13ボックス目)には内容が「※フライドポテ卜 -ス卜リングカッ卜 1KG 195」ですが、書き込み時に画像の幅がオーバーフローしてしまい、表示されません。
  • バーコードの行(35ボックス目)が誤認識されています(情報抽出の段階でこの内容が削除されます)。

画像上の文字認識の結果を受けて、最後のステップである情報の抽出に進みます。

ステップ3: 情報の抽出 (Information Extraction)

この段階ではソフトウェアは、指定されたまたは意味のある情報フィールドを選択し、(ユーザーの要求に応じて)、残りの情報を無視します。指定される情報は、お客様のご要望に応じて異なります。今回の例は、画像10に示すように情報を抽出した後の結果がtxtファイルにエクスポートされます。

文字検出・認識後の結果

情報を抽出した結果

必要な情報は以下の通りです。 

  • 店舗住所
  • レシートの発行日
  • 商品情報(商品名及び価格)
  • 合計金額及びお釣 

画像7から得られるフィールドは以下の通りです。

  • 請求書の発行日
  • 商品名
  • 合計金額

全体的なソリューション

このように、文字認識ソフトウェアは、画像7のような画像を入力として受け入れ、画像10のようなテキストファイルを返します。そして、この問題を解決するために使用した詳細なパイプラインは以下の通りです。

画像11: OCRの全体的な解決策

画像11: OCRの全体的な解決策

まとめ

この記事ではOCRについて、専門的な知見も交えて解説してまいりました。

当ブログでは、弊社Rabilooの開発知見を元に専門的なITに関する情報を発信しています。他の記事も併せてご覧いただければ幸いです。

あわせて読みたい:AI OCRと従来のOCRを比較!ビジネス活用するならどちら?

 

また、弊社はベトナムのエンジニアを使い、日本市場向けに低コストで高品質なオフショア開発をご提供しております。

ウェブサイト、ソフトウェア、ゲーム、人工知能などの開発会社をお探しの方は、どうぞお気軽にお問い合わせください。

お問い合わせ