JP2009223801A - 文字認識装置 - Google Patents

文字認識装置 Download PDF

Info

Publication number
JP2009223801A
JP2009223801A JP2008070029A JP2008070029A JP2009223801A JP 2009223801 A JP2009223801 A JP 2009223801A JP 2008070029 A JP2008070029 A JP 2008070029A JP 2008070029 A JP2008070029 A JP 2008070029A JP 2009223801 A JP2009223801 A JP 2009223801A
Authority
JP
Japan
Prior art keywords
data
character
vector
feature amount
dictionary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008070029A
Other languages
English (en)
Other versions
JP5256799B2 (ja
Inventor
Hiroomi Motohashi
弘臣 本橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2008070029A priority Critical patent/JP5256799B2/ja
Publication of JP2009223801A publication Critical patent/JP2009223801A/ja
Application granted granted Critical
Publication of JP5256799B2 publication Critical patent/JP5256799B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】文字認識におけるマッチング処理を行う際に従来製品と比較して製造コストがかからない文字認識装置を提供すること。
【解決手段】辞書データ、認識対象文字の特徴量データ、および辞書データに登録されている各文字の特徴量データと認識対象文字の特徴量データとの距離を記憶する外部メモリ12と、辞書データおよび認識対象文字の特徴量データを外部メモリ12に転送するホストPC20と、辞書データおよび認識対象文字の特徴量データをベクトル演算で距離を算出して外部メモリ12に記憶させるベクトル演算パイプ15とを備え、ホストPC20が、ベクトル演算パイプ15に算出させて外部メモリ12に記憶された距離に基づいて文字認識を行うように構成する。
【選択図】図1

Description

本発明は、活字または手書き文字などを文字認識する文字認識装置に関する。
近年、活字または手書き文字が記載されている文書をイメージスキャナーなどで読取り、読取って得られた画像から文書に記載されている文字を認識する光学文字認識(Optical Character Recognition)技術が広く普及している。文字認識装置は、このような光学文字認識技術を用いて文書から認識された文字をキャラクターのコードに変換するようになっている。
例えば、従来の文字認識装置としては、認識対象の文字を認識するために、様々な文字の特徴量に関する特徴量データを備えた辞書データを有し、読取った対象の文字の特徴量データが辞書データにある特徴量データのうち最も類似する特徴量データを検索する(以下、マッチング処理という。)ことで、認識対象の文字を認識するものが開示されている(例えば、特許文献1参照)。
また、従来の文字認識装置としては、認識対象である文字のコードとその文字の特徴量とが対応づけて格納されている辞書を特定の規約に従って分割する辞書分割手段と、辞書分割手段により分割された各分割辞書を格納する辞書メモリと、被認識文字の特徴量を格納する特徴量格納メモリとを有し、外部から入力される被認識文字の特徴量と辞書メモリ内の特徴量との類似度を算出するものが開示されている(例えば、特許文献2参照)。
特開平03−116393号公報 特開平09−179935号公報
しかしながら、従来の文字認識装置では、認識対象の1文字のマッチング処理を高速化するのに特徴量格納メモリや分割辞書毎にある辞書メモリを必要としているため、部品数が多くなり、複数個のメモリと計算回路部との配線も多くなる等、製造コストがかかってしまうという問題があった。
そこで、本発明は、文字認識におけるマッチング処理を行う際に従来製品と比較して製造コストがかからない文字認識装置を提供することを目的としている。
本発明の文字認識装置は、各文字に対応した特徴量データが登録された辞書データと認識対象文字を読取って得られた認識対象文字の特徴量データとを比較して文字認識を行う文字認識装置であって、前記辞書データ、前記認識対象文字の特徴量データ、および前記辞書データに登録されている各文字の特徴量データと前記認識対象文字の特徴量データとの類似度を記憶する外部メモリと、前記辞書データおよび前記認識対象文字の特徴量データを前記外部メモリに転送する情報処理手段と、前記辞書データおよび前記認識対象文字の特徴量データをベクトル演算で前記類似度を算出して前記外部メモリに記憶させる1つ以上のベクトル演算器とを備え、前記情報処理手段が、前記ベクトル演算器に算出させて前記外部メモリに記憶された前記類似度に基づいて前記文字認識を行う構成を有している。
この構成により、1つの外部メモリやベクトル演算器をGPU(Graphics Processig Unit)とすれば、字認識におけるマッチング処理を行う際に従来製品と比較して製造コストがかからない文字認識装置を提供することができる。また、GPUの持つ高性能なベクトル演算能力を活用することによって、価格対性能比に優れた文字認識装置を提供することができる。
また、本発明の文字認識装置は、前記ベクトル演算器は、前記辞書データに登録されている各文字の特徴量データと複数の前記認識対象文字の特徴量データとの類似度を算出する構成を有している。
この構成により、複数の文字のマッチング処理をすることができるため、非常に使い勝手の良い文字認識装置を提供することができる。
また、本発明の文字認識装置は、前記ベクトル演算器が複数ある場合には、前記情報処理手段が複数の前記ベクトル演算器に並列で前記類似度を算出させる構成を有している。
この構成により、文字のマッチング処理を並行して処理することができるため、マッチング処理全体に要する時間を短くすることができる。
また、本発明の文字認識装置は、前記情報処理手段は、前記辞書データを所定数分割し、順次未だ前記類似度を算出していない分割した前記辞書データを前記外部メモリに転送し、転送した分割の前記辞書データに基づいて前記ベクトル演算器に算出させる構成を有している。
この構成により、順次未だ類似度を算出していない分割した前記辞書データを外部メモリに転送し、転送した分割の辞書データに基づいてベクトル演算器に算出させるため、1文字毎に辞書データの入れ替えを行う場合と比較すると、辞書データの入れ替え実施回数が低減して辞書データの入れ替えに必要な処理時間を省略することができるので、マッチング処理のパフォーマンスを向上させることができる。
また、本発明の文字認識装置は、前記特徴量データの要素と前記特徴量データに対応する1文字とがそれぞれ行と列で扱われる場合で前記辞書データに登録される文字数が前記特徴量データの要素数よりも多いときに、前記ベクトル演算器が、前記特徴量データの列をベクトルとしてベクトル演算で前記類似度を算出する構成を有している。
この構成により、文字数が特徴量データの要素数よりも多いため、特徴量データに対応したものをベクトルとして捉えると、ベクトル演算に適する長いベクトルデータを用意することができ、ベクトル演算器の演算効率が向上するため、マッチング処理に要する時間が短くなり、結果的に非常に使い勝手の良い文字認識システムを提供することができる。
また、本発明の文字認識装置は、前記ベクトル演算器が、GPUで構成される場合、前記特徴量データが128ビットで構成される構成を有している。
この構成により、GPUのレジスタは、一般的に128ビット長であり、特徴量データが128ビットであるため、GPUにとってはレジスタと特徴量データのサイズがマッチする最も取り扱い易いデータタイプとなり、ベクトル演算処理のパフォーマンスを向上させることができる。
また、本発明の文字認識装置は、前記ベクトル演算器が、前記認識対象文字の特徴量データと前記辞書データにある各文字の特徴量データとのそれぞれの差分である差分データを算出して前記外部メモリに記憶させ、前記差分データに基づいてベクトル演算で前記類似度を算出する構成を有している。
この構成により、差分データを算出して外部メモリに記憶させ、差分データに基づいてベクトル演算で類似度を算出するため、ベクトル演算処理のパフォーマンスを向上させることができる。
また、本発明の文字認識装置は、前記ベクトル演算器が、前記特徴量データに対応する1文字と前記特徴量データの要素とがそれぞれ行と列で扱われる場合で前記辞書データに登録される文字数が前記特徴量データの要素数よりも多いときに前記特徴量データの行をベクトルとしてベクトル演算で前記類似度を算出する構成を有している。
この構成により、特徴量データに対応したものをベクトルとして捉えたものと比較すると、ベクトルデータの長さは短くなってしまうが、一方、外部メモリに対する書込データ量が激減するため、外部メモリとGPUとの間のメモリバンド幅に余裕の無いGPUの場合にはパフォーマンスが向上するので、結果的に非常に使い勝手の良い文字認識システムを提供することができる。
また、本発明の文字認識装置は、前記認識対象文字の特徴量データおよび前記類似度は、複数の文字に対応したデータ構造を有しており、前記ベクトル演算器が、前記辞書データに登録されている各文字の特徴量データと複数の前記認識対象文字の特徴量データとの類似度を算出する構成を有している。
この構成により、複数の文字のマッチング処理をすることができるため、非常に使い勝手の良い文字認識装置を提供することができる。
以上のように本発明は、字認識におけるマッチング処理を行う際に従来製品と比較して製造コストがかからない文字認識装置を提供するものである。
以下、本発明の実施の形態について、図面を参照して説明する。
図1は、本発明の実施の形態に係る文字認識装置のブロック図である。図1に示した文字認識装置は、ホストPC20とデータ転送を行うインタフェース11、辞書データと認識の対象となる文字である認識対象文字の特徴量データとを記憶する外部メモリ12、および、破線で囲んだLSI(Large Scale Integration)13によって構成されている。
辞書データは、例えば、英数字、平仮名、漢字などの1つ1つの文字毎の特徴量に関する特徴量データを備えており、ホストPC20から転送される。例えば、辞書に登録されている全文字数は、日本語の辞書であれば約4000文字程度である。
認識対象文字の特徴量データは、活字または手書き文字が記載されている文書をイメージスキャナーなどで読取って得られた画像データから解析されたデータであり、ホストPC20から転送される。
インタフェース11は、PCI(Peripheral Component Interconnect)などによって構成され、ホストPC20に接続されている。ホストPC20から指示される命令やデータの送受信は、インタフェース11を介して行われる。
外部メモリ12は、RAM(Random Access Memory)などによって構成され、ホストPC20からインタフェース11を介して転送される後述の辞書データ、認識対象文字の特徴量データ、差分データ、および距離データに加えて、ベクトル演算パイプ15が実行するプログラムを記憶している。
LSI13は、外部メモリ12からデータを読み出すためのメモリ読出回路14と、ベクトル演算処理を行うベクトル演算パイプ15と、ベクトル演算パイプ15でベクトル演算された結果を書き込むためのメモリ書込回路16によって構成されている。
以下、メモリ読出回路14の個々を区別する場合は、メモリ読出回路14A〜メモリ読出回路14Dと記載する。ベクトル演算パイプ15やメモリ書込回路16の個々を区別する場合は、同様に符号A〜Dを付加する。また、それぞれはA〜Dの4つに限定することはない。
ベクトル演算パイプ15は、プログラマブル回路で構成されており、ベクトル演算パイプ15が実行するプログラムは、ホストPC側からインタフェース11経由で転送されるなどして外部メモリ12に書き込まれている。なお、プログラムの内容は、後述するベクトル演算を処理するための命令群である。例えば、ベクトル演算パイプ15Aおよびベクトル演算パイプ15Bは、後述する差分データのベクトル演算を実行し、ベクトル演算パイプ15Cおよびベクトル演算パイプ15Dは、後述する距離データのベクトル演算を実行するなど、各ベクトル演算パイプ15で処理内容の異なるプログラムが実行されていてもよい。
図2は、マッチング処理の概念図である。マッチング処理では、認識対象文字の特徴量データと辞書データにある各文字の特徴量データとの距離が算出される。本発明の類似度は、この距離を構成し、本発明の実施の形態では距離として説明する。辞書データには、文字を表す文字コードと特徴量データが対応付いている。通し番号は、日本語の文字であれば約4000になる。また、算出された各距離のうち、最も距離の短い辞書の特徴量データに対応する文字が認識された文字として選出される。
図3は、辞書にある任意の1文字の特徴量データと認識対象文字の特徴量データとの間の距離の計算を示す図である。図3に示すように、文字の特徴量データは、要素数M個(Mは2以上の整数)からなるM次元のベクトルデータである。
図3に示すように、同じ次元にある辞書の文字の特徴量データと認識対象文字の特徴量データとの値の差が、それぞれ次元毎に計算され、計算された差の絶対値(又は2乗の値)が計算される。次元毎の差の絶対値が加算された値が、辞書にある1つの文字の特徴量データと認識対象文字の特徴量データとの間の距離である。
特徴量の差の絶対値を取った場合には、いわゆるマンハッタン距離、特徴量の差を2乗した場合にはユークリッド距離の自乗値が求まることになる。正しくユークリッド距離を求めるためには、自乗値の総和の平方根を求める必要があるが、マッチング処理では距離の大小が判断できればよいため、計算コストの高い平方根の計算処理は省略している。
特徴量データがM次元である場合、辞書にある1つの文字の特徴量データと認識対象文字の特徴量データとの間の距離Aが算出されるには、辞書の1文字に対して、M回の減算と、M回の絶対値又は2乗計算と、M回の加算(累積加算)が行われる。辞書に登録されている全文字(例えば、日本語の活字であれば約4000文字)との距離が計算されるには、更に、辞書に登録されている全文字数分、距離Aを求めたときの計算を繰返すことになる。このように、マッチング処理では非常に多くの回数の演算が行われる。
図4および図5は、プログラマブル回路によって構成されるベクトル演算パイプ15について説明するための図である。ベクトル演算パイプ15は、実行するプログラムに応じた処理を行うようになっている。
図4は、ベクトル演算パイプ15に入力される入力ベクトルデータと、ベクトル演算パイプ15が出力する出力ベクトルデータの例を示している。ベクトル演算パイプ15は、同じ次元の入力ベクトルデータと出力ベクトルデータとを同じデータ型で扱う。ベクトル演算パイプ15を実現する手段として、比較的安価に入手可能なGPU(Graphics Processig Unit)を用いる場合、24ビット又は32ビット単精度浮動小数点の数値のデータ型を4個まで同時に取り扱うことが可能になっている。
図14は、4種類の浮動小数点のデータ型の構成を示しており、それぞれのデータ型をfloat1、float2、float3、float4と呼ぶ。図14(A)に示すfloat1型は、1個の単精度浮動小数(x)によって構成され、図14(B)に示すfloat2型は、2個の単精度浮動小数(x、y)によって構成され、図14(C)に示すfloat3型は、3個の単精度浮動小数(x、y、z)によって構成され、図14(D)に示すfloat4型は、4個の単精度浮動小数(x、y、z、a)によって構成されている。
図5は、ベクトル演算パイプの簡単な動作例を示している。例えば、図5は、プログラムの演算内容を 「out ← in - 100」 とし、ベクトル演算パイプ15の入力ベクトルデータと出力データの型はfloat1とした場合、入力ベクトルデータとして図示しているサンプルデータが与えられた場合に、100を引いたものが出力ベクトルデータとして出力される様子を示している。
なお、ベクトル演算パイプ15でベクトル演算された出力結果は、図4および図5のようにベクトル値になる場合と、スカラー値となる場合がある。例えば、ベクトル演算パイプ15が実行するプログラムの内容としては、図3で説明した距離を計算する処理などである。
図6は、辞書データ、認識対象文字の特徴量データ、差分データ、および距離データの構造を示す図である。図6の例では、辞書に登録している文字数を4000としている。特徴量データの要素数Mを64とすれば、図6(A)に示すように辞書データは、4000列×64行の二次元配列のテーブルで構成される。
また、1つの認識対象文字の特徴量データは、図6(B)に示すように1列×64行の一次元配列のテーブルで構成される。認識対象文字の特徴量データと、辞書データにある各文字の特徴量データとのそれぞれの差分である差分データは、図6(C)に示すように4000列×64行の二次元配列のテーブルで構成される。
認識対象文字の特徴量データと辞書データにある各文字の特徴量データとの距離のデータは、図6(D)に示すように4000列×1行の一次元配列のテーブルで構成される。
次に、各種データテーブルの構成を詳細に説明する。辞書データの1列分のデータは、辞書に登録されている1文字分の要素数64の特徴量に相当しており、辞書データの1行分のデータは、4000文字に相当している。辞書データの1つのデータのサイズは型がfloat1で4バイトとすれば、辞書データのデータサイズは4×64×4000=1024000バイト (1000KB)となる。
近年、入手可能なグラフィックス・アクセラレータ・ボードには128MB〜512MBのビデオメモリーが搭載されているのが標準的なので、この1MB程度のデータをこのビデオメモリーに格納することは、それほど難しいことではない。
図6において、辞書データは、横に1行分のデータ(サイズは4000×1)を1つのベクトルとして取り扱っているので、全部で64個のベクトルを有することになる。これらのベクトルデータに対してベクトル演算を行う際には、スカラデータとして認識対象文字の特徴量データが0から63の順に1個ずつ使用される。
ベクトル演算の結果は、再度ベクトルの形式となり(サイズは4000×1)、差分データdifに1行目から順に上から格納されていく。辞書データdおよび認識対象文字の特徴量データt1のm行目(要素数64の中の任意のm)に対して行われるベクトル演算を式1で表現すると、差分データdifは、以下の通りとなる。
[式1]
dif[m][0] ← t1[m] - d[m][0]
dif[m][1] ← t1[m] - d[m][1]
dif[m][2] ← t1[m] - d[m][2]

dif[m][3999]← t1[m] - d[m][3999]
このベクトル演算が辞書データdの1行目から64行目まで計64回繰り返して行われると(m=0〜63)、認識対象の1文字と辞書に登録されている全文字との類似度(距離)を求めるための元データである、各特徴量毎の差分データが4000×64個分得られることになる。
距離を求めるため、差分データを縦1列毎に合算すれば、認識対象文字と辞書に登録されているそれぞれの文字との距離が求まることになる。そのために差分データの縦1列をベクトルデータ(サイズは1×4000)と見なして、ベクトル演算を行う。よって、差分データは全部で4000個のベクトルで構成されていることになる。ベクトル演算の結果は、スカラー値となり、距離データdist1に要素0から順に格納されていく。この差分データのn列目に対して行われるベクトル演算を式2で表現すると、以下の通りとなる。
[式2]
dist1[n] ← 0
dist1[n] ← dist1[n] + dif[0][n] * dif[0][n]
dist1[n] ← dist1[n] + dif[1][n] * dif[1][n]

dist1[n] ← dist1[n] + dif[63][n] * dif[63][n]
このベクトル演算が差分データdifの1列目から4000列目まで計4000回繰り返して行われると(n=0〜3999)、距離データdist1に認識対象文字と辞書に登録されている全文字との距離が求められたことになる。辞書データに登録している全文字に対応した距離データは、ホストPC20側へ渡され、ホストPC20で文字認識候補の選定処理が行われ、文字認識がなされる。
1文字の特徴量は、本実施の形態では64個しかないのに対して、辞書データに登録されている文字数は4000個である。よって、特徴量データに対応したものをベクトルとして捉えると、ベクトル演算に適する長いベクトルデータ(4000の要素数)を用意することができる。その結果、ベクトル演算パイプ15の演算効率が向上するため、マッチング処理に要する時間が短くなり、非常に使い勝手の良い文字認識装置を提供することができる。
図7は、図6に示した辞書データ、認識対象文字の特徴量データ、差分データ、および距離データの構造を示す図の変形例である。図6に示した辞書データ、認識対象文字の特徴量データ、差分データにおいて、データの型がfloat1からfloat4に変更されている。このため、配列の行数が63から15に変更されている。
GPUのレジスタは、一般的に128ビット長であり、GPUにとってはレジスタとデータサイズがマッチするfloat4が最も取り扱い易いデータタイプであるため、データの型をfloat1からfloat4に変更することによってベクトル演算処理のパフォーマンスが向上することが期待できる。なお、データの並びや処理の流れは図6と同じであるため、詳細は省略する。
図8は、図6に示した辞書データ、認識対象文字の特徴量データ、差分データ、および距離データの構造を示す図の変形例である。図6に示した認識対象文字の特徴量データ、差分データ、距離データにおいて、データの型がfloat1からfloat4に変更されている。
認識対象文字の特徴量データの型がfloat4に変更されているため、4文字分の認識対象文字の特徴量データが格納可能となっている。すなわち、図8に示したように、認識対象文字テーブルにおいて点線で区切られた縦一列に1文字分の特徴量が収められている。同様に、距離データについても1つのデータ要素に4文字分の距離データを格納することができるようになっている。
図8に示す各種データテーブルにおいて、辞書データdおよび認識対象文字の特徴量データt1_4のm行目(要素数64の中の任意のm)に対して行われるベクトル演算を式3で表現すると、差分データdifは、以下の通りとなる。このベクトル演算が差分データdifの1行目から64行目まで計64回繰り返して行われる(m=0〜63)。
[式3]
dif[m][0].x ← t1_4[m].x - d[m][0]
dif[m][0].y ← t1_4[m].y - d[m][0]
dif[m][0].z ← t1_4[m].z - d[m][0]
dif[m][0].a ← t1_4[m].a - d[m][0]
dif[m][1].x ← t1_4[m].x - d[m][1]
dif[m][1].y ← t1_4[m].y - d[m][1]
dif[m][1].z ← t1_4[m].z - d[m][1]
dif[m][1].a ← t1_4[m].a - d[m][1]

dif[m][3999].a ← t1_4[m].a - d[m][3999]
また、差分データのn列目から求められる距離データdist1_4のベクトル演算を式4で表現すると、以下の通りとなる。このベクトル演算も差分データdifの1列目から4000列目まで計4000回繰り返して行われると(n=0〜3999)、4文字分の認識対象文字と辞書に登録されている全文字との距離が算出されたことになる。
[式4]
dist1_4[n].x ← 0
dist1_4[n].y ← 0
dist1_4[n].z ← 0
dist1_4[n].a ← 0
dist1_4[n].x ← dist1_4[n].x + dif[0][n].x * dif[0][n].x
dist1_4[n].y ← dist1_4[n].y + dif[0][n].y * dif[0][n].y
dist1_4[n].z ← dist1_4[n].z + dif[0][n].z * dif[0][n].z
dist1_4[n].a ← dist1_4[n].a + dif[0][n].a * dif[0][n].a
dist1_4[n].x ← dist1_4[n].x + dif[1][n].x * dif[1][n].x

dist1_4[n].a ← dist1_4[n].a + dif[63][n].a * dif[63][n].a
ここでは、本発明の実施の形態に係る文字認識装置が4文字分の認識対象文字に対して並行してパターンマッチング処理を行うことによって、辞書データへのアクセス回数が1/4に低減できることが分かる。外部メモリ12へのアクセスには、必ず時間が掛かるので、結果としてパターンマッチングに要する時間が短縮できたことになる。
図9は、図6に示した辞書データ、認識対象文字の特徴量データ、および距離データの構造を示す図の変形例である。図9(A)に示す辞書データ、図9(B)に示す認識対象文字の特徴量データ、図9(C)に示す距離データは、それぞれ図6に示した辞書データ、認識対象文字の特徴量データ、距離データの行と列が入れ替わったような配置のデータ構造となっている。
また、辞書データにおいて、横1行分のデータがベクトルデータとして取り扱われており、辞書1文字の特徴量が1ベクトルに対応している。この辞書データのm行目に対して行われるベクトル演算内容を式5で表現すると、以下の通りとなる。このベクトル演算が辞書データの1行目から4000行目まで計4000回繰り返して行われると(p=0〜3999)、距離データに認識対象文字と辞書に登録されている全文字との距離が求められる。
[式5]
dist1[p] ← 0
dist1[p] ← dist1[p] + (t1[0] - d[p][0]) * (t1[0] - d[p][0])
dist1[p] ← dist1[p] + (t1[1] - d[p][1]) * (t1[1] - d[p][1])

dist1[p] ← dist1[p] + (t1[63] - d[p][63]) * (t1[63] - d[p][63])
図10は、図9に示した辞書データ、認識対象文字の特徴量データ、および距離データの構造を示す図の変形例である。図10に示したデータと図9に示したデータとの違いは、辞書データと認識対象文字の特徴量データの要素の型をfloat1からfloat4に変更している点である。型変更による効果も図7と全く同様であるため、これ以上の説明は省略する。
図11は、図9に示した辞書データ、認識対象文字の特徴量データ、および距離データの構造を示す図の変形例である。図11に示したデータと図9に示したデータとの違いは、認識対象文字の特徴量データと距離データの型をfloat1からfloat4に変更している点である。
図11に示した認識対象文字の特徴量データは、4文字分の認識対象文字の特徴量を格納しておくことが可能となっている。なお、認識対象文字の特徴量データにおいて点線で区切られた横一列に1文字分の特徴量が収められている。同様に、距離データについても一つのデータ要素に4文字分の距離データを格納することができるようになっている。
図11において、辞書データのp行目に対して行われるベクトル演算を式6で表現すると、以下の通りとなる。このベクトル演算を辞書データの1行目から4000行目まで計4000回繰り返すと(p=0〜3999)、認識対象の4文字と辞書に登録されている全文字との距離データが得られる。
[式6]
dist1_4[p].x ← 0
dist1_4[p].y ← 0
dist1_4[p].z ← 0
dist1_4[p].a ← 0
dist1_4[p].x ← dist1_4[p].x + (t1_4[0].x - d[p][0]) * (t1_4[0].x - d[p][0])
dist1_4[p].y ← dist1_4[p].y + (t1_4[0].y - d[p][0]) * (t1_4[0].y - d[p][0])
dist1_4[p].z ← dist1_4[p].z + (t1_4[0].z - d[p][0]) * (t1_4[0].z - d[p][0])
dist1_4[p].a ← dist1_4[p].a + (t1_4[0].a - d[p][0]) * (t1_4[0].a - d[p][0])
dist1_4[p].x ← dist1_4[p].x + (t1_4[1].x - d[p][1]) * (t1_4[1].x - d[p][1])

dist1_4[p].a ← dist1_4[p].a + (t1_4[63].a - d[p][63]) * (t1_4[63].a - d[p][63])
図6〜図8で説明したデータ配置及び演算方法の場合には、辞書データと認識対象文字の特徴量データから求めた差分データを、一旦差分データに格納しておく必要があったが、図9〜図11のデータ構造では、辞書データと認識対象文字の特徴量データから直接、距離データが算出されているため、ベクトル演算パイプ15(GPU)から外部メモリ12に対して書き込むデータ量が相当に削減され、メモリバンド幅に余裕の無いベクトル演算パイプ15(GPU)の場合には、マッチング処理のパフォーマンスが向上することが期待できる。
図12は、ホストPCがマッチング処理を行う際ベクトル演算パイプに命令を発行する処理の流れを表したフローチャートである。
図12(A)は、式1に示した差分データのベクトル演算を行うベクトル演算パイプ15に命令を発行する処理の流れを表したフローチャートである。ここで、使用するデータは、図6に示したデータを用いる。
ホストPC20は、特徴量データの対象となる要素数のmを0に初期化する(ステップS1)。ホストPC20は、複数のベクトル演算パイプ15のうち、式1に示した差分データのベクトル演算が可能で空いているベクトル演算パイプ15(使用されていないもの)を見付け出し(ステップS2)、ベクトル演算パイプ15が空いていれば、空いているベクトル演算パイプ15に演算指示の発行を行う(ステップS3)。
演算指示の発行を行った後、ホストPC20は、1つインクリメントしたmを対象とし(ステップS4)、mが64よりも小さい場合(ステップS5)、ステップS2に進み、mが64以上の場合(ステップS5)、演算指示を発行したベクトル演算パイプ15の処理が全て終了したか否か確認し(ステップS6)、全て終了した場合には処理が終了する。
図12(B)は、式2に示した距離データのベクトル演算を行うベクトル演算パイプ15に命令を発行する処理の流れを表したフローチャートである。ここで、使用するデータは、図6に示したデータを用いる。
ホストPC20は、辞書データに登録されている文字に対応した要素数のnを0に初期化する(ステップS11)。ホストPC20は、複数のベクトル演算パイプ15のうち、式2に示した距離データのベクトル演算が可能で空いているベクトル演算パイプ15(使用されていないもの)を見付け出し(ステップS12)、ベクトル演算パイプ15が空いていれば、空いているベクトル演算パイプ15に演算指示の発行を行う(ステップS13)。
演算指示の発行を行った後、ホストPC20は、1つインクリメントしたnを対象とし(ステップS14)、nが4000よりも小さい場合(ステップS15)、ステップS12に進み、nが4000以上の場合(ステップS15)、演算指示を発行したベクトル演算パイプ15の処理が全て終了したか否か確認し(ステップS16)、全て終了した場合には処理が終了する。その後、距離データは、ホストPC20側へ渡され、ホストPC20で文字認識候補の選定処理が行われ、文字認識がなされる。
なお、図12(A)のフローチャートでは、ベクトル演算パイプ15は、式1に示した差分データのベクトル演算を行い、図12(B)のフローチャートでは、式2に示した距離データのベクトル演算を行うとしたが、図8に示したデータが使用される場合、図12(A)のフローチャートでは、式3に示した差分データのベクトル演算を行い、図12(B)のフローチャートでは、式4に示した距離データのベクトル演算を行う。
図12(C)は、式5に示した距離データのベクトル演算を行うベクトル演算パイプ15に命令を発行する処理の流れを表したフローチャートである。ここで、使用するデータは、図9に示したデータを用いる。
ホストPC20は、辞書データに登録されている文字に対応した要素数のpを0に初期化する(ステップS21)。ホストPC20は、複数のベクトル演算パイプ15のうち、式5に示した距離データのベクトル演算が可能で空いているベクトル演算パイプ15(使用されていないもの)を見付け出し(ステップS22)、ベクトル演算パイプ15が空いていれば、空いているベクトル演算パイプ15に演算指示の発行を行う(ステップS23)。
演算指示の発行を行った後、ホストPC20は、1つインクリメントしたpを対象とし(ステップS24)、pが4000よりも小さい場合(ステップS25)、ステップS22に進み、pが4000以上の場合(ステップS25)、演算指示を発行したベクトル演算パイプ15の処理が全て終了したか否か確認し(ステップS26)、全て終了した場合には処理が終了する。その後、距離データは、ホストPC20側へ渡され、ホストPC20で文字認識候補の選定処理が行われ、文字認識がなされる。
なお、図12(C)のフローチャートでは、ベクトル演算パイプ15は、式5に示した距離データのベクトル演算を行うとしたが、図11に示したデータが使用される場合、図12(C)のフローチャートでは、式6に示した距離データのベクトル演算を行う。
以上のように、空いているベクトル演算パイプ15がある限り、次々とベクトル演算指示が発行されるため、ベクトル演算パイプ15のそれぞれは同時に実行される。従って、ハードウェアの性能が効率良く引き出され、マッチング処理のパフォーマンスが向上することが期待できる。
図13は、複数の認識対象文字がある原稿のページがスキャンされた場合であって、外部メモリに全文字分の半分の辞書データしか格納できない場合のフローチャートである。
ホストPC20は、インタフェース11経由で1ページ分の認識対象文字の特徴量データを外部メモリ12に書き込む(ステップS31)。次に、ホストPC20は、辞書データの前半を外部メモリ12の辞書データのエリアに書込み(ステップS32)、図12のフローチャートのように、辞書データの前半にある文字の特徴量データと1ページ分の認識対象文字の特徴量データとの間の距離データを算出する(ステップS33)。
次に、ホストPC20は、辞書データの後半を外部メモリ12の辞書データのエリアに書込文字マッチング処理(ステップS34)、図12のフローチャートのように、辞書データの後半にある文字の特徴量データと1ページ分の認識対象文字の特徴量データとの間の距離データを算出する(ステップS35)。
次に、ホストPC20は、ステップS33およびステップS35で算出された距離データを取得し、認識対象文字を特定する(ステップS36)。スキャンされた次の原稿のページがあれば(ステップS37)、再度ステップS31〜ステップS36が処理される。
従来では、外部メモリ12に全文字分の辞書データが載りきらない場合には、同時に処理可能な認識対象文字に対して距離を計算する毎に辞書データの入れ替えを行っていたため、辞書データの入れ替えに要する時間がシステムのオーバーヘッドとして積み重なり、結果的に文字認識システムとして使い勝手の悪いものとなっていた。図13のフローチャートでは、原稿1ページ分の文字毎に、外部メモリ12の辞書データのエリアに対して辞書データを前半と後半に分けて入れ替えてマッチング処理を行うため、1文字毎に辞書データの入れ替えを行う場合と比較すると、辞書データの入れ替え実施回数が低減して辞書データの入れ替えに必要な処理時間を省略することができるので、マッチング処理のパフォーマンスが向上することが期待できる。
また、辞書データを入れ替えるためにはホストPC20側からインタフェース11経由で辞書データを転送する必要があるが、インタフェース11として一般的に利用されているPCIはピーク性能でも133MB/s程度のメモリバンド幅しか無く、CPUがFSB経由でメインメモリにリードライトする場合のメモリバンド幅と比較すると1桁以上も劣っている。従ってメインメモリ上のデータを書き換えるのに比べると、インタフェース11経由でのメモリデータの書き換えには飛躍的に長い時間を要してしまう。図13のフローチャートのように、GPUの外部メモリ12にできるだけ多くの辞書データを置くことが好ましく、さらに一度辞書データを書き換えたら、極力辞書データを書き換えないで認識対象文字のマッチング処理を継続すれば、マッチング処理に要する時間が短くなり、結果的に非常に使い勝手の良い文字認識システムを提供することができる。
本発明の実施の形態に係る文字認識装置のブロック図 文字認識に係るマッチング処理の概念図 辞書にある任意の1文字の特徴量データと認識対象文字の特徴量データとの間の距離の計算を示す図 ベクトル演算パイプに入力される入力ベクトルデータと、ベクトル演算パイプが出力する出力ベクトルデータの例を示す図 ベクトル演算パイプの簡単な動作例を示す図 辞書データ、認識対象文字の特徴量データ、差分データ、および距離データの構造を示す図 図6に示した辞書データ、認識対象文字の特徴量データ、差分データ、および距離データの構造の変形例を示す図 図6に示した辞書データ、認識対象文字の特徴量データ、差分データ、および距離データの構造の変形例を示す図 図6に示した辞書データ、認識対象文字の特徴量データ、および距離データの構造の変形例を示す図 図9に示した辞書データ、認識対象文字の特徴量データ、および距離データの構造の変形例を示す図 図9に示した辞書データ、認識対象文字の特徴量データ、および距離データの構造の変形例を示す図 ホストPCがマッチング処理を行う際ベクトル演算パイプに命令を発行する処理の流れを表したフローチャート 複数の認識対象文字がある原稿のページがスキャンされた場合であって、外部メモリに全文字分の半分の辞書データしか格納できない場合のフローチャート 4種類の浮動小数点のデータ型の構成を示す図
符号の説明
11 インタフェース
12 外部メモリ
13 LSI
14 メモリ読出回路
15 ベクトル演算パイプ(ベクトル演算器)
16 メモリ書込回路
20 ホストPC(情報処理手段)

Claims (9)

  1. 各文字に対応した特徴量データが登録された辞書データと認識対象文字を読取って得られた認識対象文字の特徴量データとを比較して文字認識を行う文字認識装置であって、
    前記辞書データ、前記認識対象文字の特徴量データ、および前記辞書データに登録されている各文字の特徴量データと前記認識対象文字の特徴量データとの類似度を記憶する外部メモリと、
    前記辞書データおよび前記認識対象文字の特徴量データを前記外部メモリに転送する情報処理手段と、
    前記辞書データおよび前記認識対象文字の特徴量データをベクトル演算で前記類似度を算出して前記外部メモリに記憶させる1つ以上のベクトル演算器とを備え、
    前記情報処理手段が、前記ベクトル演算器に算出させて前記外部メモリに記憶された前記類似度に基づいて前記文字認識を行うことを特徴とする文字認識装置。
  2. 前記ベクトル演算器は、前記辞書データに登録されている各文字の特徴量データと複数の前記認識対象文字の特徴量データとの類似度を算出することを特徴とする請求項1に記載の文字認識装置。
  3. 前記ベクトル演算器が複数ある場合には、前記情報処理手段が複数の前記ベクトル演算器に並列で前記類似度を算出させることを特徴とする請求項1に記載の文字認識装置。
  4. 前記情報処理手段は、前記辞書データを所定数分割し、順次未だ前記類似度を算出していない分割した前記辞書データを前記外部メモリに転送し、転送した分割の前記辞書データに基づいて前記ベクトル演算器に算出させることを特徴とする請求項2に記載の文字認識装置。
  5. 前記特徴量データの要素と前記特徴量データに対応する1文字とがそれぞれ行と列で扱われる場合で前記辞書データに登録される文字数が前記特徴量データの要素数よりも多いときに、前記ベクトル演算器が、前記特徴量データの列をベクトルとしてベクトル演算で前記類似度を算出することを特徴とする請求項1に記載の文字認識装置。
  6. 前記ベクトル演算器が、GPUで構成される場合、前記特徴量データが128ビットで構成されることを特徴とする請求項5に記載の文字認識装置。
  7. 前記ベクトル演算器が、前記認識対象文字の特徴量データと前記辞書データにある各文字の特徴量データとのそれぞれの差分である差分データを算出して前記外部メモリに記憶させ、前記差分データに基づいてベクトル演算で前記類似度を算出することを特徴とする請求項5に記載の文字認識装置。
  8. 前記ベクトル演算器が、前記特徴量データに対応する1文字と前記特徴量データの要素とがそれぞれ行と列で扱われる場合で前記辞書データに登録される文字数が前記特徴量データの要素数よりも多いときに前記特徴量データの行をベクトルとしてベクトル演算で前記類似度を算出することを特徴とする請求項1に記載の文字認識装置。
  9. 前記認識対象文字の特徴量データおよび前記類似度は、複数の文字に対応したデータ構造を有しており、前記ベクトル演算器が、前記辞書データに登録されている各文字の特徴量データと複数の前記認識対象文字の特徴量データとの類似度を算出することを特徴とする請求項5または請求項8に記載の文字認識装置。
JP2008070029A 2008-03-18 2008-03-18 文字認識装置 Expired - Fee Related JP5256799B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008070029A JP5256799B2 (ja) 2008-03-18 2008-03-18 文字認識装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008070029A JP5256799B2 (ja) 2008-03-18 2008-03-18 文字認識装置

Publications (2)

Publication Number Publication Date
JP2009223801A true JP2009223801A (ja) 2009-10-01
JP5256799B2 JP5256799B2 (ja) 2013-08-07

Family

ID=41240474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008070029A Expired - Fee Related JP5256799B2 (ja) 2008-03-18 2008-03-18 文字認識装置

Country Status (1)

Country Link
JP (1) JP5256799B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0199190A (ja) * 1987-10-13 1989-04-18 Fujitsu Ltd 距離演算回路
JPH01211192A (ja) * 1988-02-19 1989-08-24 Fujitsu Ltd 文字認識装置
JPH04250586A (ja) * 1991-01-28 1992-09-07 Fujitsu Ltd 辞書検索lsiの構成方法
JPH09179935A (ja) * 1995-12-22 1997-07-11 Hitachi Microcomput Syst Ltd 文字認識装置およびその制御方法
JP2000268131A (ja) * 1999-03-19 2000-09-29 Oki Electric Ind Co Ltd 文字認識装置
JP2003338200A (ja) * 2002-05-17 2003-11-28 Mitsubishi Electric Corp 半導体集積回路装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0199190A (ja) * 1987-10-13 1989-04-18 Fujitsu Ltd 距離演算回路
JPH01211192A (ja) * 1988-02-19 1989-08-24 Fujitsu Ltd 文字認識装置
JPH04250586A (ja) * 1991-01-28 1992-09-07 Fujitsu Ltd 辞書検索lsiの構成方法
JPH09179935A (ja) * 1995-12-22 1997-07-11 Hitachi Microcomput Syst Ltd 文字認識装置およびその制御方法
JP2000268131A (ja) * 1999-03-19 2000-09-29 Oki Electric Ind Co Ltd 文字認識装置
JP2003338200A (ja) * 2002-05-17 2003-11-28 Mitsubishi Electric Corp 半導体集積回路装置

Also Published As

Publication number Publication date
JP5256799B2 (ja) 2013-08-07

Similar Documents

Publication Publication Date Title
CN109165732B (zh) 神经网络处理装置及其执行向量乘加指令的方法
KR102166775B1 (ko) 스파스 연결용 인공 신경망 계산 장치와 방법
KR102148110B1 (ko) 계산 장치 및 방법
CN110796235B (zh) 卷积神经网络Valid卷积的向量化实现方法
CN110163354B (zh) 一种计算装置及方法
CN111045728B (zh) 一种计算装置及相关产品
JP5981666B2 (ja) 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。
JP7129138B2 (ja) 16ビット浮動小数点乗算器を用いた行列と行列の乗算による複数精度整数乗算器
US20210248497A1 (en) Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US8031942B2 (en) Matching device
US11481353B2 (en) Methods and devices for reducing array size and complexity in automata processors
JP5256799B2 (ja) 文字認識装置
US20220138282A1 (en) Computing device and computing method
CN111274793A (zh) 一种文本处理方法、装置以及计算设备
US20210209492A1 (en) Architecture for table-based mathematical operations for inference acceleration in machine learning
EP3757821A1 (en) Apparatus and method for transforming matrix, and dataprocessing system
CN111798363A (zh) 图形处理器
JP5528249B2 (ja) 最適アラインメント計算装置及びプログラム
US20240094986A1 (en) Method and apparatus for matrix computation using data conversion in a compute accelerator
CN111724221A (zh) 确定商品匹配信息的方法、系统、电子设备及存储介质
US20160170652A1 (en) Differential Data Access
US20240013052A1 (en) Bit Sparse Neural Network Optimization
US20220309126A1 (en) Approximation of matrices for matrix multiply operations
Bassoy et al. Accelerating scalar-product based sequence alignment using graphics processor units
CN116910432A (zh) 基于异构众核处理器的稀疏矩阵向量乘方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130408

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160502

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees