(57)【要約】      （修正有）【課題】光電式コードリーダ及び光学コードの読み取り方法を提供する。【解決手段】特にバーコードリーダである光電式コードリーダ１０は、受信光から画像データを生成するための少なくとも１つの受光器２４と、画像データのコード領域２０にコード情報を割り当てる分類器３０が内部に実装された評価ユニット２６とを備える。分類器３０は機械学習用に構成されており、機械学習によらない方法で作動する古典的デコーダ２８で読み取られたコードに基づいて、教師あり学習の手法で訓練される。【選択図】図１
2019049967.tif 000002
【特許請求の範囲】
【請求項１】
受信光から画像データを生成するための少なくとも１つの受光素子（２４）と、前記画像データのコード領域（２０）にコード情報を割り当てる分類器（３０）が内部に実装された評価ユニット（２６）とを備え、前記分類器（３０）が機械学習用に構成されている光電式コードリーダ（１０）、特にバーコードリーダにおいて、
前記分類器（３０）が、機械学習によらない方法で作動する古典的デコーダ（２８）で読み取られたコードに基づいて、教師あり学習の手法で訓練されることを特徴とするコードリーダ（１０）。
【請求項２】
前記古典的デコーダ（２８）が白黒画像情報を処理するように構成されていることを特徴とする請求項１に記載のコードリーダ（１０）。
【請求項３】
前記古典的デコーダ（２８）が前記画像データを二値化する及び／又は画像データ内のエッジ位置を特定するように構成されていることを特徴とする請求項１又は２に記載のコードリーダ（１０）。
【請求項４】
前記分類器（３０）が前記画像データのグレー値情報に基づいてコード領域にコード情報を割り当てることを特徴とする請求項１〜３のいずれかに記載のコードリーダ（１０）。
【請求項５】
前記分類器（３０）がニューラルネットワーク又はサポートベクトルマシンを備えていることを特徴とする請求項１〜４のいずれかに記載のコードリーダ（１０）。
【請求項６】
前記分類器（３０）がコード情報へのコード領域（２０）の各々の割り当ての信頼度も算定することを特徴とする請求項１〜５のいずれかに記載のコードリーダ（１０）。
【請求項７】
前記評価ユニット（２６）がコード領域（２０）を個々のコード要素に分割するように構成され、前記分類器（３０）がその都度１つのステップで１つのコード要素だけをデコードすることを特徴とする請求項１〜６のいずれかに記載のコードリーダ（１０）。
【請求項８】
前記評価ユニット（２６）が開始記号及び／又は終了記号を前記古典的デコーダ（２８）及び／又は前記分類器（３０）の方法を用いて見つけ出し、その間にあるコード領域（２０）を個々のコード要素に分割するように構成されていることを特徴とする請求項７に記載のコードリーダ（１０）。
【請求項９】
前記古典的デコーダ（２８）も前記評価ユニット（２６）内に実装されていることを特徴とする請求項１〜８のいずれかに記載のコードリーダ（１０）。
【請求項１０】
前記評価ユニット（２６）が、前記古典的デコーダ（２８）と前記分類器（３０）を用いてコード領域（２０）の画像データをコード情報に割り当てることによりコードを読み取るように構成されていることを特徴とする請求項９に記載のコードリーダ（１０）。
【請求項１１】
前記分類器（３０）が、前記古典的デコーダ（２８）で読み取ることができなかった符号を読み取るためだけに利用されることを特徴とする請求項９又は１０に記載のコードリーダ（１０）。
【請求項１２】
前記評価ユニット（２６）が、前記画像データを貫通するように様々な線（３４）についてコード情報へコード領域（２０）を割り当てる処理を繰り返した後、特に投票（Ｖｏｔｉｎｇ）により、部分的な結果を組み合わせて共通のコード内容を作るように構成されていることを特徴とする請求項１〜１１のいずれかに記載のコードリーダ（１０）。
【請求項１３】
前記評価ユニット（２６）が、画像を跨いだコード読み取りを行うように構成され、該読み取りために、異なる時点に生成された画像データの間でコード領域（２０）が追跡され、そうして複数回撮像されたコード領域（２０）に対して各コード要素にコード情報が割り当てられた後、それらのコード情報が組み合わされてコード内容が作られることを特徴とする請求項１〜１２のいずれかに記載のコードリーダ（１０）。
【請求項１４】
画像データから光学コード、特にバーコードを読み取るための方法であって、機械学習用に構成された分類器（３０）を用いて前記画像データのコード領域（２０）にコード情報を割り当てる方法において、
まず前記コードが機械学習によらない方法で作動する古典的デコーダ（２８）を用いて読み取られること、及び、前記分類器（３０）がその読み取られたコードに基づいて教師あり学習の手法で訓練されることを特徴とする方法。
【請求項１５】
前記古典的デコーダ（２８）が、二値化された画像データ又は前記画像データ内のエッジ検出に基づいてコードを読み取ること、及び、前記分類器（３０）が前記画像データのグレー値情報に基づいてコード領域（２０）にコード情報を割り当てることを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１又は１４のプレアンブルに記載の光電式コードリーダ及び光学コードの読み取り方法に関する。
【背景技術】
【０００２】
コードリーダは、スーパーマーケットのレジ、荷物の自動識別、郵便発送物の仕分け、空港での手荷物の扱い等、物流での利用が知られている。コードスキャナの場合、レーザ光線が回転鏡又はポリゴンミラーホイールを用いてコードを横切るように掃引される。カメラを基にしたコードリーダの場合、画像センサで物体の画像を物体表面にあるコードを含めて撮像し、画像解析ソフトがそれらの画像からコード情報を抽出する。カメラを基にしたコードリーダは、一次元バーコードの他、マトリックスコードのように２次元状に構成され、より多くの情報を利用できる他の種類のコードでも問題なく処理できる。
【０００３】
ある重要な一群の利用形態においては、コードを付した物体がコードリーダのそばを通過するように運ばれる。その際、コードスキャナでは、自身の読み取り領域に相前後して通されるコードをそれぞれ検出する。また、カメラを基にしたコードリーダでは、ライン走査カメラがコード情報を含む物体像を相対運動に伴って連続的に且つ一行ずつ読み取る。２次元画像センサを用いる場合は一定の時間間隔で画像データが取得されるが、それらのデータは撮像レート及び搬送速度に応じて多少は重なり合う。物体をコンベア上で任意の向きに配置できるようにするため、読み取りトンネルの表面に複数のコードリーダを取り付け、物体を複数の方向又は全方向から撮影することも多い。
【０００４】
コードリーダや読み取りトンネルにとっては読み取り率が高いことが最も重要な品質基準の１つとなっている。読み取りエラーが生じれば、手動での再スキャンや事後的な仕分け等、コストのかかるエラー除去作業が必要になる。従来のバーコード用デコーダはいわゆるエッジ位置フィールド（Ｋａｎｔｅｎｐｏｓｉｔｉｏｎｓｆｅｌｄ）上で作動する。このフィールドは二値化技術によりグレー値プロファイルから生成される。エッジ位置の特定と二値化の方法には密接な関係がある。なぜなら、エッジの特定は、エッジの有無をその都度二値的に分類する処理に相当するからである。本来の意味でのデコードは、各バーコード型の仕様に基づき、エッジ位置の連続に応じて、バーと隙間の比を手掛かりとして基本的に１ビットのベクトル上で行われる。
【０００５】
これは一連の画像処理において極めて重要な点である。なぜなら、元々得られたグレー値信号からの白黒画像の取得乃至は二値化は、例えば８ビットのグレー値を画素当たり僅か１ビットにするという大きな情報の損失を伴うからである。何と言っても、エッジ位置の生成にはエラーが付き物である。エラーの原因の例としては、画素分解能に対してバーの幅が狭い、信号が微弱又は不鮮明である、コントラストが不足している、印刷ミスがある、などがある。これにより、幾つかのエッジが見つからなかったり、位置が不正確になったりして、そのエラーの程度によってはコードが読み取れない（ＮｏＲｅａｄ）という結果になる可能性がある。この例はバーコードに関するものであるが、同様の問題は２次元コードの場合にも起きる。
【０００６】
特許文献１は、連続する複数回のスキャンからバーコードを再構成することができる方法を開示している。そのために、それぞれコードの一部のみをカバーする複数のグレー値プロファイルをつなぎ合わせて全体プロファイルを作り、これをデコードする。従って、これは前処理ステップに関するものである。なぜなら、その後で、全体プロファイルをデコードするという従来と同様の問題が起きるからである。
【０００７】
特許文献２から光学コード検出システムが知られている。このシステムでは、コードを付した物体の搬送中に一続きの画像が撮影される。そして相前後する２つの画像間の変位ベクトルを求めることで、複数回の撮像にわたり画像領域を追跡することができる。これによってデコードそのものが変わるわけではない。
【０００８】
バーコードの読み取りにニューラルネットワークを利用することは既に提案されている。例えば特許文献３は、学習するニューラルネットワークとして構成することができる分類器によるバーコード認識に関するものである。ただし、この分類器はエッジ位置を含む特徴ベクトルを用いて作動する。従って、分類器への入力データが二値化又はエッジ検出による前述の情報損失を既に被っている。更にこの分類器はシミュレートされた特徴ベクトルを基にして訓練される。従って本物のデータとの結びつきはない。また、従来のデコーダは機械学習なしでも既に高い性能に達している。故に、特許文献３に記載のような公知のアプローチは、機械学習により読み取り率を真に改善する可能性を利用し尽くしてはいない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】EP 1 096 416 B1
【特許文献２】EP 3 009 984 A1
【特許文献３】US 8 905 314 B2
【発明の概要】
【発明が解決しようとする課題】
【００１０】
故に、本発明の課題は、機械学習を用いたコード読み取りを改善することである。
【課題を解決するための手段】
【００１１】
この課題は、請求項１又は１４に記載の光電式コードリーダ及び光学コードの読み取り方法により解決される。該コードリーダは受光素子を備え、該素子により画像データを好ましくはグレー値で取得する。評価のために、機械学習用に構成された分類器が画像データのコード領域にコード情報を割り当てる。コード領域は好ましくは、例えばコントラストに基づいて画像データを分割する前処理により見つけられる。
【００１２】
そして、本発明の出発点となる基本思想は、古典的デコーダ又はそのデコード結果を分類器のために利用することにある。分類器は、古典的デコーダで読み取られたコードに基づいて、教師あり学習の手法で訓練される。ここでいう「古典的デコーダ」とは、該デコーダが、訓練可能な分類器とは違って、機械学習によらない方法で作動するということを意味する。つまり、ここでいう「古典的」は機械学習の反対語である。パラメータの設定及び適応化は古典的デコーダでも可能であり、それらだけではまだ機械学習ではない。実際上の重要な違いは、古典的デコーダは既に自らの仕事のためにプログラミングされて準備ができており、改めて経験又は訓練を必要としないということ、そしてその性能は始めから動作期間の終了まである程度一定であるということである。これに対し、分類器の能力は、そのプログラミングされた構造にはるかに依存しているだけでなく、何よりも訓練及び訓練データの質との関係で生まれてくる。
【００１３】
本発明には、古典的デコーダや公知のコード読み取り用機械学習付き分類器に比べて読み取り率が向上するという利点がある。これは、低い分解能、不鮮明なコード、欠陥、雑音といった妨害性の影響があっても機能する。分類器は、バーの割れ、圧力の過剰又は不足によるコントラスト障害、コードの色あせ等、特殊な読み取り状況や、コードが持つ用途固有の特異性に適応できる。この適応化は、最初の訓練中はもとより、読み取り駆動中にオンラインで行うことさえ可能である。古典的デコーダはいわば訓練データのラベル付けを担当するものであるため、最初の訓練や適応化のために必要な高品質の訓練データを非常に容易に生成することができる。
【００１４】
本コードリーダは、コードスキャナとして構成され、読み取り光線を送出するための発光光学系を備える発光器と、読み取り光線を周期的に検出領域内へ方向転換させるための可動式の偏向ユニットとを備えるものであることが好ましい。この走査によりスキャン角毎に拡散反射値が得られるため、コードスキャナでも一行ずつ画像データが得られる。あるいは本コードリーダをカメラを基にしたものとする。非常に多くの重要な用途において、コードリーダと検出領域は互いに相対運動を行う。例えば、手持ち式の機器を検出領域上で振り動かしたり、コードリーダをベルトコンベアのそばに設置し、該コンベアに載って搬送される物体上のコードを読み取ったりする場合である。このような相対運動では、物体とコード領域が連続的に一行ずつ捕らえられ、その結果、線状の画像だけでなく２次元的な画像も生じることになる。これはコードスキャナにも、カメラを基にしたコードリーダにおけるライン走査カメラにも等しく当てはまる。もっとも、より大きな画像部分を直接撮像する２次元画像センサも考えられる。バーコードの読み取りのため、画像データを貫通するように複数本の線を引く。これらの線は走査方向乃至はラインカメラに合わせることができるが、これは必須ではない。これらの線に沿って、画像データから、デコードすべきグレー値プロファイルが得られる。
【００１５】
前記古典的デコーダは白黒画像情報を処理するように構成されていることが好ましい。そのため、グレー値プロファイルから適宜の白黒情報を取得するために前処理部が設けられるが、これは古典的デコーダの一部としてもよい。このような古典的デコーダは入手可能であり、冒頭で説明した問題があるにも関わらず、既に非常に高い読み取り率を達成している。
【００１６】
前記古典的デコーダは、画像データを二値化する及び／又は画像データ内のエッジ位置を特定するように構成されていることが好ましい。これにより、冒頭で説明したように、グレー値プロファイルから効果的に１ビットのベクトルが求められる。こうして利用可能となるバーと隙間の連続から、古典的デコーダがコード内容を求める。
【００１７】
分類器は画像データのグレー値情報に基づいてコード領域にコード情報を割り当てる。従って、分類器はグレー値デコーダであり、古典的デコーダの好ましい実施形態とは違って、値が１つの二値データを用いて作動するのではなくグレー値プロファイルを用いて作動する。グレースケールのビット深度を減らすことも考えられるが、その場合、情報の損失も生じる。そこで、分類器は、コードの解読結果又はラベル付けだけを出力する古典的デコーダのための二値化データやエッジ位置ではなく、グレー値プロファイルを用いて訓練される。つまり、分類器は、訓練データを評価する古典的デコーダよりも多くの情報、即ちグレー値情報を利用する。これが、本発明により読み取り率が向上する１つの理由である。分類器はコード又は個別記号のデコードまでグレー値プロファイルの入力情報を全て利用するため、二値化又はエッジ位置特定に関する公知の問題はもはや当てはまらないのである。
【００１８】
分類器はニューラルネットワーク又はサポートベクトルマシンを備えていることが好ましい。これらは機械学習の実証済みの例であり、そのための数多くの好適なアルゴリズムやアーキテクチャが利用可能である。もっとも、ランダムフォレスト等、機械学習の他の方法も考えられる。
【００１９】
また、分類器はコード情報へのコード領域の各々の割り当ての信頼度も算定することが好ましい。従来はコード読み取りの失敗だけが読み取りエラーとみなされていた（ＮｏＲｅａｄ）。しかしその他、少なくとも１つの記号が間違った値で読み取られた可能性もある（Ｍｉｓｒｅａｄ）。一定の範囲内であれば訂正処理とチェックサムによりそのようなエラーの検出ばかりか除去さえも可能であり、それらの方法は機械学習に基づく分類器を備えるコードリーダでも利用可能である。しかし、分類器がＭｉｓｒｅａｄの確率を査定しておくようにすれば有益である。その場合、例えば、Ｍｉｓｒｅａｄとみなすために必要な確率を予め与え、それを信頼度と比較することにより、Ｍｉｓｒｅａｄの確率を閾値を介してパラメータで表すことさえできる。
【００２０】
評価ユニットはコード領域を個々のコード要素に分割するように構成され、分類器はその都度１つのステップで１つのコード要素だけをデコードすることが好ましい。通常、分類は急を要するものではなく、急を要する場合は分類器の複数のインスタンスにコード要素を並行してデコードさせることも可能である。原理的には、分類器はもっと長い要素列を覚え込んで識別することも可能であるが、それにははるかに多くのクラスを区別し、大幅にコストのかかる訓練をする必要がある。故に、その都度１つのコード要素だけを対象として小片毎にクラス分けを行うことが有利である。
【００２１】
評価ユニットは開始記号及び／又は終了記号を古典的デコーダ及び／又は分類器の方法を用いて見つけ出し、その間にあるコード領域を個々のコード要素に分割するように構成されていることが好ましい。個々のコード要素は通常の規格では同じ長さを有しているため、コードの始めとコードの終わりが分かれば、その間の領域を、同様にコード型に応じて分かる個数のコード要素に分割することができる。開始記号と終了記号の発見は古典的デコーダと分類器のいずれを用いても可能であるが、後者はグレー値プロファイルの両端から中心へ探索を行うことが好ましい。
【００２２】
また、前記古典的デコーダも評価ユニット内に実装されていることが好ましい。あるいは、古典的デコーダの読み取り結果を画像データに基づいて別の装置で又は外部で取得することも考えられる。学習段階の後は訓練済みの分類器があればコードリーダの駆動には十分である。それでも、分類器に加えて古典的デコーダが同じ機器内で利用可能であれば、様々な理由から有益である。
【００２３】
評価ユニットは、古典的デコーダと分類器を用いてコード領域の画像データをコード情報に割り当てることによりコードを読み取るように構成されていることが好ましい。つまり、両方の方法で、並行的に又は相前後してコードの読み取りを試みるのである。一方の方法でしかコードを読み取ることができない場合はその結果を利用する。相反する読み取り結果が出た場合は、例えば信頼度に基づき、分類器が本当に古典的デコーダに勝っているかどうかを決めることができる。また、そのような場合にどちらの結果を通すかを初めから決めておくことも考えられる。いすれの方法でもデコードが部分的にしか成功しなかった場合、部分的な結果を組み合わせることができる。
【００２４】
分類器は、古典的デコーダで読み取ることができなかった符号を読み取るためだけに利用されることが好ましい。古典的デコーダで既に９９％の読み取り率を達成できる。残りの場合にだけ分類器が代役を務めるようにすれば、既に達成されているデコーダの品質は損なわれず、あり得るのは逆に品質の向上だけである。なぜなら、これまで読み取り不能だったコードを分類器で判読できるかもしれないからである。たとえ１％というエラーの割合が少なく見えても、それを更に下げることは経済的に大きな利益となる。それに、古典的デコーダによりコードの読み取りが済むような数多くの読み取り工程は、分類器の認証又は追加訓練のためにも利用できる。これにより特に、駆動中にコードや撮像の品質又は他の特性を変化させるような緩やかなドリフトへの適応が行われる。
【００２５】
評価ユニットは、画像データを貫通するように様々な線についてコード情報へコード領域を割り当てる処理を繰り返した後、特に投票（Ｖｏｔｉｎｇ）により、部分的な結果を組み合わせて共通のコード内容を作るように構成されていることが好ましい。バーコードに含まれる情報は一次元的にしかコード化されてはいないが、バーコードは横方向にも広がっているため、様々な読み取り線を配置することで複数のグレー値プロファイルを得ることができる。画像エラーと画像変化によっては、このようなグレー値プロファイルがあれば、状況次第で異なる部分領域のデコードが可能になる。信頼性が低く間違っている可能性がある部分的な結果が全く考慮されないようにするために、信頼度を投票の重み付け係数として又は各読み取りから得られる個々の部分の寄与度として用いることが非常に有用である。
【００２６】
評価ユニットは、画像を跨いだコード読み取りを行うように構成され、該読み取りために、異なる時点に生成された画像データの間でコード領域が追跡され、そうして複数回撮像されたコード領域に対して各コード要素にコード情報が割り当てられた後、それらのコード情報が組み合わされてコード内容が作られることが好ましい。例えば画像エラーが高さ全体にわたって延在している等の理由により、同じ画像から得た複数のグレー値プロファイルの評価だけでは足りないというケースはかなりある。そうでなくても、２次元コードの場合は幅又は高さ全体にわたってはいない局所的な画像エラーでも問題が生じる。読み取りトンネル等、多くの用途では同じコード領域が相対運動の過程で何度も捕らえられる。その場合、相対運動に基づくコード領域の追跡（トラッキング）が可能であり、個々の撮影による部分的なデコードから、画像を跨いで全体のコードが組み立てられる。ここでも、同じ画像において複数の読み取り線上で部分的なデコードを行い、それに応じて投票を行うことが考えられる。同じ画像における複数の読み取り部分を画像を跨いで組み合わせることも合わせて行ってもよい。
【００２７】
本発明に係る方法は、前記と同様のやり方で仕上げていくことが可能であり、それにより同様の効果を奏する。そのような効果をもたらす特徴は、例えば本願の独立請求項に続く従属請求項に記載されているが、それらに限定されるものではない。
【００２８】
以下、本発明について、更なる特徴及び利点をも考慮しつつ、模範的な実施形態に基づき、添付の図面を参照しながら詳しく説明する。
【図面の簡単な説明】
【００２９】
【図１】読み取るべきコードを付した物体を搬送するベルトコンベアの上方に設置されたコードリーダの模範例を示す３次元的な概略全体図。
【図２】コードをデコードするためのグレー値プロファイルの取得の際にたどられる複数の走査ラインを持つコードの画像データの例。
【図３】グレー値プロファイルの模範例。
【図４】コード要素又は個別記号を説明するための模範的なバーコードの図。
【図５】機械学習での分類器の訓練及び駆動を説明するための複数のグレー値プロファイル及び対応するコード内容を示す表形式の図。
【図６】複数回のデコードの試行と投票によるその総合的な評価を示す表形式の図。
【図７】図６と同様に複数回のデコードの試行を示す表形式の図であるが、同じ画像の読み取りを複数回試みるのではなく、複数の画像を読み取る場合を示すもの。
【図８】撮像状況の違いによって画像エラーが変化している、同じコードの２つの画像の例。
【発明を実施するための形態】
【００３０】
図１はベルトコンベア１２の上方に設置された光電式コードリーダ１０を示している。矢印１６で示したように、ベルトコンベア１２は物体１４をコードリーダ１０の検出領域１８を通過するように搬送する。物体１４の表面にはコード領域２０があり、これがコードリーダ１０により検出され、評価される。コード領域２０がコードリーダ１０によって検出され得るのは、それが上面側又は少なくとも上方から見える箇所に付されている場合のみである。そこで、図１の描写から逸脱して、例えば側方又は下方に付されたコード２２を読み取るために複数のコードリーダ１０を異なる方向から取り付けて、いわゆる全方向からの多重読み取りを可能にしてもよい。読み取りシステムに対する複数のコードリーダ１０の配置は実際には読み取りトンネルの形にすることがほとんどである。このようにベルトコンベアの近くでコードリーダ１０を静止状態で用いることは実際に非常に多い。しかし、本発明は何よりコードリーダ１０そのものとそのデコード方法に関するものであるため、本例により限定されるものと解してはならない。
【００３１】
コードリーダ１０は搬送される物体１４とコード領域２０の画像データを受光器２４で捕らえる。そのデータは評価ユニット２６により画像解析及びデコードで更に処理される。本発明にとって具体的な撮像方法は特に重要ではないため、コードリーダ１０は、それ自体は公知である何らかの原理により構成すればよい。例えば、ライン状画像センサ又はスキャン法のいずれを用いるかによらず、各時点で１つの線のみが捕らえられ、評価ユニットは搬送の過程で捕らえられた複数の線を結合して画像データを作る。マトリックス状の画像センサを用いれば１回の撮影でより広い範囲を捕らえることができるが、この場合も、撮影像を搬送方向にも、それに交差する方向にも結合することができる。
【００３２】
コードリーダ１０の主な仕事は、コード領域２０を認識してそこに付されたコードを読み取ることである。そのために、評価ユニット２６には、古典的デコーダ２８と、機械学習の原理により作動する分類器３０とが実装されている。デコード方法については後で図２〜８に基づいて詳述する。古典的デコーダ２８は第一に分類器３０を訓練するためのものであるため、いくつかの実施形態では図１と違って古典的デコーダ２８がコードリーダ１０内には設けられない。しかし、好ましい実施形態では、コードを読み取ったり、訓練（特に追加訓練）又は検証を容易にしたり、コード要素への分割といった部分的な仕事を最低限行ったりするために、古典的デコーダ２８を駆動中にも利用する。コードリーダ１０は読み取ったコードや画像データ等の情報をインターフェイス３２経由で出力する。インターフェイス３２を活用して、例えばネットワークやクラウドへ接続することで、古典的デコーダ２８及び／又は分類器の機能を少なくとも部分的に外部に設けてもよい。例えばコストのかかる訓練をそのように外部で行う。その場合、分類器３０は単に学習結果（例えば、ニューラルネットワークの重み付け係数）だけを受け取り、その後、コード読み取りに使用することができる。
【００３３】
図２はコードリーダ１０で捕らえられたコード領域２０の画像データの例を示している。バーコードをデコードするには線状の画像があれば十分であり、それがコード要素と平行になってさえいなければよい。故に、向きが適切であれば多数の読み取り線３４が利用可能である。画像データ内のコード領域２０の場所を突き止めるための事前の分割と、読み取り線３４の適切な向きの発見は、いずれもそれ自体公知であり、ここではそれを前提とする。
【００３４】
最初はこれらの読み取り線３４の１つに観察対象が限定される。図３は対応するグレー値プロファイル、つまり読み取り線３４に沿った強度推移乃至は線状の画像を示している。「デコードする」とはコード型の仕様に応じてこのグレー値プロファイルにコード内容を割り当てることをいう。コード型には、インターリーブド２ｏｆ５（Ｉｎｔｅｒｌｅａｖｅｄ  ２／５）のように、読み取られたコード情報がそのまま記号に対応するものがある。Ｃｏｄｅ１２８等、他の場合では、コード情報がなお内部のデコーダのモード（ＣｏｄｅＣテーブル、Ｓｈｉｆｔ等のモード切替、機能記号ＦＮＣ）に依存してるため、未加工フォーマット（Ｒａｗ−Ｆｏｒｍａｔ）でしか取得できず、その後それを更に変換する必要がある。以下ではこの２つの場合をもはや区別せず、割り当てられたコード情報が既に所望の結果であるということを単純に前提とする。
【００３５】
分類器３０は古典的デコーダ２８に比べて読み取り率を高めるためのものである。そのために分類器３０はまず訓練を受ける。この訓練は、読み取り駆動中に古典的デコーダ２８を用いて行われるオンラインの訓練とすること、特に更なる適応化のための追加訓練の形にすることが考えられる。この訓練された分類器３０を用いることでデコードの質を高めることができる。
【００３６】
以下、好ましい実施例により、まず学習又は訓練段階について説明し、その後、駆動又は評価段階について説明する。本発明は、従属請求項の構成により特徴付けられる好ましい実施形態のように、様々な変形が可能である。
【００３７】
学習段階では、古典的デコーダ２８が分類器３０の教師乃至トレーナーとして用いられる。そのために、コードリーダ１０又はそれと比較可能な機器で取得された画像データから多数のグレー値プロファイルが訓練データとして生成される。大多数のケースで古典的デコーダ２８は適正なコードを読み取ることができるため、グレー値プロファイルの意味は分かっている。古典的デコーダ２８で読み取りに失敗したグレー値プロファイル（ＮｏＲｅａｄ）はこの学習段階では拒絶することが好ましい。訓練データはコードリーダ１０の通常の駆動と並行して生成することができ、しかもそのままオンラインで連続的な訓練に利用できる。もっとも、訓練データをデータベースに蓄積し、駆動から独立した学習段階を設けてもよい。その場合、古典的デコーダ２８はその読み取り結果を一緒にデータベースに保存してもよいし、訓練中に初めてそれを生成してもよい。原理的には、この訓練データのラベル付け、つまり正しいコード内容のグレー値プロファイルへの割り当ては、他にもどんな方法で行ってもよいが、古典的デコーダ２８があれば簡単且つ信頼性の高い方法が既に利用可能であり、本発明ではそれを優先的に利用する。
【００３８】
古典的デコーダ２８によるデコードの範囲内で、完全に従来通りの方法でエッジ位置フィールドが生成され、それが記号毎に処理されることで、完全な読み取り結果が得られる。コード内容、エッジ位置フィールド及びコード型に基づき、個々のコード要素がどこにあるかが分かる。図４はこれをコード例で示している。まず、数個のコード要素に対して数本の分離線が書き込まれている。その下に各コード要素をデコードした記号がある。これを基にして各記号に対応するグレー値プロファイルのセグメントも得られる。
【００３９】
故に、読み取られたどのコードからもコード長に対応した数の訓練データセットが得られ、各訓練データセットにはグレー値プロファイルの１つのセグメントとともにその正しい分類、つまりその意味又はコード内容が含まれている。実際には、覚え込みの前にグレー値プロファイルのセグメントをその大きさ及びコントラストについて正規化しておく必要がある。これは、後の評価段階で、変化するバーの幅、読み取り距離、物体の高さ、コントラストの変動等の使用パラメータに左右されないようにするためである。
【００４０】
図５はコード例を表で概略的に示している。表の左側にはグレー値プロファイルの各セグメントが複数列に並んでおり、右側にはそれに対応するコード内容がある。学習段階ではこの関係が分類器３０内で訓練される。グレー値プロファイルの各セグメントが入力（Ｆｅａｔｕｒｅ、特徴量）であり、その入力と関連付けられた既知のラベル乃至はクラス（ｔａｒｇｅｔ  ｖａｒｉａｂｌｅ、目的変数）がコード内容として出力される。
【００４１】
ここでは、ニューラルネットワーク、マルチクラス・サポートベクトルマシン、ランダムフォレスト等、機械学習を用いた多クラス（マルチクラス）用の様々なアルゴリズム乃至は分類器３０の実装が考慮の対象となる。選択の基準としては、実装のコストや必要なハードウェアの他、品質（読み取り率の実際の改善性）や評価速度が特に挙げられる。原理的には、機械学習を用いず、新たに読み取られたグレー値プロファイルのセグメントを内容が既知の保存済みセグメントと直接相関させる相関器も考えられる。相関係数を通じて、デコードされた記号の正しさを表す信頼性水準（Ｃｏｎｆｉｄｅｎｃｅ  Ｌｅｖｅｌ）も得られる。しかし、このような力任せのアルゴリズム（Ｂｒｕｔｅ  Ｆｏｒｃｅ  Ａｌｇｏｒｉｔｈｍ）は計算コストが非常にかかり、また所要時間が長いという理由から既に不利である。しかも相関器には機械学習が持つ新しい未知の状況への適応能力がない。
【００４２】
個別記号と結果を十分に用いた訓練段階が、好ましくは読み取り対象のバーコード型の記号セットの記号毎に行われた後、続いて評価段階、つまり分類器３０をデコードと読み取り率の向上のために実際に使用する読み取り駆動が行われる。分類器３０が事前に訓練済みの場合、学習段階は省略される。例えば、訓練済みの分類器３０をある機器から別の機器へ直接又はネットワーク／クラウド経由で伝送する場合が考えられる。
【００４３】
図５の表はこの評価段階の状況にも適用できる。違いは、表の左側に示したグレー値プロファイルがここでは新たな未分類のデータだということである。従って、訓練とは異なり、右側に示したコード内容はもはや既知ではなく、分類器３０によって評価乃至は予測されるものである。訓練データの関係は、分類器３０のモデルにおいて、例えばニューラルネットワークの重み付け係数の形で表現される。
【００４４】
古典的デコーダ２８は評価段階ではもはや必須のものでない。それでも、好ましい実施形態として、なおも主として古典的デコーダ２８によりデコードを行うことができる。このデコードが失敗した場合にのみ、それでも可能であればコードを読み取るべく、分類器３０を使用する。機械学習の方法を用いた分類は、ここではいわば単に拡張処理として、具体的には古典的デコーダ２８の読み取りエラー（ＮｏＲｅａｄ）が起きた場合の再試行として用いられる。これには、古典的デコーダ２８により既に達成されている高い読み取り率と短いデコード時間が損なわれないという利点がある。
【００４５】
また、対応するコード型の開始記号及び終了記号の認識といった部分的な仕事に古典的デコーダ２８を利用することも考えられる。そのためには古典的デコーダ２８に相応の出力機能を設ける必要がある。ただし、前記の仕事に古典的デコーダ２８は必須ではない。なぜなら、開始記号及び終了記号も他の記号と同様に適宜のコード内容を持つグレー値プロファイルであって、分類器３０はそれらを自ら見つけ出すことができるからである。その探索は両端から始めて中心へ向かって進めることが好ましい。
【００４６】
開始記号と終了記号が見つかったら、具体的なコード型と開始記号及び終了記号のピクセル数の寸法に基づいて符号の個数が見積もられ、開始記号と終了記号の間のグレー値プロファイルが等間隔で該当数のグレー値プロファイルのセグメントに分割される。グレー値プロファイルの個々のセグメントは学習段階と同様に正規化される。こうして図５の左側部分に相当するグレー値プロファイルが得られ、分類器３０は右側に示したコード内容をそれらのセグメントに割り当てる。
【００４７】
理想的な場合、分類器３０はグレー値プロファイルの全セグメントのデコードに成功する。しかし、いつもこの理想的な場合になるわけではない。特に、分類器３０が古典的デコーダ２８のごく稀な読み取りエラーを補うためだけに用いられ、従って特に問題の多いケースを扱うことが常となる場合はそうである。また、何らかの分類結果は必ず出るが客観的に正しいとは限らない、というように分類器３０を実装することも可能である。
【００４８】
そのために、分類器３０が分類に加えて信頼度（スコア、信頼性水準）も出力するようにすれば有利である。これにより、まず、個々のグレー値プロファイルからの読み取り結果が十分信頼できる（Ｍｉｓｒｅａｄではない）かどうかを評価することができる。
【００４９】
図２に示したように、バーコードの場合、読み取り線３４は１つに限らない。この冗長性を読み取りエラーの更なる低減に利用することができる。そのためには、グレー値プロファイルを用いてデコードを複数回、読み取り線３４毎に実行する。これにより、複数のグレー値プロファイルから各コード要素に属する多数のセグメントが得られる。
【００５０】
このデコード結果の模範例を図６に表で示す。この表を投票マトリックスとも呼ぶ。表中、Ｐｏｓ１〜ＰｏｓＮは異なるコード要素を表す。各行には、それぞれ別の読み取り線３４に沿って試行された異なる読み取りの繰り返しがＳｃａｎ１〜ＳｃａｎＪという名前で入力されている。表の個々の値は「コード内容／信頼度」という形式になっている。例えば、Ｓｃａｎ１ではＰｏｓ３において値「０１」が信頼度０．９４でデコードされている。
【００５１】
そして、カラム毎に多数決（投票）が行われる。信頼度で重み付けを行うことも考えられる。投票結果、つまり決定されたコード内容の全体は、図６の最も下の行に示してある。
【００５２】
この例では、信頼性が０．５未満の場合を不確実なもの、つまり誤った割り当て又は確実には分類できない割り当てとみなすようになっている。あるカラムには不確実な割り当てしかないというような場合も考えられる。この場合、該カラムの位置では分類器３０が複数の読み取り線３４を使っても結局コードを（少なくとも所要の信頼性で）読めなかったことになる。
【００５３】
より厳しい基準では、確実とされる分類がｉ回を超えることが要求される。つまり、あるカラムにおいて０．５以上の信頼性の入力値がｉ回しか出てこなければ、その全ての結果が無効とみなされる。ｉ（多数回の読み取り又はコードの信頼性）と閾値０．５を介してエラー間の割合（ＮｏＲｅａｄ、Ｍｉｓｒｅａｄ）を調整することができる。
【００５４】
バーコードの高さ全体にわたって画像エラーが延在している場合、複数の読み取り線３４上での読み取り結果を組み合わせることはもはや役に立たない。その場合でも、まだ画像を跨いだコードの読み取りはできる可能性がある。図７は一例を表で示している。この表は図６に対応しているが、ここでは各行が、同一画像内の異なる読み取り線３４ではなく、同じコードを捕らえた別々の画像内の読み取り線３４にそれぞれ対応しているという点が異なる。両者を組み合わせて、複数の画像内の複数の読み取り線３４を評価することも可能である。
【００５５】
具体例として、同じコードを異なる状況下で、特に相前後する２つの搬送位置で撮影した２つの画像を図８に示す。２つの位置は十分に近接しているため、いずれも同じコードが捕らえられている。それぞれ反射のせいでコード領域が認識不能になっているが、その影響を受けている画像領域は異なっている。
【００５６】
追跡アルゴリズムを用いて画像から画像への運動ベクトルを求めることができる。これにより、グレー値プロファイルもいわば複数の画像を跨いで正しい方法で重ね合わせて、複数回の読み取りに利用することができる。反射性の箔の下でコードを捕らえる場合によくあるように、動き回る欠陥のせいで欠落や十分な信頼性でデコードされないコード記号が生じているのであれば、ある程度の数のフレームの後でコードの読み取りができる可能性がまだある。図７の例では、寄与している個々の読み取りは全て不完全であったにも関わらず、投票後のコード全体にはもはや欠落がない。こうして、全ての個別画像が読み取りエラー（ＮｏＲｅａｄ）であっても補填がなされる。
【００５７】
以上、バーコードを例に挙げて本発明を説明した。その中で何度か具体的なコード型を示したが、本発明は特定のコード型に限定されない。２次元コードを読み取る場合にはいくつか違いがある。例えば、ライン状のグレー値プロファイルではもはやコード全体が表現されない。代わりに、読み取るべき２次元コードの規格に従ってグレー値情報を異なるやり方で個々のコード記号に分割しなければならない。それでもやはり、コード記号に対応するグレー値パターンが得られる。従って、本発明はそのまま２次元コードにも応用可能であり、特にＰＤＦ４１７のようなスタックコード（Ｓｔａｃｋｅｄ  Ｃｏｄｅ）に応用可能である。この場合、分類器３０はＰＤＦ４１７の仕様に従って３つのクラスタのコードワードを分類する。
【図１】
2019049967.tif 000003
【図２】
2019049967.tif 000004
【図３】
2019049967.tif 000005
【図４】
2019049967.tif 000006
【図５】
2019049967.tif 000007
【図６】
2019049967.tif 000008
【図７】
2019049967.tif 000009
【図８】
2019049967.tif 000010
【外国語明細書】
2019049967000001.pdf