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

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

▶ キヤノン株式会社の特許一覧

特許7401202画像処理装置、その制御方法、及びプログラム
<>
  • 特許-画像処理装置、その制御方法、及びプログラム 図1
  • 特許-画像処理装置、その制御方法、及びプログラム 図2
  • 特許-画像処理装置、その制御方法、及びプログラム 図3
  • 特許-画像処理装置、その制御方法、及びプログラム 図4
  • 特許-画像処理装置、その制御方法、及びプログラム 図5
  • 特許-画像処理装置、その制御方法、及びプログラム 図6
  • 特許-画像処理装置、その制御方法、及びプログラム 図7
  • 特許-画像処理装置、その制御方法、及びプログラム 図8
  • 特許-画像処理装置、その制御方法、及びプログラム 図9
  • 特許-画像処理装置、その制御方法、及びプログラム 図10
  • 特許-画像処理装置、その制御方法、及びプログラム 図11
  • 特許-画像処理装置、その制御方法、及びプログラム 図12
  • 特許-画像処理装置、その制御方法、及びプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-11
(45)【発行日】2023-12-19
(54)【発明の名称】画像処理装置、その制御方法、及びプログラム
(51)【国際特許分類】
   G06V 30/12 20220101AFI20231212BHJP
   G06V 30/26 20220101ALI20231212BHJP
   G06V 30/412 20220101ALI20231212BHJP
【FI】
G06V30/12 Z
G06V30/264
G06V30/266
G06V30/412
【請求項の数】 10
(21)【出願番号】P 2019112063
(22)【出願日】2019-06-17
(65)【公開番号】P2020204886
(43)【公開日】2020-12-24
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100125254
【弁理士】
【氏名又は名称】別役 重尚
(72)【発明者】
【氏名】榎本 誠
【審査官】宮島 潤
(56)【参考文献】
【文献】特開2018-81451(JP,A)
【文献】特開平9-62794(JP,A)
【文献】特開平11-207266(JP,A)
【文献】特開2015-170129(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06V 30/00 - 30/12
G06V 30/226 - 30/32
G06V 30/42 - 30/424
G06V 30/14 - 30/168
G06V 30/224
G06V 30/40 - 30/416
(57)【特許請求の範囲】
【請求項1】
画像を文字認識して得られた文字認識結果の文字列から日付文字列を抽出する画像処理装置であって、
前記文字認識結果の文字列において、日付における月の名称を表す英単語を構成する文字、または、日付における月の略称を表す英単語を構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換手段と、
前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、日付文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換手段と、
前記特定の文字コードと前記限定文字種とを用いて前記日付文字列に対応するパターンを定義した正規表現式を用いて前記第1の置換手段および前記第2の置換手段で置換した後の文字列から、前記日付文字列を抽出する抽出手段とを備えることを特徴とする画像処理装置。
【請求項2】
前記日付文字列に含まれることが想定される限定文字種とは、「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」、「/」、「-」、「.」、「年」、「月」、「日」であることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
画像を文字認識して得られた文字認識結果の文字列から金額文字列を抽出する画像処理装置であって、
前記文字認識結果の文字列において、通貨コードを構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換手段と、
前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、金額文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換手段と、
前記特定の文字コードと前記限定文字種とを用いて前記金額文字列に対応するパターンを定義した正規表現式を用いて、前記第1の置換手段および前記第2の置換手段で置換した後の文字列から、前記金額文字列を抽出する抽出手段とを備えることを特徴とする画像処理装置。
【請求項4】
前記金額文字列に含まれることが想定される限定文字種とは、「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」、「¥」、「$」、「.」、「,」を含むことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記通貨コードは、「JPY」、「USD」、「EUR」を含むことを特徴とする請求項3に記載の画像処理装置。
【請求項6】
前記特定の文字コードは、「@」であることを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
【請求項7】
画像を文字認識して得られた文字認識結果の文字列から日付文字列を抽出する画像処理装置の制御方法であって、
前記文字認識結果の文字列において、日付における月の名称を表す英単語を構成する文字、または、日付における月の略称を表す英単語を構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換ステップと、
前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、日付文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換ステップと、
前記特定の文字コードと前記限定文字種とを用いて前記日付文字列に対応するパターンを定義した正規表現式を用いて前記第1の置換ステップおよび前記第2の置換ステップで置換した後の文字列から、前記日付文字列を抽出する抽出ステップとを有することを特徴とする画像処理装置の制御方法。
【請求項8】
画像を文字認識して得られた文字認識結果の文字列から金額文字列を抽出する画像処理装置の制御方法であって、
前記文字認識結果の文字列において、通貨コードを構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換ステップと、
前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、金額文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換ステップと、
前記特定の文字コードと前記限定文字種とを用いて前記金額文字列に対応するパターンを定義した正規表現式を用いて、前記第1の置換ステップおよび前記第2の置換ステップで置換した後の文字列から、前記金額文字列を抽出する抽出ステップとを有することを特徴とする画像処理装置の制御方法。
【請求項9】
画像を文字認識して得られた文字認識結果の文字列から日付文字列を抽出する画像処理装置の制御方法をコンピュータに実行させるプログラムであって、
前記画像処理装置の制御方法は、
前記文字認識結果の文字列において、日付における月の名称を表す英単語を構成する文字、または、日付における月の略称を表す英単語を構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換ステップと、
前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、日付文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換ステップと、
前記特定の文字コードと前記限定文字種とを用いて前記日付文字列に対応するパターンを定義した正規表現式を用いて前記第1の置換ステップおよび前記第2の置換ステップで置換した後の文字列から、前記日付文字列を抽出する抽出ステップとを有することを特徴とするプログラム。
【請求項10】
画像を文字認識して得られた文字認識結果の文字列から金額文字列を抽出する画像処理装置の制御方法をコンピュータに実行させるプログラムであって、
前記画像処理装置の制御方法は、
前記文字認識結果の文字列において、通貨コードを構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換ステップと、
前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、金額文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換ステップと、
前記特定の文字コードと前記限定文字種とを用いて前記金額文字列に対応するパターンを定義した正規表現式を用いて、前記第1の置換ステップおよび前記第2の置換ステップで置換した後の文字列から、前記金額文字列を抽出する抽出ステップとを有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【0002】
スキャナが読み込んだ帳票の画像におけるレイアウトの特徴と予め定義された特定の帳票に関する情報とに基づいてスキャナが読み込んだ帳票の種別を特定し、画像内の所定の位置の文字列を認識する画像処理装置が知られている。画像処理装置は、正規表現等のパターンマッチングを利用することで、文字認識結果の中から日付や金額等の数字で構成された特定の文字列を抽出する。しかし、文字認識結果の中には、画像処理装置が誤認識した情報が含まれることがあるため、このような文字認識結果の中から特定の文字列を正確に抽出することができない。これに対し、例えば、「年」、「月」、「日」といったキーワードを含む文字列領域を画像から特定し、当該文字列領域に対して数字に限定した文字認識を行って日付文字列を高精度に抽出する(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2015-118488号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述した特許文献1の技術では、抽出対象文字列が、限定された文字種である数字のみで構成されていることが前提である。このため、従来では、数字以外の文字で構成される特定の単語、例えば、月の名称が「January」といった英単語を含む日付文字列を抽出することができない。
【0005】
本発明の目的は、限定された文字種以外の文字で構成される特定の単語を含む抽出対象文字列を抽出することができる画像処理装置、その制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明の画像処理装置は、画像を文字認識して得られた文字認識結果の文字列から日付文字列を抽出する画像処理装置であって、前記文字認識結果の文字列において、日付における月の名称を表す英単語を構成する文字、または、日付における月の略称を表す英単語を構成する文字を、通常の文字認識結果として出力されない特定の文字コードに置き換える第1の置換手段と、前記文字認識結果の文字列において、前記特定の文字コードに置き換えられる文字以外の文字についての前記文字認識結果の第一候補が、日付文字列に含まれることが想定される限定文字種でない場合は、前記文字認識結果の第一候補を、当該文字についての前記文字認識結果の第二候補以下の文字のうちの前記限定文字種に対応する文字に置き換える第2の置換手段と、前記特定の文字コードと前記限定文字種とを用いて前記日付文字列に対応するパターンを定義した正規表現式を用いて前記第1の置換手段および前記第2の置換手段で置換した後の文字列から、前記日付文字列を抽出する抽出手段とを備えることを特徴とする。
【発明の効果】
【0007】
本発明によれば、限定された文字種以外の文字で構成される特定の単語を含む抽出対象文字列を抽出することができる。
【図面の簡単な説明】
【0008】
図1】本発明の実施の形態に係る画像処理装置を含む画像処理システムのネットワーク構成を概略的に示すネットワーク図である。
図2図1の画像処理装置によって実行される文字列抽出処理の手順を示すフローチャートである。
図3図1の複写機が生成するスキャン画像の一例を示す図である。
図4図2のステップS203の項目抽出処理の手順を示すフローチャートである。
図5図4の項目抽出処理にて用いられる文字列情報の一例を示す図である。
図6図1の画像処理装置が用いる抽出タイプ定義情報の一例を示す図である。
図7図1の画像処理装置が用いる変換テーブルの一例を示す図である。
図8図1の画像処理装置が用いる文字列情報の一例を示す図である。
図9図1の画像処理装置が用いる各種情報の一例を示す図である。
図10図1の画像処理装置が用いる文字列情報の一例を示す図である。
図11図1の画像処理装置が用いる各種情報の一例を示す図である。
図12図4の項目抽出処理の変形例の手順を示すフローチャートである。
図13図1の画像処理装置が用いる変換テーブルの一例を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【0010】
図1は、本発明の実施の形態に係る画像処理装置105を含む画像処理システム100のネットワーク構成を概略的に示すネットワーク図である。図1において、画像処理システム100は、複写機101及び画像処理装置105を備える。複写機101は、スキャナ102、プリンタ103、及び通信部104を備える。スキャナ102は、配置された原稿をスキャンしてスキャン画像を生成する。プリンタ103は、スキャナ102が生成したスキャン画像等を用紙に印刷する。通信部104は、ネットワーク(不図示)を介して画像処理装置105等の外部装置とのデータ通信の制御を行う。通信部104は、例えば、スキャナ102が生成したスキャン画像を画像処理装置105へ送信する。
【0011】
画像処理装置105は、CPU106、ROM107、RAM108、HDD109、表示部110、入力部111、及び通信部112を備える。CPU106、ROM107、RAM108、HDD109、表示部110、入力部111、及び通信部112は、バス113を介して互いに接続されている。
【0012】
画像処理装置105は、複写機101から受信したスキャン画像に対して画像処理を施す。例えば、画像処理装置105は、後述する図2の文字列抽出処理を実行して、上記スキャン画像から抽出対象文字列として日付文字列、金額文字列、電話番号文字列を抽出する。日付文字列は、日付を示す数字や区切り文字等で構成される文字列である。金額文字列は、金額を示す数字や通貨記号等で構成される文字列である。電話番号文字列は、電話番号を示す数字や区切り文字等で構成される文字列である。CPU106は、ROM107に格納されたプログラムを実行することで、各種処理を実行する。ROM107は、CPU106が実行するプログラム等を格納する。RAM108は、CPU106の作業領域として、また、各データの一時記憶領域として用いられる。HDD109は、データやプログラム等を格納する。表示部110は、各種情報を表示する。入力部111は、例えば、キーボードやマウスであり、各種指示に関するユーザ操作を受け付ける。なお、表示部110及び入力部111は、タッチパネルのように一体型の構成であっても良い。また、表示部110は、プロジェクタによって画像を投影する構成であっても良く、入力部111は、投影された画像を指し示すユーザの指先の位置をカメラで認識する構成であっても良い。通信部112は、ネットワークを介して複写機101等の外部装置とデータ通信を行う。
【0013】
図2は、図1の画像処理装置105によって実行される文字列抽出処理の手順を示すフローチャートである。図2の処理は、CPU106がROM107又はHDD109に格納されたプログラムを実行することによって行われる。図2の処理は、画像処理装置105がスキャン画像を取得した際に実行される。本実施の形態では、一例として、画像処理装置105が、スキャナ102によって生成された図3のスキャン画像301を複写機101から取得したこととする。スキャン画像301は、レシートをスキャンして得られた画像である。スキャン画像301には、複数の文字列、例えば、日付文字列302、金額文字列303、電話番号文字列304が含まれる。
【0014】
図2において、CPU106は、スキャン画像301を取得すると(ステップS201)、スキャン画像301に対して文字認識処理を行う(ステップS202)。文字認識処理では、CPU106が、スキャン画像301から文字を含む文字領域を特定し、各文字領域の特徴量を算出し、算出した特徴量と予め登録された文字認識辞書とを比較して類似する1つ以上の文字候補を特定する。本実施の形態では、行単位にまとまった複数の文字の文字候補群を文字列情報と定義する。複数の文字候補を持つ文字において、予め定められたルールに基づいて文字候補の順位が決定される。CPU106は、ステップS202にて得られた各行に対応する複数の文字列情報をRAM108に格納する。次いで、CPU106は、図4の項目抽出処理を実行する(ステップS203)。
【0015】
図4は、図2のステップS203の項目抽出処理の手順を示すフローチャートである。図4において、CPU106は、RAM108に格納された複数の文字列情報の中から1つの文字列情報を取得する(ステップS401)。本実施の形態では、一例として、ステップS401において、CPU106が、スキャン画像301における日付文字列302を含む文字列領域500(図5(a))の文字列情報501(図5(b))を取得したこととする。
【0016】
次いで、CPU106は、抽出タイプ定義情報を取得する(ステップS402)。本実施の形態では、複数の抽出タイプ定義情報、例えば、図6(a)の日付タイプ定義情報601、図6(b)の金額タイプ定義情報605、図6(c)の電話番号タイプ定義情報609がROM107又はHDD109に予め格納されている。ステップS401では、CPU106は、複数の抽出タイプ定義情報の中から1つの抽出タイプ定義情報を取得する。本実施の形態では、一例として、ステップS402において、CPU106が上述した複数の抽出タイプ定義情報の中から日付タイプ定義情報601を取得したこととする。
【0017】
日付タイプ定義情報601は、スキャン画像から日付文字列を抽出する際に使用される。日付タイプ定義情報601は、優先文字情報602、優先単語情報603、及び正規表現式604で構成される。優先文字情報602には、日付文字列に含まれることが想定される文字が定義されている。例えば、優先文字情報602には、「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」、「/」、「-」、「.」、「年」、「月」、「日」といった限定文字種と後述する置き換え文字である「@」が定義されている。
【0018】
優先単語情報603には、後述する置き換え文字への置き換え対象となる特定の単語が定義されている。優先単語情報603には、特定の単語として、例えば、1月から12月までの月の名称を表す英単語や、それらの略称を表す英単語が定義されている。月の名称を表す英単語は、「JANUARY」、「FEBRUARY」、「MARCH」、「APRIL」、「MAY」、「JUNE」、「JULY」、「AUGUST」、「SEPTEMBER」、「OCTOBER」、「NOVEMBER」、「DECEMBER」である。月の略称を表す英単語は、「JAN」、「FEB」、「MAR」、「APR」、「MAY」、「JUN」、「JUL」、「AUG」、「SEP」、「OCT」、「NOV」、「DEC」である。正規表現式604には、スキャン画像から日付文字列を抽出するための1つ以上の正規表現式が定義されている。本実施の形態では、6つの正規表現式が正規表現式604に定義されている。
【0019】
金額タイプ定義情報605は、スキャン画像から金額文字列を抽出する際に使用される。金額タイプ定義情報605は、優先文字情報606、優先単語情報607、及び正規表現式608で構成される。優先文字情報606には、金額文字列に含まれることが想定される文字が定義されている。例えば、優先文字情報606には、「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」、「¥」、「$」、「.」、「,」、「¥」といった限定文字種と後述する置き換え文字である「@」が定義されている。
【0020】
優先単語情報607には、後述する置き換え文字への置き換え対象となる特定の単語が定義されている。優先単語情報607には、特定の単語として、例えば、「JPY」、「USD」、「EUR」といった通貨記号が定義されている。正規表現式608には、スキャン画像から金額文字列を抽出するための1つ以上の正規表現式が定義されている。電話番号タイプ定義情報609は、スキャン画像から電話番号文字列を抽出する際に使用される。電話番号タイプ定義情報609は、スキャン画像から電話番号文字列を抽出する際に用いられる優先文字情報、優先単語情報、及び正規表現式で構成される。
【0021】
次いで、CPU106は、ステップS401にて取得した文字列情報501から、ステップS402にて取得した日付タイプ定義情報601の優先単語情報603に定義された特定の単語を検索する(ステップS403)。ステップS403では、CPU106は、文字列情報501における各文字の第一候補を連結した文字列から、優先単語情報603に定義された特定の単語を検索する。なお、以下では、文字列情報における各文字の第一候補を連結した文字列を「文字列情報の文字列」と称する。文字列情報501には、スキャン画像301に含まれる文字と異なる誤った文字認識結果が含まれている可能性があるため、CPU106は、完全一致ではなく曖昧検索を用いて一定の類似文字列を検索する。曖昧検索として、例えば、DPマッチングが用いられる。文字列情報501の「DATE; 2O.Oct,20l8 15:3O」の例では、10文字目から12文字目までの部分文字列が優先単語情報603に定義された「OCT」と完全一致するという結果が得られる。なお、本実施の形態では、アルファベットの大文字、小文字を区別することなく検索可能であることとする。例えば、「JAN」、「Jan」、「jan」の何れであっても、「JAN」と完全一致するという結果が得られる。CPU106は、検索結果をRAM108に格納する。
【0022】
次いで、CPU106は、ステップS401にて取得した文字列情報501において、上記特定の単語と一致した部分文字列を置き換え文字、具体的に、特定の文字コードの「@」に置き換える(ステップS404)。ステップS404において、CPU106は、上記特定の単語と一致した部分文字列を構成する文字の第一候補及び第二候補の順位を繰り下げ、当該文字の新たな第一候補として「@」を設定する(例えば、図5(c)の文字列情報502を参照。)。ステップS404の処理済みの文字列情報502は、RAM108に格納される。なお、本実施の形態では、置き換え文字を「@」としているが、これ以外の文字コードでも良く、通常の文字認識結果として出力されない特殊な文字であれば良い。また、特定の単語と一致した部分文字列を置き換え文字に置き換えずに、上記部分文字列に対して後述するステップS405の処理を実施しないことを示す情報をRAM108に格納しても良い。
【0023】
次いで、CPU106は、ステップS404の処理済みの文字列情報502の中の複数の文字候補を持つ文字に対し、優先文字情報602の昇格処理を行う(ステップS405)。ここで、優先文字情報602には、日付文字列に含まれることが想定される文字が定義されている。具体的に、優先文字情報602には、「0」~「9」までの数字や「年」、「月」、「日」、また、「/」、「-」、「.」といった区切り文字、さらに置き換え文字である「@」が定義されている。ステップS405において、CPU106は、文字列情報における各文字の第一候補が優先文字情報602に定義された限定文字種以外であれば、第二候補以下を順に走査し、第二候補以下における優先文字情報602の限定文字種と同じ文字を第一候補に昇格させる。例えば、文字列情報502における複数の文字候補を持つ文字のうち、第一候補が優先文字情報602の限定文字種と異なる文字502a~502cが、図5(d)の文字列情報503のように、当該限定文字種と同じ文字種の第二候補の文字に置き換わる。CPU106は、RAM108に格納された文字列情報502を文字列情報503に更新する。このようにして本実施の形態では、文字列情報501の文字列のうち、優先単語情報603に定義された特定の単語を構成する文字が「@」に置き換えられ、上記特定の単語を構成する文字以外の文字が優先文字情報602の限定文字種に基づいて変換される。
【0024】
次いで、CPU106は、文字列情報503に対し、正規表現式604を用いて正規表現検索を行う(ステップS406)。本実施の形態では、正規表現式604に、例えば、「¥d{1,2}[/-¥.]¥d{1,2}[/-¥.]¥d{2,4}」が定義されている。この正規表現式を用いると、1~2桁の数字、区切り文字である「/」、「-」、「.」の何れか、1~2桁の数字、区切り文字である「/」、「-」、「.」の何れか、2~4桁の数字がこの順に配列する文字列が抽出される。このパターンは、日、月、年の順で表される日付文字列に対応している。また、正規表現式604には、英語の月名に対応する正規表現式として、「¥d{1,2}[/-¥.]@{3,9}[/-¥.]¥d{2,4}」が定義されている。月に相当する箇所が、優先単語情報603に定義された特定の単語を置き換えた3~9文字の「@」で表される文字列パターンとして定義されている。また、正規表現式604には、年月日の順序だけでなく、日月年、月日年の順序に対応する正規表現式も定義されている。なお、本実施の形態では、正規表現式604に定義された正規表現式を1つずつ用いて正規表現検索を行うこととしたが、全ての正規表現式をOR等の表現で1つにまとめた正規表現式を用いて正規表現検索を行っても良い。ステップS406では、CPU106は、「¥d{1,2}[/-¥.]@{3,9}[/-¥.]¥d{2,4}」を用いることで、文字列情報503における「20.@@@.2018」を抽出対象文字列として抽出する。CPU106は、抽出対象文字列をRAM108に格納する。
【0025】
次いで、CPU106は、未処理の抽出対象文字列が残っているか否かを判別する(ステップS407)。ステップS407の判別の結果、未処理の抽出対象文字列が残っていないとき、CPU106は、項目抽出処理を終了し、ステップS204の処理を行う。ステップS407の判別の結果、未処理の抽出対象文字列が残っているとき、CPU106は、RAM108から一つの抽出対象文字列を取得する(ステップS408)。例えば、CPU106は、抽出対象文字列として「20.@@@.2018」を取得する。次いで、CPU106は、抽出対象文字列における置き換え文字を元に戻す処理を行う(ステップS409)。具体的に、CPU106は、文字列情報503の第一候補から「@」を削除し、第一候補から「@」が削除された文字の第二候補以降をそれぞれ繰り上げる。これにより、第一候補の文字列が「0ATE; 20.Oct.2018 15:30」となる図6(e)の文字列情報504が得られる。CPU106は、文字列情報504に含まれる文字列であって「@」が削除された文字の新たな第一候補からなる部分文字列である「Oct」を用いて、抽出対象文字列を「20.@@@.2018」から「20.Oct.2018」に変換する。
【0026】
次いで、CPU106は、変換済みの抽出対象文字列を検証する(ステップS410)。ステップS410では、CPU106は、例えば、変換済みの抽出対象文字列が実在する日付であるか否かを判別する。なお、本実施の形態では、この方法に限らず、例えば、現在時刻を取得してそれより未来の日付であるか否かを判別しても良く、また、変換済みの抽出対象文字列が外部から指定された日付の範囲に収まっているか否かを判別しても良い。
【0027】
次いで、CPU106は、ステップS410の検証結果に基づいて変換済みの抽出対象文字列が正当であるか否かを判別する(ステップS411)。ステップS411では、例えば、変換済みの抽出対象文字列が実在する日付である場合、CPU106は、変換済みの抽出対象文字列が正当であると判別する。一方、変換済みの抽出対象文字列が実在しない日付である場合、CPU106は、変換済みの抽出対象文字列が不正であると判別する。
【0028】
ステップS411の判別の結果、変換済みの抽出対象文字列が不正であるとき、CPU106は、ステップS407の処理に戻る。ステップS411の判別の結果、変換済みの抽出対象文字列が正当であるとき、CPU106は、抽出対象文字列の確からしさを示す尤度を算出する(ステップS412)。ステップS412において、例えば、ステップS410にて実在する日付であると判別された抽出対象文字列を含む文字列情報は、100点となる。尤度は、文字認識結果のスコア等を用いて算出される。なお、本実施の形態では、日付に関する尤度は、年と月と日の間の区切り文字の種類に応じて異なる得点が設定されても良い。例えば、「年」と「月」の間と「月」と「日」の間とが「/」等の同じ区切り文字である場合には高い尤度となり、「年」と「月」の間が「/」、「月」と「日」の間が「-」等の異なる区切り文字である場合には低い尤度となる。
【0029】
次いで、CPU106は、変換済みの抽出対象文字列と尤度とを項目抽出結果としてRAM108に格納し(ステップS413)、ステップS407の処理に戻る。CPU106は、RAM108に格納された全ての文字列情報に対し、上述した項目抽出処理を実行する。また、CPU106は、ROM107又はHDD109に格納された全ての抽出タイプ定義情報を用いて上述した項目抽出処理を実行する。このようにして、本実施の形態では、スキャン画像301の文字認識結果として得られた全ての文字列情報に対し、各抽出タイプ定義情報に対応する抽出対象文字列が抽出される。
【0030】
図2に戻り、CPU106は、RAM108から抽出タイプ毎に項目抽出結果を取得し、尤度が最も高い項目抽出結果を選択する(ステップS204)。次いで、CPU106は、S204で選択した項目抽出結果を出力し(ステップS205)、本処理を終了する。
【0031】
上述した実施形態によれば、文字列情報501の文字列のうち、優先単語情報603に定義された特定の単語を構成する文字が「@」に置き換えられ、特定の単語を構成する文字以外の文字が優先文字情報602の限定文字種に基づいて変換される。「@」を含む文字列を検索可能な正規表現式604を用いて、変換済みの文字列情報の文字列から抽出対象文字列が抽出される。これにより、限定文字種以外の文字で構成される特定の単語を含む抽出対象文字列を抽出することができる。
【0032】
また、上述した実施形態では、文字列情報501の文字列のうち、特定の単語を構成する文字以外の文字について限定文字種に限定して文字候補の順位が入れ替わる。これにより、文字毎に1つ以上の文字候補を含む文字認識結果を取得する画像処理装置105において、限定文字種以外の文字で構成される特定の単語を含む抽出対象文字列を抽出することができる。
【0033】
上述した実施の形態では、特定の単語は、日付における月の名称を表す英単語又は日付における月の略称を表す英単語である。これにより、月の名称や月の略称を含む抽出対象文字列を抽出することができる。
【0034】
上述した実施の形態では、特定の単語は、通貨記号である。これにより、通貨記号を含む抽出対象文字列を抽出することができる。
【0035】
以上、本発明について、上述した実施の形態を用いて説明したが、本発明は上述した実施の形態に限定されるものではない。例えば、画像処理装置105が、複合機101の各機能を備え、画像処理装置105のスキャナが生成したスキャン画像を用いて、図2の文字列抽出処理を行っても良い。
【0036】
上述した実施の形態では、各行の文字列情報に対し、ステップS203の項目抽出処理を行う場合について説明したが、全ての文字列情報を連結してステップS203の項目抽出処理を行っても良い。
【0037】
また、上述した実施の形態では、図7の変換テーブル701を用いて文字を変換しても良い。例えば、各文字に対して下位の文字認識結果が存在せず、第一候補のみで構成される図8(a)の文字列情報801に対し、ステップS405の昇格処理を行っても、誤認識された文字を補正すべき文字に置き換えることができない。これに対し、本実施の形態では、補正すべき文字を図7の変換テーブル701を用いて変換する。変換テーブル701(誤認識補正情報)には、文字認識における誤認識の補正に関する情報、具体的に、文字認識において想定される複数の誤認識パターン(変換元文字)と当該誤認識パターンを補正すべき文字(変換先文字)とが定義されている。ステップS405において、CPU106は、変換テーブル701を用いて文字を変換する。例えば、CPU106は、変換テーブル701を用いて、ステップS404の処理済みの図8(b)の文字列情報802における「O」を、図8(c)の文字列情報803のように「0」に変換し、「I」を「1」に変換する。このように文字の変換に変換テーブル701を用いることで、文字列情報の下位候補に数字が存在しない場合や、文字列情報から下位候補が得られない場合にも、限定文字種以外の文字で構成される特定の単語を含む抽出対象文字列を抽出することができる。
【0038】
また、上述した実施の形態では、図9(a)の変換テーブル901を用いて区切り文字を1種の文字に統一しても良い。変換テーブル901には、変換テーブル701の項目の他に、区切り文字である「.」や「-」を「/」に変換する項目が追加されている。ステップS405において、CPU106は、例えば、ステップS404の処理済みの文字列情報802における「O」を「0」に変換し、「I」を「1」に変換する。さらに、CPU106は、図10の文字列情報1001のように、「.」を「/」に変換する。このように区切り文字を1種の文字に統一することで、正規表現式604より区切り文字に関する条件式が簡略化された図9(b)の正規表現式902を用いてステップS406の正規表現検索を実施可能となる。その結果、正規表現式604を用いる場合より、正規表現検索に関する処理の負荷を軽減することができる。
【0039】
上述した実施の形態では、ステップS411の判別の結果、変換済みの抽出対象文字列が不正である場合、当該抽出対象文字列の不正箇所を変換しても良い。例えば、図11(a)の文字列画像1101を文字認識した際に、図11(b)の文字列情報1102のように、「00/10/20」と「18:30」との間の空白が空白文字として認識されず、「00/10/2018:30」のように誤認識されることがある。このような文字列情報1102に対して、CPU106が、ステップS406の正規表現検索を実行すると、本来得たい「00/10/20」ではなく「00/10/2018」が抽出対象文字列として抽出される。この値は、2018年10月0日、又は2018年0月10日を示すため、ステップS410、S411の処理において、不正な日付であると判別されてしまう。これに対し、本実施の形態では、ステップS411の判別の結果、変換済みの抽出対象文字列が不正である場合、当該抽出対象文字列の不正箇所が変換される。
【0040】
図12は、図4の項目抽出処理の変形例の手順を示すフローチャートである。図12において、CPU106は、ステップS401~S411の処理を行う。ステップS411の判別の結果、変換済みの抽出対象文字列が正当であるとき、CPU106は、ステップS412以降の処理を行う。ステップS411の判別の結果、変換済みの抽出対象文字列が不正であるとき、CPU106は、文字列画像1101から得られた図11(c)の文字間距離情報1103を読み出す。CPU106は、文字間距離情報1103に設定されている各文字における右隣りの文字までの距離を取得する。CPU106は、一定以上の距離が空いている場合に、抽出対象文字列の分断処理を行う。例えば、CPU106は、文字列画像1101に含まれる文字の平均的な高さの半分に相当する長さを閾値とし、上記距離がこの閾値以上である場合に一定以上の距離であると判別する。例えば、上記閾値を「20」とした場合に、CPU106は、文字間距離情報1103に基づいて8文字目の「0」の右隣りの文字までの距離が上記閾値を超えたと判別し、抽出箇所の不正箇所を変換する(ステップS1201)。ステップS1201では、CPU106は、抽出対象文字列を、不正箇所を分断した文字列である「00/10/20」に変換する。
【0041】
次いで、CPU106は、抽出対象文字列が更新されたか否かを判別する(ステップS1202)。ステップS1202の判別の結果、抽出対象文字列が更新されないとき、CPU106は、ステップS407の処理を行う。ステップS1202の判別の結果、抽出対象文字列が更新されたとき、CPU106は、ステップS410の処理を行う。更新された抽出対象文字列は、「00年10月20日」を示す「00/10/20」であるので、ステップS410において、CPU106は、上記抽出対象文字列が正当な日付であると判別し、ステップS412の処理を行う。
【0042】
上述した実施の形態では、抽出対象文字列が不正である場合、当該抽出対象文字列の不正箇所が変換される。これにより、文字間スペースが正確に文字認識されないことに起因する抽出対象文字列の抽出精度の低下を抑制することができる。
【0043】
上述した実施の形態では、ステップS411の判別の結果、変換済みの抽出対象文字列が不正である場合、図13の変換テーブル1301を用いて不正箇所である文字を変換しても良い。変換テーブル1301には、変換テーブル901の項目の他に、文字認識において想定される誤認識パターンである「8」を「0」へ変換する項目が追加されている。「8」は優先文字情報903に含まれるため、図12の項目抽出処理において、CPU106は、ステップS405にて「8」を変換しない。ステップS411の判別の結果、変換済みの抽出対象文字列が不正である場合、CPU106は、変換テーブル1301を用いて、文字列情報における「8」を「0」に変換する。例えば、「0」を「8」に誤認識した認識結果である文字列情報「2017年81月15日」は、不正な日付であるため、CPU106は、ステップS1201にて「8」を「0」に変換し、抽出対象文字列を「2017年01月15日」に更新する。この値は正当な日付であるため、ステップS413にて項目抽出結果としてRAM108に格納される。
【0044】
上述した実施の形態では、抽出対象文字列が不正である場合、変換テーブル1301を用いて不正箇所である文字が変換される。これにより、優先文字情報903に含まれる文字に誤認識したことに起因する抽出対象文字列の抽出精度の低下を抑制することができる。
【0045】
本発明は、上述の実施の形態の1以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、該システム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0046】
105 画像処理装置
106 CPU
301 スキャン画像
501~504、801~803 文字列情報
602、606、903 優先文字情報
603、607 優先単語情報
701、901 変換テーブル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13