(57)【要約】【課題】画像に含まれる文字を精度よく認識し得る文字認識プログラムを提供すること。【解決手段】本発明の文字認識プログラムは、抽出処理により抽出された文字画像について、該文字画像に含まれる文字に関する属性として予め提示された属性情報を属性取得処理により取得し、該属性情報を考慮して文字の判別を行う。【選択図】図５
2019101512.tif 000002
【特許請求の範囲】
【請求項１】
画像を解析して、該画像に含まれる文字を認識する処理を電子計算機に実行させる文字認識プログラムであって、
解析の対象とする画像を取得する画像取得処理と、
該画像取得処理により取得された画像から一の文字が含まれると推定される一部分を文字画像として抽出する抽出処理と、
該抽出処理により抽出された文字画像に関し、その文字画像に含まれる文字の属性として予め提示された属性情報を取得する属性取得処理と、
前記抽出処理により抽出された文字画像を、前記属性取得処理により取得された属性情報を考慮して解析して、該文字画像に含まれる文字を判別する文字判別処理と、
を前記電子計算機に実行させるものであることを特徴とする文字認識プログラム。
【請求項２】
前記属性取得処理は、文字の分類を示す情報を前記文字画像に含まれる文字の属性情報として取得するものであることを特徴とする請求項１に記載の文字認識プログラム。
【請求項３】
前記属性取得処理は、書体を示す情報を前記文字画像に含まれる文字の属性情報として取得するものであることを特徴とする請求項１に記載の文字認識プログラム。
【請求項４】
前記文字判別処理により判別された文字の情報を取得する結果取得処理と、
該結果取得処理により取得された文字の情報に基づいて、該文字の属性として予め提示された属性情報を更新する属性更新処理と、を前記電子計算機に実行させるものであって、
前記画像取得処理は、複数の画像を連続して取得するものであり、
前記抽出処理は、前記画像取得処理により連続して取得される複数の画像の夫々について、略同一の位置範囲を前記文字画像として抽出するものであり、
前記属性取得処理は、直前の前記文字判別処理の実行の際に前記属性更新処理によって更新された属性情報を、前記抽出処理によって抽出された文字画像に含まれる文字の属性情報として取得するものであることを特徴とする請求項１から３のいずれかに記載の文字認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像に含まれる文字を認識する文字認識プログラムに関する。
【背景技術】
【０００２】
カメラで撮影等された画像を解析し、該画像に写り込んだ文字を認識する手法はＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅｃｏｇｎｉｚａｔｉｏｎ）技術と呼ばれ、多くの情報処理装置、プログラム等として実装され、利用されている。
【０００３】
このようなＯＣＲ技術においては、一般的に、予め見本となる文字の特徴をデータベース化し、認識の対象とする画像の特徴と最も近い特徴をもつ文字をその画像に写り込んだ文字として認識することが一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平３−１１１９８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
認識の対象とする画像の特徴に対して、見本となる文字の特徴が近いか否かの評価は、単純には準備した見本として選択した文字の数だけ行わなければならない。候補となる文字が増えるほど、前述の評価の回数が増えるために処理効率が悪化してしまう。また、候補となる文字が多ければ多いほど、偶々特徴が近かった想定外の文字であると誤認識してしまう可能性が高まってしまう。
【０００６】
画像に写り込む文字は、その文字としての概念の他、書体の大きさ、色など、外観上の種々の特徴も含まれる。そうすると、前述した文字の種類による処理効率の課題に加え、文字の態様ごとにも特徴をデータベース化しなければならず、さらに処理効率の悪化や誤認識の発生が起こる可能性がある。
【０００７】
本発明は、前述した問題点等を解決するためになされたものであり、画像に含まれる文字の認識精度を向上し得る文字認識プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の文字認識プログラムは、画像を解析して、該画像に含まれる文字を認識する処理を電子計算機に実行させるものであって、解析の対象とする画像を取得する画像取得処理と、該画像取得処理により取得された画像から一の文字が含まれると推定される一部分を文字画像として抽出する抽出処理と、該抽出処理により抽出された文字画像に関し、その文字画像に含まれる文字の属性として予め提示された属性情報を取得する属性取得処理と、前記抽出処理により抽出された文字画像を、前記属性取得処理により取得された属性情報を考慮して解析して、該文字画像に含まれる文字を判別する文字判別処理と、を前記電子計算機に実行させるものであることを特徴とする。
【０００９】
上述した本発明にあっては、前記属性取得処理を、文字の分類を示す情報を前記文字画像に含まれる文字の属性情報として取得するものとすることが提案される。
【００１０】
上述した本発明にあっては、前記属性取得処理を、書体を示す情報を前記文字画像に含まれる文字の属性情報として取得するものとすることが提案される。
【００１１】
上述した本発明にあっては、前記文字認識判別処理により判別された文字の情報を取得する結果取得処理と、該結果取得処理により取得された文字の情報に基づいて、該文字の属性として予め提示された属性情報を更新する属性更新処理と、を前記電子計算機に実行させ、前記画像取得処理を、複数の画像を連続して取得するものとし、前記抽出処理を、前記画像取得処理により連続して取得される複数の画像の夫々について、同一の位置範囲を抽出するものとし、前記種別属性取得処理を、直前の前記文字判別処理の実行の際に前記属性更新処理によって更新された属性情報を、前記抽出処理によって抽出された文字画像に含まれる文字の属性情報として取得するものとすることが提案される。
【発明の効果】
【００１２】
本発明の文字認識プログラムによれば、画像取得処理により取得された画像より、文字が含まれると推定される一部分が文字画像として抽出処理により抽出される。抽出された文字画像に関して、属性取得処理によって取得される予め該文字画像に含まれる文字の属性として提示された属性情報を考慮して、いずれの文字が該文字画像に含まれるか文字判別処理によって判別される。即ち、判別処理においては、属性情報によっていかなる態様の文字であるかを考慮して文字が判別されるため、より限定された候補から文字を判別でき、誤った文字であると判別する誤判別を抑制できる。従って、本発明の文字認識プログラムによれば、画像に対する文字認識（判別）を精度よく行うことができるとの効果がある。
【図面の簡単な説明】
【００１３】
【図１】（ａ）は読取プログラム２０ａにより認識する文字が記載された帳票の模式図であり、（ｂ）は読取プログラム２０ａにより帳票９０に記載された文字を認識するための構成の構成図である。
【図２】（ａ）はＲＯＭ２０に記憶される書体定義テーブル２０ｂを模式的に表した図であり、（ｂ）はＲＡＭ３０に記憶される文字種スコアテーブル３０ａを模式的に表した図である。
【図３】読取プログラム２０ａの連続読取処理Ｓ１００のフローチャートである。
【図４】読取プログラム２０ａの読取処理Ｓ２００のフローチャートである。
【図５】読取プログラム２０ａの文字判別処理Ｓ３００のフローチャートである。
【図６】読取プログラム２０ａのスコア更新処理Ｓ４００のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本願に係る発明（以下「本発明」と称す）の文字認識プログラムの実施例としての読取プログラム２０ａについて、各図を参照して説明する。図１（ａ）は、読取プログラム２０ａによって認識する文字が記載された帳票９０の模式図である。詳しくは後述するが、本発明の読取プログラム２０ａは、複数の帳票９０から連続して文字を読み取り（認識し）、読み取った文字を後述するディスプレイ５３に表示するものである。帳票９０は、所定の領域９１に文字が４つ記載されたものであり、図１（ａ）において手前（最上）にある帳票９０にあっては、領域９１に「Ａ１２Ｂ」との文字が印字されている。コンピュータ１のＣＰＵ１０（図１（ｂ）参照）は、読取プログラム２０ａを実行することにより、この「Ａ１２Ｂ」との文字を認識（判別）する。
【００１５】
図１（ｂ）は、読取プログラム２０ａを実行するための構成を表す構成図である。読取プログラム２０ａは、ＣＰＵ（中央演算装置）１０と、ＲＯＭ２０と、ＲＡＭ３０とを、バス４０によって相互に接続して構成されるコンピュータ１のＣＰＵ１０によって実行されるものである。ＲＯＭ２０は読取専用の記憶装置であり、読取プログラム２０ａはＲＯＭ２０に保持される。ＲＯＭ２０には、読取プログラム２０ａの他に、書体定義テーブル２０ｂと、文字サンプル２０ｃとが記憶される。書体定義テーブル２０ｂについては図２（ａ）の説明にて詳述する。文字サンプル２０ｃは、書体ごとに各文字の特徴を整理したデータ群であり、明朝体で表した文字の特徴を保持する明朝体サンプル２０ｃ１と、ゴシック体で表した文字の特徴を保持するゴシック体サンプル２０ｃ２とからなる。
【００１６】
ＲＡＭ３０は、読取と書込の双方が可能な記憶装置である。ＲＡＭ３０には、文字種スコアテーブル３０ａの領域と、読取結果３０ｂの領域とが確保される。文字種スコアテーブル３０ａについては、図２（ｂ）の説明にて詳述する。読取結果３０ｂは、後述する文字読み読取処理Ｓ２００において、読み取られた文字列が記憶される領域である。
【００１７】
コンピュータ１には、外部装置としてカメラ５１と、フィーダー５２と、ディスプレイ５３とが、バス４０に対して接続される。各装置はバス４０を介して、ＣＰＵ１０に対する入出力が可能とされる。
【００１８】
カメラ５１は、ＣＰＵ１０の制御を契機として撮影する装置であり、その撮影によって得られた静止画をＣＰＵ１０に入力可能に構成される。フィーダー５２は、複数の帳票９０が装填され、ＣＰＵ１０の制御に基づいて、カメラ５１の撮像範囲に帳票９０を１枚ずつ配置するための装置である。換言すれば、フィーダー５２は、カメラ５１によって撮影される帳票９０を逐次的に置換する装置である。ディスプレイ５３は、ＣＰＵ１０の制御によって文字列を表示可能な表示装置である。
【００１９】
本実施例の読取プログラム２０ａは、上述した構成の下でＣＰＵ１０によって実行される。なお、ここに説明する構成はあくまで例示であり、例えば、フィーダー５２を備えずに、人間がタイミングを合わせて帳票９０を置き換えるような構成であっても、本発明の文字認識プログラムとしての読取プログラム２０ａを実装することは可能である。
【００２０】
次に図２を参照して、ＲＯＭ２０に保持される書体定義テーブル２０ｂと、ＲＡＭ３０に保持される文字種スコアテーブル３０ａと、を説明する。図２（ａ）に示すのは、読み取り対象の文字の「書体」を定義する書体定義テーブル２０ｂの模式図である。書体定義テーブル２０ｂは、先頭から何文字目の文字であるかを示す位置２０ｂ１と、その文字がどの書体で印字されているかを示す書体名２０ｂ２とがペアとなった複数のデータで構成される。すなわち、書体定義テーブル２０ｂは、文字の位置ごとに表示書体を示すものである。図２（ａ）の例で説明すれば、１文字目は「ゴシック体」にて、２文字目は「明朝体」にて、と、それぞれの文字が印字されていることを表す。
【００２１】
書体定義テーブル２０ｂの内容は、既知の情報として、読取プログラム２０ａの実装と合わせて定義され、読取専用のＲＯＭ２０に保持させられる。
【００２２】
次に、図２（ｂ）に示す文字種スコアテーブル３０ａを説明する。文字種スコアテーブル３０ａはＲＡＭ３０によって保持される情報であり、その内容は、読取プログラム２０ａに基づいてＣＰＵ１０が実行する処理（図３〜図５参照）において更新され得る。
【００２３】
文字種スコアテーブル３０ａは、前述した書体定義テーブル２０ｂ同様、何文字目かを示す位置３０ａ１と、その文字の種類を予測するための値である文字種スコア３０ａ２とがペアになったデータで構成される。文字種スコア３０ａ２の値は、「０」を初期値として、正方向に大きいほど「数字」であることを、他方、負方向に大きいほど「英字」であることを示すものである。図２（ｂ）に示す例で説明すれば、１文字目は文字種スコア３０ａ２が「−１２」と負の値であるために「英字」と、２文字目は文字種スコア３０ａ２が「１４」と正の値であるため「数字」と予測される。この文字種スコアテーブル３０ａを利用した制御については、図３以降に示す処理の説明において詳述する。
【００２４】
なお、文字種スコアテーブル３０ａの各データの文字種スコア３０ａ２は、ＣＰＵ１０が読取プログラム２０ａの実行を開始する場合に、すべて「０」に初期化されるものとする。
【００２５】
次に図３から図６を参照して、読取プログラム２０ａに基づいてＣＰＵ１０が実行する処理を説明する。まず図３に示す連続読取処理Ｓ１００は、ＣＰＵ１０が読取プログラム２０ａの実行を開始した際、ＲＡＭ３０に所定の記憶領域を確保する等の初期処理を実行した後に実行される処理であり、複数の帳票９０から連続して文字を読み取るための処理である。
【００２６】
連続読取処理Ｓ１００において、ＣＰＵ１０は最初にフィーダー５２を駆動させてカメラ５１の撮影範囲に１枚の帳票９０を配置させる（Ｓ１０１）。ＣＰＵ１０はフィーダー５２による帳票９０の配置の成否を判定し（Ｓ１０２）、配置に成功している場合は（Ｓ１０２：Ｙｅｓ）、図４に示す読取処理Ｓ２００を実行する。読取処理Ｓ２００については後から詳述するが、ＣＰＵ１０は読取処理Ｓ２００を実行することによって、カメラ５１の撮影範囲に配置した帳票９０に記載された文字の内容をＲＡＭ３０の読取結果３０ｂに保持させることができる（図４：Ｓ２０７）。
【００２７】
ＣＰＵ１０は読取処理Ｓ２００を実行した後、読取結果３０ｂに保持された文字をディスプレイ５３に表示させる（Ｓ１０３）。換言すれば、カメラ５１の撮影範囲に配置された帳票９０に記載された文字として読取処理Ｓ２００の実行によって認識された文字が、ディスプレイ５３に表示される。その後、ＣＰＵ１０は、再びフィーダー５２を駆動させてカメラ５１の撮影範囲に次の帳票９０を配置し（Ｓ１０１）、以降、Ｓ１０２からＳ１０３の処理を反復実行する。そして、ＣＰＵ１０は、Ｓ１０２の判断においてフィーダー５２による帳票９０の配置に失敗したと判断した場合に（Ｓ１０２：Ｎｏ）、連続読取処理Ｓ１００の実行を終了することによって、読取プログラム２０ａ全体の実行を終える。
【００２８】
次に、図４を参照して、連続読取処理Ｓ１００から呼び出されて実行される読取処理Ｓ２００を説明する。読取処理Ｓ２００は、連続読取処理Ｓ１００中の反復処理（Ｓ１０１〜Ｓ１０３）において呼び出され、カメラ５１の撮影範囲に配置された１枚の帳票９０について、その帳票９０に記載された文字を認識し、その認識の結果として得られる文字をＲＡＭ３０の読取結果３０ｂに保持させる処理である。
【００２９】
読取処理Ｓ２００においてＣＰＵ１０は、まず、ＲＡＭ３０の読取結果３０ｂの保持内容を初期化する（Ｓ２０１）。次に、ＣＰＵ１０は、カメラ５１を制御して帳票９０を撮影させ、その撮影結果としての静止画を取得する（Ｓ２０２）。次に、ＣＰＵ１０は、Ｓ２０１の処理において取得した静止画から文字画像を抽出する（Ｓ２０３）。
【００３０】
より具体的には、Ｓ２０３の処理においてＣＰＵ１０はまず、１枚の静止画からまず所定の位置範囲の画像を切り出す。この画像の切り出しについては、本実施例では、文字が記載される帳票９０上の位置範囲は既知であるため、カメラ５１によって撮影された静止画の所定の位置範囲を切り出せば、文字が写り込んだ画像の抽出として足りるのである。そして、ＣＰＵ１０は切り出した画像について、公知の図形抽出等の技術を用いて、１文字分ずつの画像を抽出する。
【００３１】
次にＣＰＵ１０は変数ｉの領域をＲＡＭ３０に確保し、この変数ｉとして「１」を設定する（Ｓ２０４）。次に、ＣＰＵ１０は、Ｓ２０３の処理で抽出した文字画像として、変数ｉで示される位置、つまり、ｉ番目の文字が存在するか否かを判断する（Ｓ２０５）。ｉ番目の文字が存在すると判断された場合（Ｓ２０５：Ｙｅｓ）、ＣＰＵ１０は、そのｉ番目の文字画像を取得し（Ｓ２０６）、該文字画像について文字判別処理Ｓ３００を実行する。
【００３２】
ここで、図５を参照して文字判別処理Ｓ３００を説明する。文字判別処理Ｓ３００は、読取処理Ｓ２００において抽出された文字画像について、該文字画像に映る文字を判別する処理である。ＣＰＵ１０は、書体定義テーブル２０ｂ（図２（ａ）参照）から、ｉ番目の文字の書体名２０ｂ２を取得する（Ｓ３０１）。取得した書体名２０ｂ２が「明朝体」である場合には（Ｓ３０２：明朝体）、ＣＰＵ１０は、文字認識のサンプルとして明朝体サンプル２０ｃ１を選択する（Ｓ３０３）。他方、取得した書体名２０ｂ２が「ゴシック体」である場合は（Ｓ３０２：ゴシック体）、ＣＰＵ１０は、文字認識のサンプルとしてゴシック体サンプル２０ｃ２を選択する（Ｓ３０４）。Ｓ３０２からＳ３０４の処理によって文字認識のサンプルを選択することで、文字画像に映る文字の判別の精度を高めることができる。なぜならば、同じ文字であっても「明朝体」と「ゴシック体」では線の太さや角度などの特徴が異なるが、既知の情報に基づいて各文字がどの書体で表されているかを考慮して文字の判別をできるからである。
【００３３】
Ｓ３０３またはＳ３０４の処理を実行した後、ＣＰＵ１０は文字種スコアテーブル３０ａ（図２（ｂ）参照）から、ｉ番目の文字に対応する文字種スコア３０ａ２を取得する（Ｓ３０５）。
【００３４】
次に、ＣＰＵ１０は、取得した文字種スコア３０ａ２が「−１０」より小さいか否かを判定する（Ｓ３０６）。文字種スコア３０ａ２が「−１０」より小さいと判定された場合（Ｓ３０６：Ｙｅｓ）、ＣＰＵ１０は、文字画像について、文字画像に映る文字をＳ３０３で選択された明朝体サンプル２０ｃ１またはＳ３０４の処理で選択されたゴシック体サンプル２０ｃ２（以下「選択サンプル」と称す）中の英字の候補の中から選択的に判別する（Ｓ３０７）。なおここで「選択的に判別」とは、文字画像に含まれる特徴と最も近い特徴を持つ文字を選択サンプル中から選出することを意味し、以降の説明においても同様である。
【００３５】
Ｓ３０６の処理において、文字種スコア３０ａ２が「−１０」以上と判定された場合（Ｓ３０６：Ｎｏ）、ＣＰＵ１０は、文字種スコア３０ａ２が「１０」より大きいか否かを判定する（Ｓ３０８）。文字種スコア３０ａ２が「１０」より大きいと判定された場合（Ｓ３０８：Ｙｅｓ）、ＣＰＵ１０は文字認識の選択サンプル中、文字画像に映る文字を数字の候補の中から選択的に判別する（Ｓ３０９）。
【００３６】
Ｓ３０８の判定において文字種スコア３０ａ２が「１０」以下であると判断される場合には（Ｓ３０８：Ｎｏ）、ＣＰＵ１０は文字認識の選択サンプル中の数字および英字の候補から、文字画像に映る文字を選択的に判別する（Ｓ３１０）。換言すれば、文字種スコア３０ａ２が「−１０」から「１０」の間にある場合、ｉ番目の文字が数字であるか英字であるかを予測し得ないものとして、数字と英字との両者を包括して文字を選択するのである。
【００３７】
なお、Ｓ３０７またはＳ３０９の処理によって文字の判別が行われた後、ＣＰＵ１０は文字の判別の成否を判定し（Ｓ３１１）、失敗であると判断した場合には（Ｓ３１１：Ｙｅｓ）、前述したＳ３１０の処理を実行する。ここでいう「失敗」とは、例えば、文字画像の特徴とサンプル中の文字の特徴の類似性として所定の閾値を満たすものが無いような場合をいい、本実施例では、いずれの文字かを判別できなかった場合（Ｓ３１１：Ｙｅｓ）に、判別する文字の候補を増やして再度の判別を行うことにより（Ｓ３１０）、文字の判別の失敗頻度を抑制している。
【００３８】
Ｓ３１１の判定によって文字の判別に成功したと判定された場合（Ｓ３１１：Ｎｏ）、または、Ｓ３１０の処理によって文字の判別が行われた場合に、ＣＰＵ１０は文字判別処理Ｓ３００を終了して、読取処理Ｓ２００の実行へと戻る。
【００３９】
ここで、図４の読取処理Ｓ２００の説明に戻る。ＣＰＵ１０は文字判別処理Ｓ３００の実行を終えた後、即ち、ｉ番目の文字の判別を完了した後、その判別した文字をＲＡＭ３０の読取結果３０ｂに追加保持させる（Ｓ２０６）。次に、ＣＰＵ１０は図６に示すスコア更新処理Ｓ４００を実行する。スコア更新処理Ｓ４００は、文字判別処理Ｓ３００による文字の判別結果に基づいてＲＡＭ３０の文字種スコアテーブル３０ａを更新する処理である。
【００４０】
図６に示す通り、ＣＰＵ１０はスコア更新処理Ｓ４００において、文字判別処理Ｓ３００で判別された文字が「数字」であるか否かを判定する（Ｓ４０１）。そして、該判別された文字が「数字」であると判定された場合（Ｓ４０１：Ｙｅｓ）、文字種スコアテーブル３０ａのｉ番目の文字の文字種スコア３０ａ２に「１」を加算して更新する（Ｓ４０３）。一方、判別された文字が「数字」でない、即ち、「英字」であると判定された場合（Ｓ４０１：Ｎｏ）、ＣＰＵ１０は、文字種スコアテーブル３０ａのｉ番目の文字種スコア３０ａ２から「１」を減算して更新する（Ｓ４０３）。このようにして、スコア更新処理Ｓ４００が実行されることにより、文字種スコアテーブル３０ａには各位置の文字が数字であるか（正の値）、英字であるか（負の値）を予測し得るスコア（得点）を保持させることができる。ＣＰＵ１０はＳ４０２またはＳ４０３の処理を実行した後、スコア更新処理Ｓ４００を終了して、読取処理Ｓ２００の実行へと戻る。
【００４１】
図４に戻って読取処理Ｓ２００の説明をする。ＣＰＵ１０は前述したスコア更新処理Ｓ４００を実行した後、変数ｉを「１」を加算して更新した後（Ｓ２０８）、Ｓ２０５に戻って処理を繰り返す。即ち、ＣＰＵ１０は読取処理Ｓ２００において、ｉ番目の文字として抽出された文字画像が存在しなくなるまで（Ｓ２０５：Ｎｏ）、Ｓ２０４からＳ２０７の処理を反復実行する。この反復実行により、文字画像として抽出された各画像に映る文字が順にＲＡＭ３０の読取結果３０ｂに追加保持されるので、ＣＰＵ１０が読取処理Ｓ２００を終了する際には、帳票９０に記載された一連の文字がデータとして読取結果３０ｂに保持されるようにできる。
【００４２】
ＣＰＵ１０は読取処理Ｓ２００を終了すると、連続読取処理Ｓ１００（図３）の実行に戻る。前述した通り、連続読取処理Ｓ１００においてＣＰＵ１０は、読取処理Ｓ２００の実行によって読取結果３０ｂに保持された文字をディスプレイ５３に表示させることで（Ｓ１０３）、作業者に帳票９０から読み取られた一連の文字の内容を提示する。
【００４３】
ここまで図３から図６を参照して、読取プログラム２０ａに基づいてＣＰＵ１０が実行する処理を説明した。本実施例の読取プログラム２０ａは、前述した通り、連続読取処理Ｓ１００によって複数の帳票９０から連続的に文字を読み取るように構成されている。そして、実際に文字の判別を行う文字判別処理Ｓ３００で利用される文字種スコアテーブル３０ａは、１枚の帳票９０から文字を読み取るにつれ、スコア更新処理Ｓ４００によって逐次更新されるものである。即ち、反復して帳票９０から文字を読み取ることで、文字種スコアテーブル３０ａの内容は、文字の位置ごとに数字または英字のいずれであるかを予測しうる値としての精度を高めることができる。文字の位置ごとに数字または英字であるかを精度よく予測することで、相当回数反復して処理した後の文字の誤読（実際に帳票９０に記載された文字と異なる文字として判別されること）を抑制することができる。
【００４４】
また、文字判別処理Ｓ３００においては、文字種スコアテーブル３０ａに基づいて文字の種類を予測して、候補を限定して文字の判別を行っているので（図５：Ｓ３０６〜Ｓ３０９）、文字画像とサンプルとの特徴の比較に係る処理コストを軽減することができる。これは、予測した文字種に含まれない文字（例えば「数字」と予測した場合の「英字」）については、文字画像と特徴が近似しているかを比較せずに済むためである。これにより、読取プログラム２０ａによる文字認識の高速化を図ることができる。
【００４５】
また、本実施例で採用した文字種スコアテーブル３０ａは、文字の位置３０ａ１と、その位置の文字についての文字種スコア３０ａ２という値で構成され、文字種スコア３０ａ２は単純な加減算のみで更新されるように構成しているため、統計値などの複雑な計算を要する手法に比べて、読取プログラム２０ａを比較的容易に実装することができる。即ち、画素の分布を分析するなどして文字の判別精度を高める種々の手法に比べて、安価なコストで精度の高い文字認識プログラムを実装できる。
【００４６】
以上、読取プログラム２０ａの実施例に基づいて、本発明の文字認識プログラムを説明したが、本発明の趣旨を逸脱しない範囲において、種々の変更ができることは言うまでもない。例えば、文字種スコアテーブル３０ａは逐次更新されるものであることを説明したが、既知の情報に基づいて読取プログラム２０ａの実装者等が予め文字種スコア３０ａ２の値を設定するものであってもよい。
【００４７】
また、本実施例では、文字の種類としては数字か英字のいずれかであることを前提として説明したが、例えば数字・英字・ひらがなの３種類から判別することも可能である。この場合の実装例としては、文字種スコアテーブル３０ａの文字種スコア３０ａ２を文字の種類を示す３次元ベクトルとして定義することが上げられる。各次元を数字、英字、ひらがなに割り当て、判別した文字の種類に対応する次元方向には伸長し、他の次元を短縮する。これにより、ベクトルの大きさと向きに基づいて、文字の種類を予測し得る。
【００４８】
なお、読取プログラム２０ａによる文字の判別結果としてディスプレイ５３に表示された文字列が誤りである場合に、それに気づいた作業者等がキーボード等の入力装置を用いて正しい文字列をＣＰＵ１０に入力するように構成することも当然可能である。この場合、該入力された正しい文字列に基づいて文字種スコアテーブル３０ａを更新することで、以降の誤読を一層抑制できる。文字には数字の「０」（ゼロ）と英字の「Ｏ」（オー）のように一見すると同じと見えるものも存在するが、当初の数回の読取のうちに人間である作業者が訂正情報を入力することによって、後にはこのような類似した文字間における誤読をも抑制することができる。
【符号の説明】
【００４９】
１        コンピュータ
１０      ＣＰＵ
２０      ＲＯＭ
２０ａ    読取プログラム（文字認識プログラム）
２０ｂ    書体定義テーブル
３０      ＲＡＭ
３０ａ    文字種スコアテーブル
５１      カメラ
９０      帳票
Ｓ１００  連続読取処理
Ｓ２００  読取処理
Ｓ３００  文字判別処理
Ｓ４００  スコア更新処理
【図１】
2019101512.tif 000003
【図２】
2019101512.tif 000004
【図３】
2019101512.tif 000005
【図４】
2019101512.tif 000006
【図５】
2019101512.tif 000007
【図６】
2019101512.tif 000008