IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エニイライン ゲーエムベーハーの特許一覧

特許7445753光学文字認識のためのコンピュータ実行方法
<>
  • 特許-光学文字認識のためのコンピュータ実行方法 図1
  • 特許-光学文字認識のためのコンピュータ実行方法 図2
  • 特許-光学文字認識のためのコンピュータ実行方法 図3A
  • 特許-光学文字認識のためのコンピュータ実行方法 図3B
  • 特許-光学文字認識のためのコンピュータ実行方法 図4
  • 特許-光学文字認識のためのコンピュータ実行方法 図5
  • 特許-光学文字認識のためのコンピュータ実行方法 図6
  • 特許-光学文字認識のためのコンピュータ実行方法 図7
  • 特許-光学文字認識のためのコンピュータ実行方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-28
(45)【発行日】2024-03-07
(54)【発明の名称】光学文字認識のためのコンピュータ実行方法
(51)【国際特許分類】
   G06V 30/19 20220101AFI20240229BHJP
【FI】
G06V30/19 Z
【請求項の数】 12
(21)【出願番号】P 2022519974
(86)(22)【出願日】2020-09-30
(65)【公表番号】
(43)【公表日】2023-01-24
(86)【国際出願番号】 EP2020077362
(87)【国際公開番号】W WO2021064018
(87)【国際公開日】2021-04-08
【審査請求日】2022-06-03
(31)【優先権主張番号】19200582.5
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】516286822
【氏名又は名称】エニイライン ゲーエムベーハー
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】アルベルティーニ、ダニエル
(72)【発明者】
【氏名】デング、デイヴィッド
(72)【発明者】
【氏名】セルマン、マーティン
(72)【発明者】
【氏名】シュペール、ピーター
(72)【発明者】
【氏名】ドゥフコヴィツ、ハネス
【審査官】小池 正彦
(56)【参考文献】
【文献】米国特許出願公開第2019/0073571(US,A1)
【文献】特表2019-505149(JP,A)
【文献】特開2002-342739(JP,A)
【文献】特開2003-122442(JP,A)
【文献】特表2017-521011(JP,A)
【文献】米国特許出願公開第2013/0021307(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06V 30/19
(57)【特許請求の範囲】
【請求項1】
光学文字認識のためのコンピュータ実行方法であって、
1以上の文字を含む入力画像の画像データを受信し、
受信された前記画像データに1以上のデータ処理動作を適用し、
前記データ処理動作の少なくとも1つは、前記入力画像の1つ以上の文字を返すように構成され、
各データ処理動作は、処理構成に従って、所定の利用可能なデータ処理関数のシーケンスから選択され、
利用可能な前記データ処理関数は、プリコンパイルされた関数であり、
1以上の前記データ処理動作を適用する前に、実行時にリモートサービスから前記処理構成およびネットワーク構成をロードし
前記処理構成は、2以上の異なるデータ処理動作のシーケンスを決定し、
前記データ処理動作の少なくとも1つはロードされた前記ネットワーク構成によって1以上の人工ニューラルネットワークを介してデータを伝播することを含む、
コンピュータ実行方法。
【請求項2】
前記処理構成は、データ処理動作の総数、および/または、2以上の前記データ処理動作のパラメータ化をさらに決定する、請求項1に記載のコンピュータ実行方法。
【請求項3】
1以上の前記データ処理動作を適用する前に、前記リモートサービスから受信した前記処理構成を検証する、
請求項1または請求項2に記載のコンピュータ実行方法。
【請求項4】
前記リモートサービスから受信した前記処理構成が無効であると判断し、以前にキャッシュされた処理構成をロードする、
請求項1または請求項2に記載のコンピュータ実行方法。
【請求項5】
本方法を実行する装置のハードウェア識別子および/またはアプリケーション識別子に関連する特定の処理構成を前記リモートサービスから要求する、
請求項1~請求項4のいずれか1項に記載のコンピュータ実行方法。
【請求項6】
リモートサービスから前記処理構成をロードすることは、前記リモートサービスから暗号化された処理構成を受信し、前記リモートサービスから受信した暗号化された前記処理構成を、秘密鍵を用いて復号化することを含む、
請求項1~請求項5のいずれか1項に記載のコンピュータ実行方法。
【請求項7】
1つ以上の前記データ処理動作を適用する前に、前記処理構成を認証する、
請求項1~請求項6のいずれか1項に記載のコンピュータ実行方法。
【請求項8】
入力画像の画像データを受信することが、画像センサで1以上の画像をキャプチャすることを含む、
請求項1~請求項のいずれか1項に記載のコンピュータ実行方法。
【請求項9】
画像データを受信し、1以上のデータ処理動作を適用することは、入力画像のシーケンスについて繰り返され、並列または交互に実行される、請求項に記載のコンピュータ実行方法。
【請求項10】
請求項1~請求項のいずれか1項に記載のコンピュータ実行方法を実行するための手段を含むデータ処理装置。
【請求項11】
請求項1~請求項のいずれか1項に記載のコンピュータ実行方法を、請求項10に記載のデータ処理装置に実行させる命令を含むコンピュータプログラム。
【請求項12】
請求項11に記載のコンピュータプログラムを記憶したコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、光学文字認識のためのコンピュータ実行方法に関するものであり、本方法は1以上の文字(すなわちテキスト)を含む入力画像の画像データを受信し、受信した画像データに1つ以上のデータ処理動作を適用することを含み、データ処理動作の少なくとも1つは、入力画像の1以上の文字を返すように構成される。
【背景技術】
【0002】
このような方法は、特にディスプレイ上に表示されるシンボルの光学的検出のための特許文献1に開示されている。
【0003】
このタイプのアプリケーションでは、処理動作がしばしば、許容可能な認識性能を達成するために、特定のユースケースに合わせて調整される必要がある。これは、特に、認識されるべき文字がコントラスト及び目に見える輪郭をほとんど有していない使用の場合に当てはまる。処理動作を調整するプロセスは、できるだけ多くのユースケースのサンプル画像を必要とする。これらのサンプル画像を収集することは、時間がかかり、費用がかかる。従って、調整は、プロダクション画像に基づいてプロダクション中に実行される反復プロセスであることが多い。しかし、反復に関与する処理動作がCPU集約であり、特定のハードウェアに対して最適化されているという事実により、複雑になる。
【0004】
まったく異なるフィールド、すなわち、ユーザインタフェースの多変量テストの場合、特許文献2では、実行時に変更可能なユーザインタフェース定義が予測される。このようなユーザインタフェース定義では、アプリケーションが入力データをどのように処理するか、ましてや画像データをどのように処理するかは関係ない。
【0005】
特許文献3は、テキストシンボルを描写する画像の光学文字認識を実行する方法に関する。この方法は、所定のシーケンスの変換動作を使用することを含む。各セットは、画像の部分に適用されて、画像の変換された部分を生成することができる。画像の部分は、単語、単語のグループまたはテキスト行を形成することができるシンボルシーケンスを含むように検出されるものであってもよい。変換動作には、部分の解像度の変更、異なる2値化方法の適用、歪み設定の変更、グレア補正設定、ぼかし制御設定、またはノイズリダクション動作の変更が含まれる。変換動作のセットは、結果として得られるテキストの検出された品質が所定の品質閾値を超えるまで、所定のシーケンスに従って画像部分に適用することができる。
【0006】
非特許文献1は、機械学習を用いた2値化のデータ処理動作に最適なアルゴリズムを選択する方法に関する。本質的に、単一のデータ処理動作は、多数の所与の可能性から訓練されたモデルによって選択されるべきである。
【0007】
特許文献4は、多重深度学習プラットフォームおよび産業用画像検出制御方法およびシステムについて説明している。この方法は一般的なパラメータに従ってニューラルネットワークのモデルおよびネットワーク構成をロードし、続いて、ロードされたモデルを光学文字認識のために使用することを含む。
【0008】
非特許文献2は、多層パーセプトロンニューラルネットワーク分類器を使用する光学文字認識システムを開示している。
【先行技術文献】
【特許文献】
【0009】
【文献】米国特許出願公開第2017/0177968号明細書
【文献】米国特許出願公開第2013/0219307号明細書
【文献】米国特許出願公開第2019/0073571号明細書
【文献】中国特許出願公開第109087236号明細書
【非特許文献】
【0010】
【文献】Chattopadhyay、「Automatic Selection of Binarization Method for Robust OCR」、12th International Conference on Document Analysis and Recognition IEEE、2013年、頁1170-1174
【文献】Sabourinら、「Optical character recognition by a neural network」、Neural networks、1992年、5.5、843-852
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明の目的は、光学文字認識のためのコンピュータ実行方法の調整を促進することである。
【課題を解決するための手段】
【0012】
本発明は上記したコンピュータ実行方法を提案し、各データ処理動作は、処理構成に従って、利用可能なデータ処理関数の所定のセットから選択され、利用可能なデータ処理関数はプリコンパイルされた関数であり、方法は1以上のデータ処理動作を適用する前に、実行時にリモートサービスから処理構成をロードすることをさらに含む。したがって、処理構成は一般に、実行時に変更することができる。たとえば、リモートサービスからロードされた処理構成に置き換えることができる。
【0013】
本開示において、プリコンパイルとは、データ処理関数が特定の処理ハードウェアに限定されること、すなわち、特定のハードウェアプラットフォーム(CPUまたはGPU)に固有のハードウェア定義命令セットを使用することをいう。処理構成を変更(修正または交替、例えば、更新または置換)できるということは、変更後の異なる処理動作を異なるデータ処理関数を呼び出すために使用したり、同じデータ処理関数を異なるパラメータや異なるシーケンスで異なる方法で使用したりできることを意味する。実行時とは、本方法を実施するソフトウェアアプリケーションが動作している状態、例えばその命令がコンピュータのメモリにロードされて実行される状態を指す。実行時はソースコードから後にロードされる命令を導き出す時間であるコンパイル時とは異なる。特に、プリコンパイル(または単に「コンパイル」)されているデータ処理関数は、実行時に変更できない。
【0014】
実行時に処理構成を変更することが可能なため、より簡単に、より速く反復処理を行うことができる。本方法を実施するソフトウェアアプリケーションは、その全体を置き換える必要はない。調整は基本的に構成の問題である。通常、構成の変更は、ソフトウェアの変更よりも実行が容易で、高速で、必要な権限も低くなる。例えば、モバイルアプリケーションの場合、ソフトウェア更新は通常、プラットフォームプロバイダ(「ストア」)とのインタラクションを必要とし、しばしば、更新を認証するためのユーザインタラクションを含む。一方、構成変更は、ユーザに気付かれずに実行されてもよい。
【0015】
リモートサービスは、1つ以上のネットワークサーバでホストできる。リモートサービスの使用は、構成変更をネットワーク上で方法を実行する端末に配信することができるので、データ処理の反復と調整を促進する。このようなネットワークは一時的に利用できない可能性があるため、処理構成は端末にキャッシュされるか、ローカルに保存される可能性がある。リモートサービスは、ソフトウェアアップデートに使用される配信チャネルとは異なる配信チャネルである可能性がある。これにより、ソフトウェアプロバイダ(ユースケース固有のソフトウェアなど)と、データ処理の調整を実行するサービスプロバイダを分離することができる。ソフトウェアプロバイダは自分のソフトウェアを配備するためにソフトウェア配信チャネルを使用し、サービスプロバイダは、そのソフトウェアによって処理構成がロードされるリモートサービスを実行する。
【0016】
処理構成は例えば、データ処理動作の総数、2つ以上の異なるデータ処理動作のシーケンス、および1つ以上のデータ処理動作のパラメータ化のうちの1つ以上を決定することができる。データ処理動作のパラメータ化は、関連するデータ処理関数があればそれを呼び出すためのパラメータを指す。これらのパラメータはそれぞれのデータ処理動作の定義の一部であり、すなわち、異なるパラメータを使用する2つのデータ処理動作は、それ自体が異なる。
【0017】
この文脈では、方法が、オプションで、1以上のデータ処理動作を適用する前に、リモートサービスから受信された処理構成を検証することをさらに含む。処理構成の変更は実行時に発生するか、発生する可能性があるため、検証は誤った設定による実行時エラーを回避するのに役立つ。処理構成は、検証が成功した後にのみローカルに記憶することができる。そうでない場合、すなわち、検証が失敗した場合、以前の処理構成が使用される。
【0018】
これに対応して、本方法は、オプションで、リモートサービスから受信された処理構成が無効であると判定し、以前にキャッシュされた処理構成をロードすることとをさらに含む。例えば、参照されるデータ処理関数の一つが利用できない場合、あるいは無効な構成構文が使用される場合、例えば、パラメータの数やタイプが処理関数のインタフェースと一致しない場合など、処理構成が無効であると判断されることがある。
【0019】
一実施形態では、本方法がリモートサービスから、アプリケーション識別子および/または本方法を実行する装置のハードウェア識別子に関連する特定の処理構成を要求することをさらに含むことができる。アプリケーション識別子(例えば、APIキー)を使用して、リモートサービスへのアクセスを認証し、処理構成が提供されるべき特定のユースケースに要求を相関させることもできる。ハードウェア識別子(例えば、ハードウェアバージョン)は最終的に方法を実行する端末の能力(例えば、処理能力または利用可能なハードウェアアクセラレーション)に応じて、異なる処理構成(同じユースケースについても)を展開するために使用されてもよい。より能力の高いハードウェアはより高いリソース集約のワークロードを実行するように構成することができ、これは、より高い認識率を達成し、一方、より低い能力のハードウェアは達成される認識率を犠牲にして、認識速度および応答性を維持するために、要求の少ない処理構成に役立つことができる。
【0020】
リモートサービスから処理構成をロードすることは、リモートサービスから暗号化された処理構成を受信し、秘密鍵を使用してリモートサービスから受信した暗号化された処理構成を復号化することを含むことができる。処理構成の暗号化された送信は、端末とリモートサービスとの間の通信にアクセスし得る介在者が(復号化された)処理構成を得ることを事実上不可能にすることによって、調整プロセスにおいてなされる投資を保護する。秘密鍵は例えば、ソフトウェア配信チャネルを介して、または、最大限のセキュリティのために、別個の鍵配信チャネルを介して、別個に配信することができる。
【0021】
オプションで、本方法は、1以上のデータ処理動作を適用する前に、処理構成を認証することをさらに含む。処理構成を認証することは、処理構成の暗号署名またはハッシュを検証することを含むことができる。認証により、処理構成の素性および/または完全性を検証し、保証することができる。認証に失敗した場合、処理構成を破棄することが予見される場合がある。
【0022】
比較的大量のサンプル画像を必要とし、その結果、調整がかなりの労力を伴う一実施形態は、少なくとも1つのデータ処理動作が1以上の人工ニューラルネットワークを介してデータを伝搬することを含む場合であり、1以上の人工ニューラルネットワークのネットワーク構成は実行時に変更することができる。ネットワーク構成は、人工ニューラルネットワークの重み、およびオプションで、構造を決定する。この例では、1以上のデータ処理動作を適用することはロードされたネットワーク構成によって構成された人工ニューラルネットワークを介して画像データを伝搬することを含む。人工ニューラルネットワークは(例えば、文字認識または文字分類のために)その性能を改善するための訓練を必要とする。訓練によってネットワーク設定が変更される。実行時に(すなわち、ソフトウェア全体を変更せずに)ネットワーク構成を変更する可能性は、そのようなアプリケーションの調整プロセスを促進する。ネットワーク構成は処理構成の一部であってもよいし、別個のものであってもよい。さらに、ネットワーク構成は、処理構成と同様に復号化および/または認証されてもよく、これらの点における上記の記述も同様に適用される。
【0023】
この文脈では、本方法は、オプションで、1以上のデータ処理動作を適用する前に、リモートサービスからネットワーク構成をロードすることをさらに含む。人工ニューラルネットワークの訓練は、特にリソース集約的な作業負荷である。本実施形態では、訓練が遠隔で、例えば、リモートサービスによって、または他の方法で実行され、次いで、リモートサービスを介して配信され、訓練の結果、すなわち、訓練されたネットワークのネットワーク構成のみが端末に配信される。これは、ローカルで訓練を実行することから端末を解放する。
【0024】
一実施形態では、入力画像の画像データを受信することは画像センサで1つ以上の画像をキャプチャすることを含む。この場合の光学文字認識は、画像をキャプチャする能力を有する、すなわちカメラを有する、装置または端末上で、ローカルに実行される。画像は、例えばビデオからのシーケンスの画像であってもよいし、単一のピクチャであってもよい。
【0025】
キャプチャプロセス中に即座のフィードバックを提供するために、画像データを受信し、1以上のデータ処理動作を適用するステップは、シーケンスの入力画像について繰り返され、並列または交互に実行され得る。例えば、本方法は満足できる認識結果(ユーザによって、および/または、文字またはテキストに関する所定の期待および制約によって決定される)が得られるまで、ビデオストリームの複数のフレームに適用することができる。
【0026】
また、本発明は、上述の方法のステップを実行するための手段と、その任意の変形例とを含むデータ処理装置に関する。例えば、処理装置は、必要に応じて、上述のキャプチャステップを実行するためのカメラ、および/または、適用可能であれば、リモートサービスと通信するための通信ユニットを備えてもよい。
【0027】
さらに、本発明は前段落で述べたデータ処理装置に、上述の方法のステップおよびその任意の変形を実行させる命令を含むコンピュータプログラムに関する。
【0028】
最後に、本発明は、上述のコンピュータプログラムを記憶したコンピュータ可読媒体にも関する。
【図面の簡単な説明】
【0029】
図1】モバイル端末を用いた光学文字認識のためのシステムを概略的に示す。
図2図1によるモバイル端末によって実施される光学文字認識のためのコンピュータによって実施される方法を概略的に示す。
図3A図2に示される方法のシーケンス図を示す。
図3B図2に示される方法のシーケンス図を示す。
図4】単一のデータ処理関数を使用する最小限の処理構成を概略的に示す。
図5】3つの異なるデータ処理関数を使用する、わずかに洗練された処理構成を概略的に示す。
図6】多数の異なるデータ処理関数を使用する光学文字認識のための処理構成の実用的な例を概略的に示す。
図7】2つのデータ処理動作のための人工ニューラルネットワークを使用する光学文字認識のための処理構成の簡単な例を概略的に示す。
図8】本開示による光学文字認識のためのコンピュータ実行方法で使用される人工ニューラルネットワークのネットワーク構成を更新するための方法を概略的に示す。
【発明を実施するための形態】
【0030】
ここで図面を参照するが、図面は本開示を例示するためのものであり、本開示を限定するためのものではない。
【0031】
図1は、光学文字認識システム1を示す。システム1は、データ処理装置2およびリモートサービス3を含む。データ処理装置2は、モバイル端末4、例えばスマートフォンやタブレットコンピュータであってもよい。以下では、モバイル端末4も参照するが、本開示は一般に、任意のデータ処理装置2に関連する。すなわち、装置が、モバイル端末であるか、および/または端末であるかには関係ない。
【0032】
モバイル端末4は、少なくとも1つのデータ接続5、6を介してリモートサービス3に接続されている。これらのデータ接続5、6は、無線通信手段(Wi-Fiまたはセルラーネットワークなど)およびインターネットを介して確立されてもよい。
【0033】
モバイル端末4は、1以上のソフトウェアアプリケーション(または「アプリ」)によって特定のユースケース用に構成される汎用の計算および通信装置であってもよい。各ソフトウェアアプリケーションは、いくつかのソフトウェアモジュールまたはライブラリを含むことができる。本開示が対象とするユースケース、すなわち光学文字認識は、モバイル端末4に格納されインストールされた1つのそのようなソフトウェアアプリケーションによってカバーされてもよい。このソフトウェアアプリケーションは光学文字認識のために、ソフトウェア開発キット(SDK7)の形式の特殊なモジュールを使用する。光学文字認識は特定のタイプの製品からシリアル番号(例えば、タイヤ識別番号すなわちTIN)を読み取るなど、特定の目的のために実行することができる。これらのシリアル番号は例えば、認識されたシリアル番号に関連する拡張情報を表示するために使用することができる。そのような拡張情報は、その特定の製品の互換性のある代替品の利用可能性など、ビジネス情報または技術仕様であってよい。これらのユースケース固有のタスクに関連する処理は、顧客アプリケーション8によって実施される。「顧客」がSDKプロバイダとの関係を参照する。顧客アプリケーション8はSDK7を呼び出し、リンク9によって示されるSDK7からの戻り値を受信する。
【0034】
リモートサービス3は、内部的にいくつかの専用サービスに構造化することができる。この内部構造は、モバイル端末4およびSDK7に対して不透明であっても不透明でなくてもよい。図1に示す例では,リモートサービス3は、資産サービス10と、APIゲートウェイ11と、顧客データベース12と、資産ストレージ13とを含む。資産ストレージ13は、例えば、専用クラウドストレージプロバイダによるクラウドストレージであってよい。資産サービス10および資産ストレージ13へのアクセスは、SDK7を介して提供される顧客信用証明の認証に依存し得る。顧客データベース12は、提供された顧客信用証明を検証するためのアカウント情報を保持する。資産ストレージ13は、接続6を介してモバイル端末4に処理構成を配備するために使用されてもよい。資産サービス10は、接続5を介して、SDK7からフィードバックデータ、例えば処理構成の改善のためのサンプル入力画像を受信することができる。APIゲートウェイ11は資産サービス10のための顧客データベース12への標準化されたアクセスを提供し、顧客データベース12の内部構造を隠す。
【0035】
資産ストレージ13に記憶された資産は、SDK7のための処理構成、および、オプションで、1以上のネットワーク構成、を含む。これらの資産は顧客証明(例えば、固有のAPIキー)を介して顧客アカウントに関連付けられる。リモートサービスからこれらの資産にアクセスし、検索するために、モバイル端末4は有効な顧客証明を提供しなければならない。その後、リモートサービス3は、提供された顧客証明に関連付けられた処理構成と、オプションで、1以上のネットワーク設定を送信する。通常、顧客信用証明は、顧客アプリケーション8に埋め込まれ、例えばハードコードされる。典型的には、顧客アプリケーション8のユーザ、すなわち、モバイル端末4を使用する人は顧客証明を見ることも、変更することもできないであろう。キャッシュされた資産がモバイル端末4にローカルに記憶されている場合、顧客信用証明はそれらのキャッシュされた資産へのアクセスを許可する前に、ローカルに認証されてもよい。
【0036】
さらに、SDK7は、ハードウェア識別子を決定することができる。ハードウェア識別子は顧客アプリケーション8によって提供されてもよいし、ローカルオペレーティングシステムおよびモバイル端末4からSDK7によって検索されてもよい。ハードウェア識別子に基づいて、特定のハードウェアに対して特別に最適化された異なる処理構成、およびオプションで、ネットワーク構成をリモートサービス3から取得することができる。これにより、最近の機器に多く見られる特殊なハードウェア、例えばニューラルネットワークの計算による作業負荷に特別に最適化された特殊なチップを利用し、活用することができる。
【0037】
図2は、モバイル端末4、より具体的にはSDK7によって実行されるステップを示す。図はSDK7の初期化から始まり、光学文字認識の結果が顧客アプリケーション8に戻されるときに、走査プロセスが終了するまでのシーケンスの動作または活動を示す。初期化コール14がOCR SDKでトリガされると、ローカルライセンスチェック15は顧客証明の一部として顧客アプリケーション8によって提供されたライセンスキーが現在のアプリケーションに対して有効であるかどうかを判断し、そうでない場合は終了する。
【0038】
ライセンスチェック15に合格すると、認証要求16がバックエンド、すなわちリモートサービス3に送られる。認証要求16により、顧客証明又はその一部(例えば、APIキー)がリモートサービス3に送信され、提供された証明を検証し、検証が失敗した場合、エラーメッセージを返す。そうでない場合には、認証を確認する。モバイル端末4はリモートサービス3からの認証応答をチェックし(17)、エラーメッセージを受信した場合は終了する。
【0039】
確認応答と共に、モバイル端末4は要求が成功し、有効であった場合に、利用可能な資産に関する情報を受信する。資産情報は任意のローカル資産(モバイル端末4上にローカルに記憶された資産)に対してチェックされ(18)、リモートサービス3で利用可能な資産がより新しい場合、新しい資産に更新するかどうかを決定するために顧客アプリケーション8は通知される(19)。顧客アプリケーション19が新しい資産をダウンロードすることを決定した場合(20)、ファイルはダウンロードされる(21)。SDK7は、アプリケーション識別子(アプリケーション識別子がAPIキーなどの顧客証明の一部である場合がある)と、リモートサービス3からSDKを実行している装置のハードウェア識別子に関連付けられた特定の処理構成を要求する。処理構成は、暗号化された形式でリモートサービスによって提供される。SDK7は、秘密鍵を使用してリモートサービスから受信した暗号化処理構成を復号化する(秘密鍵はSDK7に埋め込まれている場合がある)。復号化後、処理構成が認証され、例えば、ハッシュが計算され、リモートサービス3によって提供される参照ハッシュと比較される。認証が成功すると、ローカルファイルは受信した資産で置き換えられる22。このように、本方法は光学文字認識を実行するために1つ以上のデータ処理動作を適用する前に、提供された資産の一部としてリモートサービス3から処理構成がロードされることを含む。
【0040】
次に、顧客アプリケーション8は、すべての資産がダウンロードされ、置換された場合に資産更新手続きが終了したことを通知される(23)。顧客アプリケーション8がOCR SDK7に走査プロセスを開始するように通知すると(24)、資産は構成インタプリタにロードされる(25)。インタプリタは、リモートサービス3から受信した処理構成を検証する。検証はいくつかの基準をチェックすることがある。例えば、全ての固定パラメータが有効な範囲内で有効なサイズを有するかどうか、及びデータ処理関数のパラメータとして使用される全ての参照が使用される前に有効に(例えば、先に呼び出されたデータ処理関数の出力として、)定義されているかどうか、などである。リモートサービス3から受信した処理構成が無効であると判断された場合、以前にキャッシュされた処理構成がロードされる。そのために、SDK7は最初にキャッシュされた有効な汎用処理構成で配備される場合がある。受信した処理構成が有効であれば、以下に説明するように、光学文字認識に使用される処理構成を置き換え、それによって変更する。
【0041】
検証が成功した後、画像プロバイダ(通常、モバイル端末4の統合カメラ)から新しいフレームを取り出すためのループ26が開始される。走査プロセスは、画像プロバイダに新しい画像を求め(27)、新しい画像が利用可能であれば(28)、光学文字認識が実行される。新しい入力画像の画像データは、画像プロバイダから受信される。入力画像の画像データを受信することは、画像センサを用いて1以上の画像をキャプチャすることを含む。入力画像は通常、1以上の文字を含む。この画像は、インタプリタを介してロードされた処理構成に従って処理される(29)。したがって、1以上のデータ処理動作が、受信された画像データに適用される。少なくとも1つのデータ処理動作が、入力画像の1以上の文字を返すように構成される。各データ処理動作は、処理構成に従って、利用可能なデータ処理関数の所定のセットから選択される。使用可能なデータ処理関数は、プリコンパイル済み関数である。
【0042】
処理構成は、SDKの初期化後も実行時に変更できる。例えば、資産ストレージ13は、SDK7に更新通知を送信してもよい。更新通知を受信すると、SDK7は上記と同様の方法で更新された処理構成を資産ストレージ13からダウンロードし、処理構成を置き換えてもよく、処理構成は、SDK7によって入力画像に適用されるデータ処理動作を決定する。
【0043】
画質または他の基準のために処理が成功せず、結果が利用可能でない場合30、走査プロセスは、次の利用可能な画像を求め、処理が中止されるか、または、処理が走査結果を見つけたと判定するまで、新しい画像上で画像処理を再び開始する。画像データを受け取り、1以上のデータ処理動作を適用するステップは、入力画像シーケンスについて繰り返され、並列または交互に実行されてもよい。繰返し率は1Hz以上、例えば、1Hzから10Hzの間であってもよい。特定のハードウェアプラットフォームの処理構成は処理構成がモバイル端末に配備される前に、1回の繰り返しの持続時間を決定するために、リモートで(例えば、テスト装置上または適切に制限された仮想ハードウェア上で)ベンチマークすることができる。結果を見つけたと処理が判断すると(例えば、所定の長さの画像シーケンスに対して同じ結果が観察された場合)、アプリケーションに走査結果が通知される(31)。
【0044】
処理構成はデータ処理動作(すなわち、それらの総数、タイプ、およびシーケンス)と、各データ処理動作のパラメータ化とを決定する。したがって、システムはコードの変更および再コンパイルを必要とせずに、(処理構成によって定義されるように)コンピュータビジョンパイプライン全体を迅速に最適化または完全に交換する能力を有する。同時に、パイプラインのビルディングブロック、すなわち、データ処理関数がコンパイルされ、プラットフォームが最適化される(例えば、C++コードなど)。
【0045】
図3Aおよび図3Bは、図2に関連して上述したステップと、図1に関連して上述したシステム構造との間の関係を示す。図3AはSDK7の初期化をカバーし、図3Bは走査をカバーする。
【0046】
図4および図5は、処理構成、データ処理動作、およびデータ処理関数の最小限の例を示す。両方の図は、3チャネルカラー画像を単一チャネルグレースケール画像に変換する単純なCVアルゴリズムを示す。インタプリタの構文解析と処理構成の適用の能力を示すために、2つのバージョンが提供されている。
【0047】
より複雑なバージョン(図5)はより詳細な方法で個々のステップを実行するが、アルゴリズム全体を単一のデータ処理関数に単純化することができる(32)。図5に示す画像処理のステップは、以下の通りである。INPUT COLOR IMAGE IMG(ステップ33)において、現在の画像がカメラストリームによって提供され、取得され、さらに処理される。画像は3チャネルカラー画像(RGB)である。R、G、B = SPLITCHANNELS(IMG)(ステップ34)において、SPLITCHANNELS関数が呼び出され、これは、3チャネル画像の個々のチャネルを3つの単一チャネル画像に分割する役割を果たす。R = R×0.299(ステップ35)において、画像中の赤色の輝度を記述する単一チャネル画像の画素は、標準的な係数0.299で乗算される。G = G×0.857(ステップ36)は、緑チャネルについて、ステップ35に類似した処理を行う。B = B×0.114(ステップ37)は、青チャネルについて、ステップ35に類似した処理を行う。GRAYIMG = R+G+B(ステップ38)では、以前に重み付けされたカラーチャネルのピクセル単位の合計が計算される。OUTPUT GRAYIMG(ステップ39)において、変換されたグレースケール画像が顧客アプリケーションに戻される。
【0048】
図4に示される単純なバージョンによる画像処理のステップは以下の通りである。INPUT COLOR IMAGE IMG(ステップ40)において、現在の画像がカメラストリームによって提供され、取得され、さらに処理される。画像は3チャネルカラー画像(RGB)である。GRAYIMG = GRAYSCALE(IMG)(ステップ32)では、グレースケール画像は、入力画像の個々のカラーチャネルの線形結合によって、単一の演算で計算される。複雑なバージョンと比較して、ここでは、色変換アルゴリズムが最適化されたC++コードの単一のプリコンパイルデータ処理関数で実装される。OUTPUT GRAYIMG(ステップ41)において、変換されたグレースケール画像が顧客アプリケーションに戻される。
【0049】
図6は、ディスプレイからシンボルを読み取るために使用される実際的な例に関する。本質的に、この例の処理構成は、特許文献1に開示された方法の実装である。この構成の適用および実現可能性に関する詳細については、特許文献1の内容、特に図3および関連する説明を参照により本明細書に含める。図6による画像処理のステップは以下の通りである。INPUT MINOUTLINES(ステップ42)において、顧客アプリケーションから入力パラメータが受信され、処理構成全体を通して後で使用することができる。ここで、入力パラメータMINOUTLINESは、血糖計のデジタルディスプレイ上に生じる予想される7セグメントディジットの最小数である。INPUT IMAGE(ステップ43)では、現在の画像がカメラストリームによって提供され、取得され、さらに処理される。画像は3チャネルカラー画像(RGB)である。アルゴリズムが決定ノードの1つで中断する場合(ステップ44、45または46)、新しい画像がカメラストリームから取得され、処理される。THRESHOLD(ステップ47)において、入力された3チャネルRGB画像は、最初に単一チャネルグレースケール画像に変換され、次にしきい値処理される。ここで、階調画像は、[0,255]の範囲の離散的な整数値を有する。しきい値処理動作はこの範囲を、正確に2つの値{0,1}を有する画像の2値化バージョンにマッピングする。値1は関連する画素であり強調され、値0は背景又は関心のない画素である。しきい値は、処理構成で与えられるグレースケール値である。DETECT OUTLINES(ステップ48)では、2値化された画像が入力としてとられ、画像内のオブジェクトを表すアウトラインを検出できる。このコンテキストのアウトラインは、8近傍に接続されたピクセルで、特定の長さの線や輪郭を表す。適用することができる公知のアウトライン検出アルゴリズムがある。COUNT OUTLINES(ステップ49)では、検出されたアウトラインの数がカウントされる。判定ノード#OUTLINES >= MINOUTLINES(ステップ44)において、検出されたアウトラインの数がMINOUTLINES以上である場合、アルゴリズムはステップ50に進み、そうでない場合、カメラストリームからの新しい画像がステップ43の処理のために取得される。FIND LARGEST OUTLINES(ステップ50)で、すなわち、十分なアウトラインが検出されたことが確認されると、最大のアウトラインが次のステップのために検討される。ここで期待されることは、最大のアウトラインがデジタルディスプレイを表し、矩形の形状を有することである。これは、数字を認識するための入力画像の関連部分(「関心領域」)である。PERSPECTIVE CORRECTION(ステップ51)では、デジタル表示を表す矩形が見つかると、矩形がアウトライン上にフィットし、ディスプレイの正面図に透視変換される。このようにして、デジタル7セグメントディジットを歪みのない方法で分析することができる。CUT OUT RECTANGLE(ステップ52)では、検出された矩形が変換されたグレースケール入力画像から切り出されるので、不要な画素はもはや処理されず、処理能力を節約することができる。THRESHOLD(ステップ53)において、透視変換された画像は7セグメントディジット(値1)がディスプレイの残りの部分(値0)から明確に分離されるように、再びしきい値処理される。FIND SEVEN SEGMENT DIGITS(ステップ54)では、画像が閾値処理されると、接続された二値領域の輪郭が検出され、個々のセグメントがフィットされる。ここで、各ディジットは、複数の同様な外観のセグメントから構成される。判定ノードFOUND DIGITS?(ステップ45)で十分な数字が見つかった場合、アルゴリズムはステップ55に進み、そうでない場合、カメラストリームからの新しい画像がステップ43での処理のために取得される。CLASSIFY DIGITS(ステップ55)において、検出された数字は数字に分類される。これは、ある誤差許容度を有する7セグメントディジットのための予め計算されたテンプレートを通して行われる。判定ノードDIGITS COULD BE CLASSIFIED?(ステップ46)において、検出された数字内の個々のセグメントの全てを分類することができれば、アルゴリズムはステップ56に進み、そうでなければ、カメラストリームからの新しい画像がステップ43での処理のために取得される。PROCESS RESULT(ステップ56)では、血糖計は複数のラインから構成されているので、結果として得られる分類は正しくフォーマットされ、妥当な値について検証される。対応するフォーマットおよび検証パラメータは、その特定のユースケースに合わせて調整された処理構成の一部である。OUTPUT RESULT(ステップ57)において、最終的に認識されたストリング結果が顧客アプリケーションに返される。
【0050】
図7および図8は、本方法の文脈における人工ニューラルネットワーク(または単に「ニューラルネットワーク」)の使用に関する。データ処理動作のうちの少なくとも1つは1以上の人工ニューラルネットワークを介してデータを伝搬することを含むことができ、1以上の人工ニューラルネットワークのネットワーク構成は実行時に変更することができる。サーバ/バックエンドへの接続がないデバイスでのオフライン実行が可能であるように、アルゴリズムで使用されるニューラルネットワークのアーキテクチャ、およびその他の個々のステップとこれらの相互作用は、モバイルおよび組み込みデバイスに対して最適化されたパフォーマンスである。これは、基本的に、ニューラルネットワークの個々の入力と出力との間の接着剤として作用する。ニューラルネットワークが処理構成(「パイプライン」)で使用される場合、1以上のデータ処理動作を適用する前に、ネットワーク構成をリモートサービスからロードすることができる。ネットワーク構成は、1以上のニューラルネットワークのための構成を備えることができる。複数のネットワーク設定がロードされている可能性がある。ネットワーク構成は、資産ストレージ13から検索された資産の一部である。図7による画像処理のステップは以下の通りである。INPUT MINCONTOURS(ステップ58)において、顧客アプリケーションからの入力パラメータ(ユーザ入力を通過してもよい)が受信され、これはスクリプト全体を通して後に使用されてもよい。具体的には、パラメータMINCONTOURSがステップ59で必要とされる輪郭の最小数であるので、処理は継続する。INPUT IMAGE (ステップ60)では、モバイル端末4のカメラストリームによって提供される現在の画像がさらなる処理のために受信される。画像は3チャネルカラー画像(RGB)である。アルゴリズムが判定ノード59で中断した場合、新しい画像がカメラストリームから受信され、処理される。DETECT CHARACTERS USING NEURAL NETWORK(ステップ61)において、入力画像は最初に、検出ニューラルネットワークに適したように前処理される。この前処理は、画像のグレースケール表現への色変換のような複数のステップ、または画像の品質を改善するかまたは必要なデータを抽出するために他の低レベル画像処理技法を適用することを含むことができる。また、例えば偽陽性検出のフィルタリングのような、検出のいくつかの後処理がこのステップで適用されてもよい。COUNT CONTOURS(ステップ62)で、文字数が計算される。判定ノード#CONTOURS >= MINCONTOURS(ステップ59)において、残りの輪郭の数が入力パラメータMINCONTOURS以上であれば、アルゴリズムはステップ63に進み、そうでなければ、カメラストリームからの新しい画像がステップ60の処理のために受信される。CLASSIFY CHARACTERS USING NEURAL NETWORK(ステップ63)では、検出された文字が入力画像の画像データから抽出され、分類ネットワークのために前処理される。この前処理は、グローバルコントラスト正規化、ZCAホワイトニング、または文字の抽出画像に適用される他の正規化アルゴリズムを含むことができる。PROCESS RESULT(ステップ64)では、分類ネットワークの出力が後処理される。これは、以前の結果の最近の融合の何らかの形態、何らかの事前知識またはチェックディジットアルゴリズム(例えば、Luhn)を使用する検証、または何らかの周知の誤り訂正アルゴリズム(例えば、リードソロモン)による誤り訂正を含むことができる。OUTPUT RESULT(ステップ65)で、最終認識ストリング結果が顧客アプリケーションに返される。
【0051】
本開示の範囲内で、実行時に処理構成およびネットワーク構成を変更する可能性のために、最新技術のアルゴリズムを有するニューラルネットワークの周りのコンピュータビジョンパイプライン全体を、反復的な改善によってユースケースのために自動的に最適化することができる。開始から終了までの処理構成は完全に交換することができ、すべてのアルゴリズムパラメータは、訓練フェーズ中に調整することができる。訓練されたニューラルネットワークを含むこの処理構成は、データ処理関数を実行する高度に最適化されたC++バイナリコードを再コンパイルまたは置換することなく、無線を介してモバイルデバイスに自動的に配備することができる。処理構成はSDK7によって単純にロードされ、それに応じて画像処理がバイナリコード内にセットアップされる。
【0052】
図8に示されているように、プロダクションにおいて、走査毎に、最終画像を記憶し、後の再訓練のために、リモートサービス3、より具体的には資産サービス10に転送することができる(ステップ66)。ネットワーク接続が不良の場合、接続が利用可能であれば、画像がキャッシュされ、転送されてもよい。プラットフォームでは、入ってくるプロダクション画像が訓練のために自動的に注釈付けされ(ステップ67)、十分な新しい画像が利用可能であるときに(判定ノード69)画像データベースに追加され(ステップ68)、画像はテストコーパスと訓練コーパスとに分割される(ステップ70)。そうでなければ、リモートサービス3は、追加の画像を待つ(ステップ71)。
【0053】
訓練コーパスに基づいて、データ拡張方法が適用される(ステップ72および73)。データ拡張方法は、コンピュータビジョンベースの画像変換、または機械学習ベースの画像生成を含むことができる。ユースケースに基づいて、回転、スケーリング、ぼかし、反転、色相シフト、彩度変化など、様々なコンピュータビジョン方法が適用され得る。機械学習アプローチは、敵対的生成ネットワーク、バリエーションオートエンコーダ、およびその他のような生成パラメータ化ソリューションを含んでも含まなくてもよい。検出ネットワーク(ステップ74)及び分類ネットワーク(ステップ75)に対して自動再訓練が開始される。処理構成の手動最適化および構成が存在し得る(ステップ76)。検出ネットワークおよび分類ネットワークの再訓練から生じる新しいネットワーク構成を含む新しい処理構成は、精度を検証するためにテストコーパスに適用される(ステップ77)。最終的な精度が最近配備された資産の1つよりも良好である場合(判定ノード78)、新しいバージョンが資産ストレージ13にプッシュされ(ステップ79)、モバイル端末4に同期される。精度が悪くなった場合、この訓練のための新しい画像に手動検査のフラグを立て(ステップ80)、再訓練を破棄する(ステップ81)。
【0054】
入力画像は特別に設計され訓練されたニューラルネットワークが個々の文字を検出するために適用される前に、いくつかの前処理ステップを経ることができる。次に、これらの文字は抽出され、分類され、後処理される。これらのステップは(例えば、モバイルデバイスから来るライブカメラストリームから得られる)シーケンスの入力画像において同じテキストが生じるまで繰り返されてもよい。次いで、最終結果はユーザに出力され、例えば、さらなる処理および使用のために、表示されるか、または顧客アプリケーションに提供される。
【0055】
自動訓練プラットフォームはニューラルネットワークを自動的に訓練し、記載されたアルゴリズムを使用して正確さ及び性能を評価し、最後に全てをモバイル端末4上に配備することができる。サービス側訓練は、モバイル端末4をローカルで訓練する必要性から解放する。特別な適合が必要とされる場合、コンピュータビジョンエンジニアは、このアルゴリズムをさらなる改善のためのベースとして使用することができる。
【0056】
本開示の範囲は図1のデータ処理装置に、図2図8のいずれかに関連して説明した方法のステップを実行させる命令を含むコンピュータプログラム、およびそのようなコンピュータプログラムを記憶したコンピュータ可読媒体に及ぶ。
【0057】
本開示は特に、シリアル番号走査のための、特にTINの走査のための、本方法の使用に適用される。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8