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

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

▶ 株式会社リコーの特許一覧

特開2023-81132情報処理システム、帳票認識方法、プログラム、帳票認識システム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023081132
(43)【公開日】2023-06-09
(54)【発明の名称】情報処理システム、帳票認識方法、プログラム、帳票認識システム
(51)【国際特許分類】
   G06V 30/00 20220101AFI20230602BHJP
【FI】
G06K9/00 P
【審査請求】未請求
【請求項の数】22
【出願形態】OL
(21)【出願番号】P 2021194851
(22)【出願日】2021-11-30
(71)【出願人】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】岩崎 遼
【テーマコード(参考)】
5B064
【Fターム(参考)】
5B064AA01
5B064FA02
(57)【要約】      (修正有)
【課題】複数の行に記載された項目値がより適切に抽出される情報処理システム、帳票認識システム、帳票認識方法及びプログラムを提供する。
【解決手段】帳票認識システム100において、サーバ装置200は、行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置400に提供する。サーバ装置200は、予め設定されている列見出しの列に値を有する第一の行の項目値と、予め設定されている除外用語を含まず空白行でない第二の行の項目値を連結する帳票認識処理部220と、帳票認識処理部220により連結された第一の行と第二の行の項目値を端末装置400に提供する表示画面生成部と、を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置に提供する情報処理システムであって、
前記認識結果から、予め設定されている列見出しの列に値を有する第一の行の項目値と、予め設定されている除外用語を含まず空白行でない第二の行の項目値を連結する帳票認識部と、
前記帳票認識部により連結された前記第一の行と前記第二の行の項目値を前記端末装置に提供する表示画面生成部と、
を有することを特徴とする情報処理システム。
【請求項2】
連結された前記第一の行と前記第二の行の項目値は、列見出しが品名の列における項目値であり、
前記除外用語は、品名として使用されない用語であることを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記除外用語は、消費税、小計、合計、又は、伝票計であることを特徴とする請求項2に記載の情報処理システム。
【請求項4】
予め設定されている前記列見出しは、金額、又は、数量及び単価であることを特徴とする請求項3に記載の情報処理システム。
【請求項5】
前記第二の行に隣接した上の行、又は、下の行のいずれかのみが、前記第一の行の場合、前記帳票認識部は、前記第二の行に隣接した前記第一の行の項目値と前記第二の行の項目値を連結することを特徴とする請求項4に記載の情報処理システム。
【請求項6】
前記除外用語を含む行を第三の行、すべての列に値が存在しない行を第四の行とし、
前記第二の行に隣接した上の行、及び、下の行の双方が、前記第一の行の場合、
前記帳票認識部は、表形式の画像データの中で最初に登場する第一の行の上の行が、前記第三の行、前記第四の行、又は、存在しない場合、
前記第二の行の上に隣接した前記第一の行の項目値と前記第二の行の項目値を連結することを特徴とする請求項4に記載の情報処理システム。
【請求項7】
前記除外用語を含む行を第三の行、すべての列に値が存在しない行を第四の行とし、
前記第二の行に隣接した上の行、及び、下の行の双方が、前記第一の行の場合、
前記帳票認識部は、表形式の画像データの中で最初に登場する第一の行の上の行が、前記第二の行の場合、
前記第二の行の下に隣接した前記第一の行の項目値と前記第二の行の項目値を連結することを特徴とする請求項4に記載の情報処理システム。
【請求項8】
行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置に提供する情報処理システムであって、
前記行の区切りに第一の罫線を設定し、予め設定されている列見出しの列の項目値の上端に第二の罫線を設定し、前記第一の罫線と前記第二の罫線に基づいて、行区切りを決定する帳票認識部と、
前記帳票認識部により決定された行区切りに基づいて抽出した項目値を前記端末装置に提供する表示画面生成部と、
を有することを特徴とする情報処理システム。
【請求項9】
前記帳票認識部は、前記第一の罫線と重なっている前記第二の罫線を前記行区切りに決定することを特徴とする請求項8に記載の情報処理システム。
【請求項10】
前記第一の罫線は前記画像データを等間隔に区切るように決定されており、
前記帳票認識部は、指定されたスキップ数ごとに前記第一の罫線を描画することを特徴とする請求項8又は9に記載の情報処理システム。
【請求項11】
行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置に提供する情報処理システムが行う帳票認識方法であって、
帳票認識部が、前記認識結果から、予め設定されている列見出しの列に値を有する第一の行の項目値と、予め設定されている除外用語を含まず空白行でない第二の行の項目値を連結するステップと、
表示画面生成部が、前記帳票認識部により連結された前記第一の行と前記第二の行の項目値を前記端末装置に提供するステップと、
を有することを特徴とする帳票認識方法。
【請求項12】
連結された前記第一の行と前記第二の行の項目値は、列見出しが品名の列における項目値であり、
前記除外用語は、品名として使用されない用語であることを特徴とする請求項11に記載の帳票認識方法。
【請求項13】
前記除外用語は、消費税、小計、合計、又は、伝票計であることを特徴とする請求項12に記載の帳票認識方法。
【請求項14】
予め設定されている前記列見出しは、金額、又は、数量及び単価であることを特徴とする請求項13に記載の帳票認識方法。
【請求項15】
前記第二の行に隣接した上の行、又は、下の行のいずれかのみが、前記第一の行の場合、前記帳票認識部は、前記第二の行に隣接した前記第一の行の項目値と前記第二の行の項目値を連結することを特徴とする請求項14に記載の帳票認識方法。
【請求項16】
前記除外用語を含む行を第三の行、すべての列に値が存在しない行を第四の行とし、
前記第二の行に隣接した上の行、及び、下の行の双方が、前記第一の行の場合、
前記帳票認識部は、表形式の画像データの中で最初に登場する第一の行の上の行が、前記第三の行、前記第四の行、又は、存在しない場合、
前記第二の行の上に隣接した前記第一の行の項目値と前記第二の行の項目値を連結することを特徴とする請求項14に記載の帳票認識方法。
【請求項17】
前記除外用語を含む行を第三の行、すべての列に値が存在しない行を第四の行とし、
前記第二の行に隣接した上の行、及び、下の行の双方が、前記第一の行の場合、
前記帳票認識部は、表形式の画像データの中で最初に登場する第一の行の上の行が、前記第二の行の場合、
前記第二の行の下に隣接した前記第一の行の項目値と前記第二の行の項目値を連結することを特徴とする請求項14に記載の帳票認識方法。
【請求項18】
行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置に提供する情報処理システムが行う帳票認識方法であって、
前記行の区切りに第一の罫線を設定し、予め設定されている列見出しの列の項目値の上端に第二の罫線を設定し、前記第一の罫線と前記第二の罫線に基づいて、行区切りを決定する帳票認識部と、
前記帳票認識部により決定された行区切りに基づいて抽出した項目値を前記端末装置に提供する表示画面生成部と、
を有することを特徴とする帳票認識方法。
【請求項19】
前記帳票認識部は、前記第一の罫線と重なっている前記第二の罫線を前記行区切りに決定することを特徴とする請求項18に記載の帳票認識方法。
【請求項20】
前記第一の罫線は前記画像データを等間隔に区切るように決定されており、
前記帳票認識部は、指定されたスキップ数ごとに前記第一の罫線を描画することを特徴とする請求項18又は19に記載の帳票認識方法。
【請求項21】
行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置に提供する情報処理システムを、
前記認識結果から、予め設定されている列見出しの列に値を有する第一の行の項目値と、予め設定されている除外用語を含まず空白行でない第二の行の項目値を連結する帳票認識部と、
前記帳票認識部により連結された前記第一の行と前記第二の行の項目値を前記端末装置に提供する表示画面生成部、
として機能させるためのプログラム。
【請求項22】
行と列を有する表形式の画像データから文字列を認識した認識結果を端末装置に提供する情報処理システムと、前記認識結果を表示する端末装置とを有する帳票認識システムであって、
前記情報処理システムは、
前記認識結果から、予め設定されている列見出しの列に値を有する第一の行の項目値と、予め設定されている除外用語を含まず空白行でない第二の行の項目値を連結する帳票認識部と、
前記帳票認識部により連結された前記第一の行と前記第二の行の項目値を前記端末装置に提供する表示画面生成部と、を有し、
前記端末装置は、
前記認識結果を表示する表示制御部を有することを特徴とする帳票認識システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、帳票認識方法、プログラム、及び、帳票認識システムに関する。
【背景技術】
【0002】
項目名とその項目値が表形式に配置された帳票をスキャンして、テキストデータに変換する技術が知られている。各企業は業務に合わせて帳票を作成するため、帳票の形式は企業によって様々である。このため、帳票が正しく認識されなかった場合、ユーザーが直接、項目値を抽出する領域を指定することが行われている。
【0003】
簡易な操作で所定の項目値に対応する領域を設定する技術が知られている(例えば、特許文献1参照。)。特許文献1には、表形式の画像に抽出ガイドを表示し、抽出ガイドの位置の設定を受け付けることで、抽出領域を指定する情報処理システムが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、複数の行に記載された項目値が適切に抽出されないという問題がある。例えば、記載内容が複数の行にまたがる場合、行の区切りを適切に認識しないと記載内容が分断して抽出される。
【0005】
本発明は、上記課題に鑑み、複数の行に記載された項目値がより適切に抽出される情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題に鑑み、本発明は、行と列を有する表形式の画像データから文字を認識した認識結果を端末装置に提供する情報処理システムであって、前記認識結果から、予め設定されている列見出しの列に値を有する第一の行の項目値と、予め設定されている除外用語を含まず空白行でない第二の行の項目値を連結する帳票認識部と、前記帳票認識部により連結された前記第一の行と前記第二の行の項目値を前記端末装置に提供する表示画面生成部と、を有することを特徴とする。
【発明の効果】
【0007】
複数の行に記載された項目値がより適切に抽出される情報処理システムを提供することができる。
【図面の簡単な説明】
【0008】
図1】帳票認識システムのシステム構成の一例を示す図である。
図2】サーバ装置のハードウェア構成の一例を示す図である。
図3】端末装置のハードウェア構成の一例を示す図である。
図4】業種判定データベースの一例を示す図である。
図5】明細定義データベースに格納される明細定義情報の種類を示す図である。
図6】汎用明細定義情報の一例を示す図である。
図7】業種明細定義情報の一例を示す図である。
図8】個社明細定義情報の一例を示す図である。
図9】サーバ装置の機能を説明する図である。
図10】端末装置の機能を説明する図である。
図11A】帳票認識システムの動作を説明するシーケンス図の一例である(その1)。
図11B】帳票認識システムの動作を説明するシーケンス図の一例である(その2)。
図12】ジョブリストの一例を示す図である。
図13】帳票認識部の処理を説明する第一のフローチャート図の一例である。
図14】帳票認識部の処理を説明する第二のフローチャート図の一例である。
図15】帳票認識部の処理を説明する第三のフローチャート図の一例である。
図16】帳票画像データを説明する第一の図である。
図17】明細情報の抽出を説明する第二の図である。
図18】読取結果データに基づき生成された明細部の明細情報を説明する第三の図である。
図19】認識結果確認画面の一例を示す図である。
図20】認識結果における行の区切りの調整例を示す図である。
図21】帳票認識部が複数の行を連結する手順を説明するフローチャート図の一例である。
図22】ラベルAとラベルDの行の連結を模式的に説明する図である。
図23】ラベルAとDの行の連結例を示す図である。
図24図21の連結処理により帳票画像データの各行に設定されたラベルA~Dを示す図である。
図25図21の連結処理により連結された品名を説明する図である。
図26】比較される行の区切りの認識方法を示す図である。
図27】行の区切りの認識方法の概略を示す図である。
図28】帳票認識システムの動作を説明するシーケンス図の一例である(実施例2)。
図29図28の連結処理により連結された品名を説明する図である(実施例2)。
図30】金額の列に消費税も表示される段組み帳票の一部を示す図である(実施例2)。
図31】ユーザーが論理罫線の行の区切りを「金額」の列、1行飛ばしを指定した場合の段組み帳票の論理罫線の描画例を示す図である(実施例2)。
【発明を実施するための形態】
【0009】
以下、本発明を実施するための形態の一例として、情報処理システムと情報処理システムが行う帳票認識方法について図面を参照しながら説明する。
【実施例0010】
<用語について>
本実施形態におけるユーザーとは、例えば、帳票認識システムが提供するサービスを利用するための契約を締結している事業所や企業、団体等、及び、その社員や職員等である。
【0011】
ユーザーは、取引先である帳票の発行元から帳票を入手し、経理処理などのために帳票認識システムを使用して帳票認識を行う。
【0012】
行とは、文字などの横の並びをいい、列とは、文字などの縦の並びをいう。表とは、少なくとも一部に行と列を有して、事柄を見やすいように配列したものである。このように事柄が配列された表示方法を表形式という。行が罫線で区切られていた場合、1行は罫線と罫線の間をいい、罫線で区切られていない場合、1行は文字列が横に並んでいる領域を含む表の端から端までである。空白行はおよそ一文字分の高さの行である。空白行には単なる記号の羅列(例えば、―――――、******など)が含まれてもよい。
【0013】
列が縦罫で区切られていた場合、1列は縦罫と縦罫の間をいい、縦罫で区切られていない場合、1列は左右がスペースで区切られた表の先頭の文字列(列見出し)の長さを横幅とし、この文字列の下に縦方向に存在する最下部の文字列までを高さとする。
【0014】
帳票における正しい行の区切りとは、帳票の発行元が意図した行の区切りをいう。つまり、帳票における正しい行の区切りとは、帳票の記載内容が複数行にわたる場合に、どの行からどの行までを連結するべきか判断することをいう。当然ながら、発行元が意図した行の区切りは、ユーザーにとっても正しい行の区切りである。
本実施形態における文字列とは、英数字、かな文字、漢字、各種記号(!$%等)などをいい、項目名に対する項目値が文字列であるとして説明する。帳票によっては、文字列は、当該企業でのみ通用するマークやコードなども含む。
【0015】
<システム構成例>
図1は、帳票認識システムのシステム構成の一例を示す図である。本実施形態の帳票認識システム100は、サーバ装置200、画像形成装置300、端末装置400を有する。本実施形態の帳票認識システム100において、サーバ装置200と、画像形成装置300と、端末装置400とは、ネットワークを介して接続される。本実施形態のサーバ装置200は、情報処理システムの一例である。
【0016】
また、サーバ装置200は、例えば、ネットワークを介して基幹システム500と接続される。基幹システム500とは、例えば、本実施形態の帳票認識システム100において帳票を認識した結果を用いて、特定の処理を行うシステムである。具体的には、例えば、基幹システム500は、会計システムや、見積もり作成システム等であっても良い。
【0017】
本実施形態の帳票認識システム100において、サーバ装置200は、画像形成装置300のスキャナ機能によって読み取られた帳票の画像データから、帳票に含まれる項目と項目値とを抽出し、項目と項目値とを対応付けたテキストデータに変換する。
【0018】
サーバ装置200はインターネット上に存在してもよいし、オンプレミスに存在してもよい。インターネット上に存在する場合はクラウドコンピューティングに対応しているとよい。クラウドとは、特定のハードウェア資源を意図しない場合に用いられる用語である。
【0019】
以下の説明では、画像形成装置300のスキャナ機能によって読み取られた帳票の画像又は画像データを帳票画像又は帳票画像データと呼ぶ。
【0020】
また、以下の説明では、帳票画像に含まれる項目と、この項目値とを抽出し、項目と項目値とをテキストデータに変換して対応付けることを、帳票認識と呼ぶ。
【0021】
本実施形態のサーバ装置200は、記憶部210と、帳票認識処理部220とを有する。記憶部210には、帳票画像データベース230、業種判定データベース240、明細定義データベース250、認識結果データベース260が設けられている。
【0022】
帳票画像データベース230は、帳票画像データが格納される。業種判定データベース240は、帳票の発行元の業種を判別する際に参照される情報が格納される。明細定義データベース250は、帳票認識処理部220による帳票認識を行う際に参照される明細定義情報が格納される。認識結果データベース260は、帳票認識処理部220による帳票認識の結果を示す情報である認識結果データが格納される。
【0023】
本実施形態の帳票認識処理部220は、帳票画像データベース230に格納された帳票画像データを取得し、業種判定データベース240を参照して帳票の発行元の業種の判定と、参照すべき明細定義情報の特定を行う。そして、帳票認識処理部220は、明細定義データベース250において、特定された明細定義情報を用いて帳票認識を行い、その結果を認識結果データベース260へ格納する。明細定義情報とは、帳票に含まれる明細項目の項目名と項目名の記載位置を示す情報と、を含む。
【0024】
ここで、本実施形態の帳票認識処理部220は、帳票認識を行う際に、明細定義データベース250に格納された、個社明細定義情報と、業種明細定義情報と、汎用明細定義情報と、を参照する。
【0025】
本実施形態の汎用明細定義情報とは、一般的な帳票における明細項目名に対応する単語を定義した情報である。業種明細定義情報は、業種毎の帳票における明細項目名に対応する単語を定義した情報である。個社明細定義情報とは、帳票認識システム100を利用するユーザー固有の帳票における明細項目名に対応する単語と帳票画像から抽出する情報を定義した情報である。業種判定データベース240と、明細定義データベース250の詳細は後述する。
【0026】
本実施形態では、このように、帳票認識の際に、3種類の明細定義情報を用いることで、汎用的な帳票に加えて、帳票の明細部を認識することができ、帳票の認識の精度を向上させることができる。
【0027】
帳票における明細部について簡単に説明する。帳票の明細部は、データの集計結果等を示す部分であり、明細項目毎に、同じ形式のデータが縦方向に繰り返し印刷された部分である。明細項目とは、明細部で集計されるデータの項目である。一般的な明細項目としては、商品名、数量、単価、金額等が含まれる。明細部の具体的例は後述する。
【0028】
本実施形態の帳票認識システム100において、画像形成装置300は、スキャナ機能を有する複合機である。画像形成装置300は、コピー機能、FAX機能、スキャナ機能等を実現するためのアプリケーションが搭載されており、各機能と対応するアプリケーションを選択することで、これらの機能が実現される。画像形成装置300は、カメラを備えた例えば、スマートフォン、書画カメラ、タブレット端末等の情報処理装置でもよい。これらの情報処理装置ではOCRアプリが動作して、単体で又はサーバ装置200と連携して本実施形態と同様の処理を行うことができる。また、スキャナ装置など単体の読み取り機能とOCRアプリを搭載した情報処理装置とがネットワークを介してつながる形態やOCR機能をサーバ装置に備える形式でもよい。
【0029】
本実施形態の端末装置400は、帳票認識システム100を利用するユーザーによって使用される。また、端末装置400には、サーバ装置200による帳票認識の結果が表示されても良い。
【0030】
また、図1の例では、サーバ装置200は、記憶部210内に4つのデータベースを有する構成としたが、これに限定されない。各データベースは、一部がサーバ装置200の外部装置に設けられていても良いし、各データベース全てが外部装置に設けられていても良い。
【0031】
また、図1の例では、サーバ装置200が帳票認識処理部220を実現するものとしたが、これに限定されない。帳票認識処理部220は、複数の情報処理装置によって実現されても良い。
【0032】
また、図1の例では、帳票認識システム100に含まれる画像形成装置300と端末装置400とは、それぞれ1台としているが、帳票認識システム100に含まれる画像形成装置300と端末装置400の台数は、任意の数であって良い。
【0033】
次に、図2を参照して、本実施形態のサーバ装置200のハードウェア構成について説明する。図2は、サーバ装置200のハードウェア構成の一例を示す図である。
【0034】
本実施形態のサーバ装置200は、コンピュータによって構築されており、図2に示されているように、CPU201、ROM202、RAM203、HD204、HDD(Hard Disk Drive)コントローラ205、ディスプレイ206、外部機器接続I/F(Interface)208、ネットワークI/F209、データバスB、キーボード211、ポインティングデバイス212、光学ドライブ214、メディアI/F216を備えている。
【0035】
これらのうち、CPU201は、サーバ装置200全体の動作を制御する。ROM202は、IPL等のCPU201の駆動に用いられるプログラムを記憶する。RAM203は、CPU201のワークエリアとして使用される。HD204は、プログラム等の各種データを記憶する。HDDコントローラ205は、CPU201の制御にしたがってHD204に対する各種データの読み出し又は書き込みを制御する。ディスプレイ206は、カーソル、メニュー、ウィンドウ、文字、又は画像などの各種情報を表示する表示部である。
【0036】
外部機器接続I/F208は、各種の外部機器を接続するためのインターフェースである。この場合の外部機器は、例えば、USB(Universal Serial Bus)メモリやプリンタ等である。ネットワークI/F209は、通信ネットワークNを利用してデータ通信をするためのインターフェースである。データバスBは、図2に示されているCPU201等の各構成要素を電気的に接続するためのアドレスバスやデータバス等である。
【0037】
また、キーボード211は、文字、数値、各種指示などの入力のための複数のキーを備えた入力手段の一種である。ポインティングデバイス212は、各種指示の選択や実行、処理対象の選択、カーソルの移動などを行う入力手段の一種である。光学ドライブ214は、着脱可能な記録媒体の一例としての光記憶媒体213に対する各種データの読み出し又は書き込みを制御する。なお、光記憶媒体213は、CD、DVD、Blu-ray(登録商標)等でよい。メディアI/F216は、フラッシュメモリ等の記録メディア215に対するデータの読み出し又は書き込み(記憶)を制御する。
【0038】
本実施形態のサーバ装置200は、例えば、スマートフォン、タブレット端末、PDA
(Personal Digital Assistant)、ウェアラブルPC等であっても良い。
【0039】
本実施形態の端末装置400は、演算処理装置と記憶装置とを有するコンピュータであり、例えば、PC(Personal Computer)、タブレット端末、スマートフォン等であっても良い。図3は、端末装置400のハードウェア構成の一例を示す図である。
【0040】
本実施形態の端末装置400は、CPU401、ROM402、RAM403、EEPROM404、CMOSセンサ405、撮像素子I/F406、加速度・方位センサ407、メディアI/F409、GPS受信部411を備えている。
【0041】
これらのうち、CPU401は、端末装置400全体の動作を制御する演算処理装置である。ROM402は、CPU401やIPL等のCPU401の駆動に用いられるプログラムを記憶する。RAM403は、CPU401のワークエリアとして使用される。EEPROM404は、CPU401の制御にしたがって、スマートフォン用プログラム等の各種データの読み出し又は書き込みを行う。ROM402、RAM403、EEPROM404は、端末装置400の記憶装置の一例である。
【0042】
CMOS(Complementary Metal Oxide Semiconductor)センサ405は、CPU401の制御にしたがって被写体(主に自画像)を撮像して画像データを得る内蔵型の撮像手段の一種である。なお、CMOSセンサは、CCD(Charge Coupled Device)センサ等の撮像手段であってもよい。
【0043】
撮像素子I/F406は、CMOSセンサ305の駆動を制御する回路である。加速度・方位センサ407は、地磁気を検知する電子磁気コンパスやジャイロコンパス、加速度センサ等の各種センサである。メディアI/F409は、フラッシュメモリ等の記録メディア408に対するデータの読み出し又は書き込み(記憶)を制御する。GPS受信部411は、GPS衛星からGPS信号を受信する。
【0044】
また、端末装置400は、遠距離通信回路412、遠距離通信回路412のアンテナ412a、マイク415、スピーカ416、音入出力I/F417、ディスプレイ418、外部機器接続I/F(Interface)419、近距離通信回路420、近距離通信回路420のアンテナ420a、及びタッチパネル421を備えている。
【0045】
これらのうち、遠距離通信回路412は、通信ネットワークを介して、他の機器と通信する回路である。マイク415は、音を電気信号に変える内蔵型の回路である。スピーカ416は、電気信号を物理振動に変えて音楽や音声などの音を生み出す内蔵型の回路である。音入出力I/F417は、CPU401の制御にしたがってマイク415及びスピーカ416との間で音信号の入出力を処理する回路である。
【0046】
ディスプレイ418は、被写体の画像や各種アイコン等を表示する液晶や有機EL(Electro Luminescence)などの表示手段の一種である。外部機器接続I/F419は、各種の外部機器を接続するためのインターフェースである。近距離通信回路420は、NFC(Near Field Communication)やBluetooth(登録商標)等の通信回路である。タッチパネル421は、ユーザーがディスプレイ418を押下することで、端末装置400を操作する入力手段の一種である。ディスプレイ418は、端末装置400の有する表示部の一例である。
【0047】
<データベースの構成例>
次に、本実施形態のサーバ装置200の有する業種判定データベース240と明細定義データベース250について説明する。
【0048】
図4は、業種判定データベースの一例を示す図である。本実施形態の業種判定データベース240は、各種の業種毎に設けられる。
【0049】
業種判定データベース240では、業種と、帳票の発行元とが対応付けられている。図3の例では、業種「小売り」と、A社、B社、C社とが対応付けられている。したがって、A社、B社、C社は、小売り業を行っている組織であることがわかる。
【0050】
次に、図5乃至図8を参照して、本実施形態の明細定義データベース250について説明する。図5は、明細定義データベースに格納される明細定義情報の種類を示す図である。
【0051】
本実施形態の明細定義データベース250には、個社明細定義情報251と、業種明細定義情報252と、汎用明細定義情報253と、が格納されている。個社明細定義情報251とは、帳票の中でも、発行元が独自に設計した(あるいは発行元が独自で管理している管理システム等で使われている)帳票に含まれる明細項目名と記載位置を定義した明細定義情報であり、発行元専用の明細定義情報である。個社明細定義情報251は、3つの明細定義情報のうち、最も尊重されるべき定義であり、最も優先度が高い明細定義情報である。
【0052】
本実施形態の業種明細定義情報252は、帳票の中でも、各業界において一般的に利用される帳票に含まれる明細項目名と記載位置を定義した明細定義情報である。業種明細定義情報252の優先度は、3つの明細定義情報のうちの中間となる。
【0053】
本実施形態の汎用明細定義情報253とは、帳票の中でも、複数のユーザーにより利用される汎用性の高い帳票に含まれる明細項目名と記載位置を定義した明細定義情報である。汎用明細定義情報253は、3つの明細定義情報のうち、最も優先度の低い明細定義情報である。
【0054】
本実施形態の帳票認識処理部220は、この3つの明細定義情報を参照して、帳票画像データの認識を行う。したがって、本実施形態では、例えば、帳票画像データが、個社明細定義情報251において定義されていない明細項目名を含む帳票のものであった場合でも、業種明細定義情報252や汎用明細定義情報253で定義されていれば、この帳票画像データを認識できる。
【0055】
なお、以下の説明では、請求書を帳票の一例として説明する。なお、帳票は、明細部を含むものであれば、どのような帳票であっても良い。具体的には、例えば、帳票は、納品書や見積書、仕入れ伝票等であっても良い。
【0056】
帳票が納品書である場合には、発行元は納品書を発行した納品元となり、帳票が仕入れ伝票の場合には、発行元は仕入れ伝票を発行した仕入れ元となる。
【0057】
図6は、汎用明細定義情報の一例を示す図である。汎用明細定義情報253は、一般的な請求書の明細部で採用される明細項目名を定義するものであり、汎用明細定義情報253は、情報の項目として、明細項目名と、キーワードとを有し、両者は対応付けられている。
【0058】
項目「明細項目名」の値は、請求書の明細部で用いられる明細項目の名称を示す。項目「キーワード」の値は、明細部の明細項目名と同義と見なされるキーワード(単語)を示す。
【0059】
つまり、汎用明細定義情報253は、一般的な帳票で用いられる明細項目、帳票から明細項目として抽出するキーワードと、を定義した情報である。
【0060】
図6の例では、明細項目名「商品名」は、「商品」、「製品」、「品名」等のキーワードと同義として扱われることを示している。また、図6の例では、明細項目名「金額」は、「金額」、「総額」、「合計」等のキーワードと同義として扱われることを示している。
【0061】
また、図6の例では、明細項目名「注文番号」は、「注文No.」、「伝票番号」等のキーワードと同義として扱われることを示している。また、図6の例では、明細項目名「商品コード」は、「商品No.」、「商品番号」等のキーワードと同義として扱われることを示している。
【0062】
図7は、業種明細定義情報の一例を示す図である。業種明細定義情報252は、業種毎に設けられる情報であり、業種が示す業界における一般的な請求書の明細部で採用される項目名を定義するものである。
【0063】
業種明細定義情報252は、業種を特定する情報と、項目「明細項目名」と、項目「キーワード」とを有し、両者は対応付けられている。図7の例では、業種が「小売り業」であることを示している。
【0064】
項目「明細項目名」の値は、一般的な請求書の明細部で用いられる明細項目の名称を示す。項目「キーワード」の値は、請求元が小売り業の請求書において、一般的な明細項目名に相当するキーワード(単語)を示す。
【0065】
つまり、業種明細定義情報252は、業種と、帳票で用いられる明細項目、帳票から明細項目として抽出するキーワードと、を定義した情報である。
【0066】
図7の例では、一般的な帳票の明細項目名「商品名」は、発行元が小売り業の請求書の明細部では、「品名」、「製品名」等のキーワードに置き換えられる場合があることを示している。
【0067】
図8は、個社明細定義情報の一例を示す図である。本実施形態の個社明細定義情報251は、発行元ごとにユーザー側で登録されるものである。発行元が同じでもユーザーによって個社明細定義情報251が異なる場合はある。
【0068】
個社明細定義情報251では、請求元を特定する情報と、項目「明細項目名」と、項目「抽出情報」とが対応付けられている。
【0069】
請求元を特定する情報とは、請求元の名称、電話番号、口座番号等を含む。なお、図8の例では、請求元を特定する情報に、請求元の名称、電話番号、口座番号が含まれるものとしたが、請求元を特定する情報は、これらの情報のうちいずれか1つであっても良い。
【0070】
項目「明細項目名」の値は、一般的な請求書の明細部で用いられる明細項目の名称を示す。言い換えれば、個社明細定義情報251における明細項目名とは、帳票で用いられる明細項目を示す。
【0071】
項目「抽出情報」の値は、請求元から発行される請求書において、一般的な明細項目に相当するキーワード(単語)として抽出するキーワードと、請求書を示す帳票画像において、このキーワードが記載されている位置を示す情報とを含む。
【0072】
つまり、個社明細定義情報251における抽出情報は、帳票から明細項目として抽出するキーワードと、帳票におけるキーワードの位置を示す情報とを含む。したがって、個社明細定義情報251は、帳票で用いられる明細項目と、明細項目として抽出するキーワードと、帳票におけるキーワードの位置を示す情報とを定義した情報である。
【0073】
図8の例では、一般的な帳票の明細項目名「商品名」は、請求元がA社である請求書の明細部では、「品名」、等のキーワードに置き換えられる場合があることを示している。
【0074】
また、図8の例では、請求元がA社である請求書を示す帳票画像におけるキーワード「品名」の位置を示す情報として、キーワードの座標を示すキーワード座標、キーワード「品名」が記入されたセルの座標を示すセル座標、キーワード「品名」が記入された列の座標を示す列座標が抽出されることを示している。
【0075】
なお、請求書を示す帳票画像において、キーワードが記載されている位置を示す情報とは、キーワード座標でよい。キーワード座標は、キーワードに外接する矩形において対角線上にある2点の座標である。この座標から、キーワードに外接する矩形の幅と高さがわかる。同様にセル座標は、キーワードの直下のセルにおける文字列に外接する矩形において対角線上にある2点の座標である。なお、同じ列にあるセルの幅と高さは同じとする。列座標は、キーワードの直下のセルの文字列から最下部のセルの文字列に外接する矩形において対角線上にある2点の座標である。
【0076】
<サーバ装置の機能>
次に、図9を参照して、本実施形態のサーバ装置200の機能について説明する。図9は、サーバ装置200の機能を説明する図である。
【0077】
本実施形態のサーバ装置200では、例えば、HD204やRAM203等に格納された情報処理プログラムをCPU201が読み出して実行することで、後述する各部の機能が実現される。
【0078】
本実施形態のサーバ装置200は、帳票認識処理部220、定義登録部290、通信部298を有する。帳票認識処理部220は、入力受付部221、認証処理部222、帳票認識部270を有する。
【0079】
入力受付部221は、サーバ装置200に対する各種の入力を受け付ける。具体的には、入力受付部221は、帳票認識システム100にログインするための認証情報の入力を受け付ける。認証情報とは、例えば、ユーザーIDとパスワード等である。また、入力受付部221は、例えば、画像形成装置300から送信された帳票画像データの入力を受け付ける。入力受付部221は、通信部298を介してサーバ装置200に対する入力を受け付けて良いし、サーバ装置200に対して直接行われた入力を受け付けても良い。
【0080】
認証処理部222は、入力受付部221が入力を受け付けた認証情報に基づき、認証を行う。なお、認証処理部222は、例えば、サーバ装置200の外部に設けられた認証サーバに対して、入力された認証情報を送信し、認証サーバによる認証の結果を取得しても良い。認証処理部222は、ユーザーが認証されると、入力受付部221が受け付けた帳票画像データを帳票認識部270に渡しても良い。
【0081】
本実施形態の帳票認識部270は、画像データ格納部271、ジョブリスト生成部272、画像データ取得部273、前処理部274、文字認識部275、定義特定部276、項目抽出部277、表示画面生成部278、出力部279を有する。
【0082】
画像データ格納部271は、入力受付部221が、画像形成装置300から通信部298を介して帳票画像データを受信すると、帳票画像データベース230に格納する。
【0083】
ジョブリスト生成部272は、入力受付部221が、通信部298を介して画像形成装置300から帳票画像データの入力を受け付けると、ジョブリストにジョブを登録し、ジョブリストを管理する。ジョブリストの詳細は後述する。
【0084】
画像データ取得部273は、帳票画像データベース230に格納された帳票画像データを取得する。前処理部274は、画像データ取得部273が取得した帳票画像データに対して、帳票認識を行うための前処理を行う。
【0085】
文字認識部275は、帳票画像データから、文字列と、文字列が配置された位置を示す情報とを抽出し、読取結果データとして保持する。読取結果データの詳細は後述する。
【0086】
定義特定部276は、読取結果データに含まれる文字列に基づき、帳票認識の際に参照する明細定義情報を特定し、特定した明細定義情報を明細定義データベース250から取得する取得部である。
【0087】
項目抽出部277は、読取結果データに基づき、帳票画像データに含まれる項目と、項目値とを抽出して対応付けを行った認識結果データを生成し、認識結果データベース260へ格納する。
【0088】
このとき、項目抽出部277は、定義特定部276により特定された明細定義情報を参照し、帳票の明細部に記載された明細項目名と、明細項目の項目値とを対応付けて抽出する。
【0089】
以下の説明では、帳票の明細部に記載された明細項目名と、明細項目の項目値とを対応付けた情報を明細情報と呼ぶ場合がある。本実施形態の明細情報は、認識結果データに含まれる情報であり、認識結果データの一部である。
【0090】
また、本実施形態の認識結果データは、帳票に記載された帳票の発行元を示す情報(発行元情報)等を含む。つまり、認識結果データには、帳票に記載された全ての文字列が含まれてよい。
【0091】
表示画面生成部278は、認識結果データベース260に格納された認識結果データを用いて、認識結果確認画面を生成する。表示画面生成部278は、通信部298を介して、端末装置400に対する画面の表示を指示する。具体的には、表示画面生成部278は、個社明細定義情報を生成するための画面を端末装置400に表示させる。また、表示画面生成部278は、画面を表示させるためのXML形式のファイルを生成し、通信部298を介して端末装置400のWebブラウザ上に入力画面を表示させる。
【0092】
なお、本実施形態では、表示画面生成部278は、個社明細定義情報251を生成するための画面を端末装置400に表示させるものとしたが、これに限定されない。表示画面生成部278が画面を表示させる装置は、サーバ装置200であっても良いし、端末装置400以外の装置あっても良く、表示機能を有する表示装置であれば良い。
【0093】
出力部279は、表示画面生成部278が生成した認識結果確認画面を、通信部298を介して出力する。言い換えれば、出力部279は、表示画面生成部278が生成した認識結果確認画面を、通信部298を介して端末装置400のWebブラウザ上で表示させる。
【0094】
本実施形態の定義登録部290は、操作内容取得部291、定義生成部293、定義更新部294を有する。
【0095】
操作内容取得部291は、通信部298を介して、端末装置400のWebブラウザ上に表示された画面に対して入力された操作を受け付ける。より具体的には、本実施形態では、通信部298が端末装置400から操作を示す情報を受信し、操作内容取得部291が、通信部298が受信した情報の入力を受け付ける。
【0096】
定義生成部293は、入力画面に対して端末装置400から入力された情報に基づき、個社明細定義情報を生成して明細定義データベース250へ格納する。
【0097】
定義更新部294は、既に明細定義データベース250に登録された個社明細定義情報に対する修正を反映させて、個社明細定義情報を更新する。
【0098】
本実施形態の通信部298は、例えば、ネットワークI/F209等によって実現される機能であり、サーバ装置200と外部装置との間でデータの送受信を行う。具体的には、例えば、通信部298は、表示画面生成部278に制御に応じて、端末装置400に対して、画面の表示を指示する通知を送信する。
【0099】
<端末装置の機能>
次に、図10を参照して、本実施形態の端末装置400の機能について説明する。図10は、端末装置400の機能を説明する図である。
【0100】
後述する各部の機能は、端末装置400の有するCPU401が、EEPROM404やROM402等に格納されたプログラムを読み出して実行することで実現される。
【0101】
本実施形態の端末装置400は、操作受付部431、表示制御部432、通信部433を有している。操作受付部431は、表示制御部432によって端末装置400のWebブラウザ上に表示された画面に対する入力を受け付ける。
【0102】
表示制御部432は、端末装置400のディスプレイ418の表示を制御する。具体的には、表示制御部432は、サーバ装置200からの指示に応じた画面をディスプレイ418に表示させる。
【0103】
通信部433は、遠距離通信回路412、遠距離通信回路412のアンテナ412a等によって実現される機能であり、端末装置400と他の装置との間でデータの送受信を行う。
【0104】
<動作又は処理>
次に、図11A図11Bを参照して、本実施形態の帳票認識システム100の動作について説明する。図11A図11Bは、帳票認識システムの動作を説明するシーケンス図である。
【0105】
帳票認識システム100において、画像形成装置300は、ユーザーから帳票認識を行うためのアプリケーションの起動要求を受け付けると(ステップS1101)、このアプリケーションを起動させる(ステップS1102)。
【0106】
続いて、画像形成装置300は、ユーザーから認証情報の入力を受け付けると(ステップS1103)、この認証情報をサーバ装置200へ送信し、認証要求を行う(ステップS1104)。
【0107】
サーバ装置200の通信部298は認証要求を受信し、認証処理部222により認証を行い、その結果を画像形成装置300へ通知する(ステップS1105)。なお、ここでは、ユーザーの認証が成功した場合の動作を示している。
【0108】
続いて、画像形成装置300は、帳票のスキャン指示を受け付け(ステップS1106)、帳票のスキャンを行い、帳票画像データを取得する(ステップS1107)。続いて、画像形成装置300は、帳票画像データをサーバ装置200へ送信する(ステップS1108)。
【0109】
サーバ装置200の入力受付部221が通信部298を介して帳票画像データの入力を受け付けると、認証処理部222がこの帳票画像データを帳票認識部270へ渡す(ステップS1109)。なお、図11Aの例では、認証処理部222を介して帳票画像データが帳票認識部270へ渡されるものとしたが、これに限定されない。帳票画像データは、認証処理部222を介さずに帳票認識部270に渡されても良い。
【0110】
サーバ装置200の帳票認識部270は、帳票画像データを受け取ると、ジョブリスト生成部272により、ジョブリストにジョブを登録する(ステップS1110)。続いて、帳票認識部270は、画像データ格納部271により、帳票画像データを帳票画像データベース230へ格納する(ステップS1111)。
【0111】
続いて、帳票認識部270は、画像データ取得部273により、帳票画像データベース230から認識する対象となる帳票画像データを取得し(ステップS1112)、帳票画像を認識する処理を実行する(ステップS1113)。ステップS1113の処理の詳細は後述する。
【0112】
続いて、帳票認識部270は、項目抽出部277が生成した認識結果データを認識結果データベース260に格納する(ステップS1114)。
【0113】
帳票認識システム100において、端末装置400は、操作受付部431により、ユーザーからのブラウザの表示指示の入力を受け付けると(ステップS1115)、通信部433を介して、サーバ装置200に対して認識結果データを表示させるブラウザの表示要求を行う(ステップS1116)。
【0114】
また、端末装置400は、操作受付部431により、ユーザーから認証情報の入力を受け付けて(ステップS1117)、通信部433により、この認証情報をサーバ装置200へ送信する(ステップS1118)。
【0115】
サーバ装置200の通信部298は認証要求を受信し、認証処理部222がユーザーの認証を行う(ステップS1119)。通信部298は認証結果とジョブリストの一覧を端末装置400に送信する(ステップS1120)。端末装置400の通信部433が認識結果とジョブリストを受信して、表示制御部432がブラウザ上に表示する。なお、ここでは、ユーザーの認証が成功した場合の処理を示す。
【0116】
続いて、端末装置400は、操作受付部431により、ジョブリストの一覧からジョブの選択を受け付けると(ステップS1121)、この選択を、帳票画像の認識結果の閲覧指示として、通信部433により、サーバ装置200に対して閲覧要求を行う(ステップS1122)。
【0117】
サーバ装置200の通信部298は閲覧要求を受信し、表示画面生成部278が認識結果データベース260に格納されている認識結果データを取得し(ステップS1123)、認識結果確認画面を生成する。通信部298は認識結果確認画面の画面情報を端末装置400に送信する。端末装置400の通信部433が認識結果確認画面の画面情報を受信して、表示制御部432がブラウザ上に表示する(ステップS1124)。ユーザーは、表示された認識結果確認画面で認識結果を確認できる。
【0118】
続いて、図11Bを参照して説明する。一般に、業種明細定義情報252又は汎用明細定義情報253を使用した認識結果は、帳票における行や列の区切りを正しく反映していない。これは、個社明細定義情報251が使用された場合も同様で、帳票の記載内容(品名が長いなど)により、行の高さが変わり、認識結果が帳票における行の区切りを正しく反映していない場合が生じうる。このため、ユーザーは、端末装置400を操作して認識結果に対し行や列の位置を調整する(S1125)。端末装置400の操作受付部431はユーザー操作を受け付け、表示制御部432がユーザー操作に応じた行や列の調整結果を表示する(S1126)。行の調整時の画面については図19にて説明する。なお、調整結果とは本実施形態では、行の新しい区切りであるが、ユーザーは列の位置も同様に調整できる。したがって、調整結果には、帳票の行と列の位置情報が含まれる。
【0119】
本実施形態では、後述する行の連結処理により行が連結されるので、ユーザーは帳票画像データを等間隔の行に区切る程度の調整を行えばよい。また、帳票認識部270が帳票画像データを等間隔の行に区切っている場合、ユーザーの調整はなくてもよい。
【0120】
ユーザーは調整が終わると、行の連結を含む帳票認識を端末装置400に指示する(S1127)。すでに帳票認識はステップS1113で終了しているので、再度、帳票認識が行われる。操作受付部431が指示を受け付け、通信部433がユーザーによる調整結果(行と列の位置情報)を含む帳票認識要求をサーバ装置200に送信する(S1128)。
【0121】
サーバ装置200の通信部298は帳票認識要求を受信し、帳票認識部270が行の連結を含む帳票認識を行う(S1129)。ステップS1129の処理の詳細を図21にて説明する。
【0122】
サーバ装置200の通信部298は行の連結結果を含む認識結果データを、帳票認識部が端末装置400に送信する(S1130)。
【0123】
端末装置400の通信部433が認識結果データを受信し、表示制御部432が行の連結結果を含む認識結果を表示する(S1131)。
【0124】
これにより、行の高さによって異なる行として認識されていた行が、連結して認識された明細が表示される。
【0125】
ユーザーが端末装置400に個社明細定義情報の登録指示の入力を指示する。端末装置400は、操作受付部431により、個社明細定義情報の登録指示の入力を受け付けると(ステップS1132)、通信部433を介して、個社明細定義情報の登録要求をサーバ装置200へ送信する(ステップS1133)。
【0126】
サーバ装置200の通信部298がこの登録要求を受信すると、表示画面生成部278が個社明細定義情報の登録画面を生成する。通信部298は個社明細定義情報の登録画面の画面情報を端末装置400に送信する。端末装置400の通信部433が個社明細定義情報の登録画面の画面情報を受信して、表示制御部432がブラウザ上に表示する(ステップS1134)。
【0127】
続いて、端末装置400の操作受付部431が個社明細定義情報の入力を受け付けると(ステップS1135)、通信部433が入力された情報をサーバ装置200へ送信する(ステップS1136)。サーバ装置200の通信部298が入力された情報を受信し、定義生成部293が端末装置400から送信された情報に基づき、個社明細定義情報を生成し(ステップS1137)、明細定義データベース250に格納して(ステップS1138)、処理を終了する。
【0128】
<ジョブリスト>
次に、図12を参照して、本実施形態のジョブリスト生成部272により生成されるジョブリストについて説明する。図12は、ジョブリストの一例を示す図である。
【0129】
本実施形態のサーバ装置200は、画像形成装置300から帳票画像データが入力されると、ジョブリスト生成部272により、帳票画像データとジョブIDとを対応付けたジョブリストとして保持する。
【0130】
本実施形態のジョブリスト101は、情報の項目として、ジョブID、請求元、帳票画像ファイルパス、認識結果ファイルパス、ステータス、ユーザーIDを有する。
【0131】
項目「ジョブID」の値は、ジョブを特定する識別情報である。言い換えれば、項目「ジョブID」の値は、画像形成装置300から受信した帳票画像データを特定するための識別情報である。
【0132】
項目「請求元」は、帳票の発行元の社名等である。ジョブ登録時には請求元は不明なので、帳票認識後に設定されてよい。
【0133】
項目「画像ファイルパス」の値は、帳票画像データが格納されている場所を示す情報である。項目「認識結果ファイルパス」の値は、帳票画像を認識した結果の認識結果データが格納されている場所を示す情報である。
【0134】
項目「ステータス」の値は、帳票画像の認識の進捗を示す。言い換えれば、項目「ステータス」の値は、ジョブの状態を示す。本実施形態では、項目「ステータス」の値として、未処理状態、下書き保存状態、確定済み状態、外部出力済み状態の4つを例示しているが、これに限定されるものではない。各状態は、以下の通りである。
【0135】
・未処理状態(状態1)は、帳票認識によって認識結果データが取得された直後であり、認識結果の確認等が行われていない状態である。
【0136】
・下書き保存状態(状態2)は、認識結果データの確認等の作業の途中等であり、認識結果データが確定される前の状態である。
【0137】
・確定済み状態(状態3)は、認識結果データの確認等の作業が完了し、確定された情報として認識結果データベース260へ格納された状態である。
【0138】
・外部出力済み状態(状態4)は、帳票認識システム100と連携する会計システム等への認識結果データの出力が完了した状態。
【0139】
項目「ユーザーID」の値は、帳票認識システム100にログインしたユーザーを特定するための識別情報である。
【0140】
本実施形態のサーバ装置200は、画像形成装置300から帳票画像データを受信すると、ジョブリスト生成部272により、ジョブIDを付与し、認証情報として取得したユーザーIDを対応付けて、ジョブリスト101にレコードを追加する。そして、ジョブリスト生成部272は、帳票画像データが帳票画像データベース230に格納されると、この格納先を示す情報を項目「画像ファイルパス」の値として、追加する。
【0141】
更に、ジョブリスト生成部272は、認識結果データが認識結果データベース260に格納されると、項目「請求元」に発行元を追加し、この格納先を示す情報を項目「認識結果ファイルパス」の値として追加し、項目「ステータス」の値を確定済み状態とする。
【0142】
本実施形態では、端末装置400が、例えば、ジョブリスト生成部272によって生成されたジョブリストを表示しても良い。この場合、ユーザーは、ジョブリストに基づいて表示されたジョブリスト画面を介して、帳票画像の認識の進捗を確認することができる。
【0143】
<帳票の認識>
次に、図13を参照して、本実施形態の帳票認識部270の処理について説明する。図13は、帳票認識部270の処理を説明する第一のフローチャートである。図13は、図11AのステップS1113の処理の詳細を示している。また、図13は、複数の帳票画像データを画像形成装置300から受け取った場合の処理を示している。
【0144】
画像データ取得部273は帳票の認識結果データが生成されていない帳票画像データを帳票画像データベース230から取得する(S1300)。
【0145】
前処理部274は、画像データ取得部273が取得した帳票画像データに対して、行と列を認識する処理を行う(S1301)。ここでの認識は、横線と縦線、色の違う領域等に基づくラフなものでよい。
【0146】
前処理部274は、画像データ取得部273が取得した帳票画像データに対して、帳票認識を行うための前処理を行う(ステップS1302)。前処理とは、具体的には、例えば、二値化、ノイズ除去、帳票画像の向きの天地合わせ、等の補正処理である。
【0147】
続いて、帳票認識部270は、文字認識部275により、帳票画像から、文字が形成されている領域(以下、文字フィールド)の中の文字を切り取り、文字認識する(ステップS1303)。このとき、文字認識部275は、切り出した文字の位置を示す座標も取得する。
【0148】
続いて、帳票認識部270は、文字認識部275により認識された各文字列の位置関係に基づいて読取結果データを生成して、保持する(ステップS1304)。具体的に、帳票認識部270は、認識された各文字の座標に基づいて、互いの距離が予め設定された閾値以内の文字を1つの文字列として認識し、文字列と、文字列が形成された領域の位置を示す座標などの情報とを対応付けて読取結果データを生成する。
【0149】
続いて、帳票認識部270は、定義特定部276により、読取結果データに含まれる請求元を特定する情報(以下、請求元情報)と、業種判定データベース240とを参照し、請求元の業種を特定する(ステップS1305)。
【0150】
続いて、帳票認識部270は、定義特定部276により、明細定義データベース250に、請求元情報と対応する個社明細定義情報251が存在するか否かを判定する(ステップS1306)。
【0151】
ステップS1306において、個社明細定義情報251が存在する場合、帳票認識部270は、項目抽出部277により、個社明細定義情報251に基づき明細情報を抽出し(ステップS1307)、後述するステップS1311へ進む。ステップS1307の処理の詳細は後述する。
【0152】
ステップS1306において、個社明細定義情報251が存在しない場合、定義特定部276は、明細定義データベース250に、ステップS1305で特定された業種と対応する業種明細定義情報252が存在するか否かを判定する(ステップS1308)。
【0153】
ステップS1307において、業種明細定義情報252が存在する場合、帳票認識部270は、項目抽出部277により、業種明細定義情報252に基づき明細情報を抽出し(ステップS1309)、後述するステップS1311へ進む。ステップS1309の処理の詳細は後述する。
【0154】
ステップS1308において、業種明細定義情報252が存在しない場合、帳票認識部270は、項目抽出部277により、汎用明細定義情報253に基づき明細情報を抽出し(ステップS1310)、後述するステップS1311へ進む。ステップS1310の処理の詳細は後述する。
【0155】
帳票認識部270は、明細情報の抽出に成功したか否かを判定する(ステップS1311)。具体的には、帳票認識部270は、ステップS1307、ステップS1309、ステップS1310のいずれかの処理で抽出された明細情報が存在するか否かを判定している。
【0156】
ステップS1311において、明細情報の抽出に失敗した場合、帳票認識部270は、端末装置400又は画像形成装置300に対してエラーを通知し(ステップS1312)、処理を終了する。
【0157】
ステップS1311において、明細情報の抽出に成功した場合、帳票認識部270は、項目抽出部277により、抽出された明細情報をマージした認識結果データを生成し、認識結果データベース260に格納する(ステップS1313)。
【0158】
続いて、帳票認識部270は、ジョブリスト生成部272により、認識結果データの格納先をジョブリスト101に登録する(ステップS1314)。
【0159】
続いて、帳票認識部270は、表示画面生成部278により、認識結果データを用いて生成された認識結果確認画面を作成する。端末装置400の通信部433が認識結果確認画面の画面情報を受信し、表示制御部432が認識結果確認画面を表示し(ステップS1315)、処理を終了する。
【0160】
なお、図13の例では、認識結果データを表示させる処理までを一連の動作として説明したが、これに限定されない。帳票認識部270は、端末装置400から、認識結果データの閲覧要求を受け付けてから、認識結果データを表示させても良い。
【0161】
<明細情報の抽出>
次に、図14図15を参照して、本実施形態の項目抽出部277による明細情報の抽出について説明する。図14は、帳票認識部270の処理を説明する第二のフローチャートである。図15は、図13のステップS1307の処理の詳細を示している。
【0162】
本実施形態の帳票認識部270において、項目抽出部277は、読取結果データが保持されると、各文字の座標値を取得する(ステップS1401)。続いて、項目抽出部277は抽出した文字列(ステップS1304で抽出した)とその座標値を取得する(ステップS1402)。
【0163】
続いて、項目抽出部277は、取得した各文字列で、個社明細定義情報251に含まれる明細項目名を検索し(ステップS1403)、検索結果が存在するか否かを判定する(ステップS1404)。具体的には、項目抽出部277は、個社明細定義情報251に、文字列と一致する明細項目名又はキーワードが存在するか否かを判定している。
【0164】
ステップS1404において、該当する明細項目名又はキーワードが存在しない場合、帳票認識部270は、処理を終了する。また、ステップS1404において、該当する明細項目名又はキーワードが存在する場合、検索に適合した明細項目名又はキーワードの下に、縦方向に並ぶ列から項目値を抽出し(ステップS1405)、処理を終了する。
【0165】
なお、図13のステップS1309の処理は、図14のステップS1403において、参照する明細定義情報が業種明細定義情報252である点以外は、図14の処理と同様であるから、説明を省略する。
【0166】
図15は、帳票認識部270の処理を説明する第三のフローチャートである。図15は、図13のステップS1310の処理の詳細を示している。言い換えれば、図15は、請求元と対応する個社明細定義情報251も業種明細定義情報252も存在しない場合に、汎用明細定義情報253を参照して明細情報を抽出する処理を示している。
【0167】
図15のステップS1501とステップS1502の処理は、図14のステップS1401とステップS1402の処理と同様であるから、説明を省略する。
【0168】
項目抽出部277は、文字列と座標値を取得すると、帳票画像データに縦罫(縦線)が存在するか否かを判定する(ステップS1503)。ステップS1503において、縦罫が存在しない場合、項目抽出部277は、後述するステップS1510へ進む。なお、直線(縦罫)の検出方法にはハフ変換等の周知の方法がある。
【0169】
ステップS1503において、縦罫が存在する場合、項目抽出部277は、縦罫の各セルの座標値を抽出する(ステップS1504)。なお、このとき、項目抽出部277は、各セルに、各セルを識別する識別情報(ID)を付与しても良い。また、当該識別情報は、例えば、表の列を特定する列ID及び表の行を特定する行IDとして付与されても良い。このように、列IDと行IDとを付与すれば、列IDと行IDとの組み合わせにより、セルが特定される。
【0170】
続いて、項目抽出部277は、表の各セルに含まれる文字列を特定し、セルの座標値と対応付けて保持する(ステップS1505)。
【0171】
続いて、項目抽出部277は、表の先頭行の各セルに含まれる文字列(列見出し)を特定する(ステップS1506)。
【0172】
続いて、項目抽出部277は、先頭行の各セルに含まれる文字列(列見出し)で、汎用明細定義情報253を検索する(ステップS1507)。
【0173】
続いて、項目抽出部277は、汎用明細定義情報253に、先頭行の各セルに含まれる文字列(列見出し)と一致する明細項目名又はキーワードが存在するか否かを判定する(ステップS1508)。
【0174】
ステップS1508の判断がNoの場合、項目抽出部277は、処理を終了する。
【0175】
ステップS1508の判断がYesの場合、項目抽出部277は、先頭行の各セルに含まれる文字列を含む列から明細項目の項目値を抽出し(ステップS1509)、処理を終了する。
【0176】
ステップS1503において、縦罫が存在しない場合、帳票認識部270は帳票画像における明細部の領域を特定する(ステップS1510)。具体的には、帳票認識部270は、例えば、文字列が縦方向に並んでいる領域を、明細部の領域と特定して良い。
【0177】
続いて、帳票認識部270は、項目抽出部277により、明細部に特定された領域における一行目の文字列を特定し、特定した文字列の座標値と対応付けて保持する(ステップS1511)。特定された領域における一行目の文字列とは、特定された領域において、一番上に位置する文字列である。
【0178】
続いて、項目抽出部277は、ステップS1511で特定した文字列で、汎用明細定義情報253を検索する(ステップS1512)。続いて、項目抽出部277は、汎用明細定義情報253に、特定した文字列と一致する明細項目名又はキーワードが存在するか否かを判定する(ステップS1513)。
【0179】
ステップS1513の判断がNoの場合、帳票認識部270は、処理を終了する。
【0180】
ステップS1513の判断がYesの場合、項目抽出部277は、ステップS1511で特定した文字列の座標値から、文字列が外接する領域の幅を取得し、この幅において縦方向に並んでいる文字列を明細項目の項目値として抽出し(ステップS1514)、処理を終了する。
【0181】
なお、図15の例では、帳票画像に縦罫が存在する場合には、セルの座標値を抽出するものとしたが、縦罫の代わりに罫線(横線)を用いても良い。その場合、帳票認識部270は、帳票画像に横線が存在するか否かを判定し、横線が存在する場合には、横線と横線の間に位置する文字列と、文字列の座標を特定すれば良い。
【0182】
そして、帳票認識部270は、横線と横線の間の文字列のうち、一番左の文字列と一致する明細項目名又はキーワードが汎用明細定義情報253に存在する場合には、この横線と横線の間にある2番目以降の文字列を明細項目の項目値とすれば良い。
【0183】
<帳票を用いた明細情報の抽出>
次に、図16図18を参照して、帳票認識部270の処理について更に説明する。図16は、明細情報の抽出を説明する第一の図である。
【0184】
図16は、帳票画像データを説明する第一の図である。図16に示す請求書161には、請求元を特定する請求元情報161aと、明細項目毎に同じ形式のデータが縦方向に繰り返し印刷された明細部161bとが含まれる。図16に示す請求書161は、請求元情報161aは、請求元の名称であり、明細部161bは、表形式で記載されている。
【0185】
本実施形態では、請求書161を画像形成装置300で読み取って帳票画像データとし、帳票画像データに対して帳票認識部270の処理を実行することで、認識結果データが生成される。
【0186】
図17は、明細情報の抽出を説明する第二の図である。図17に示す情報171は、請求書161を示す帳票画像データに対し、文字認識部275による文字認識を行った結果である。
【0187】
情報171は、請求書161のうち、明細部161bから文字フィールドを切り取り、文字フィールドの中の文字を認識した結果と、文字の位置を示す座標とから抽出した例を示す。
【0188】
本実施形態の文字認識部275は、この情報171から、隣り合う位置にある文字同士をつなげて文字列(文字列)を認識する。具体的には、文字認識部275は、文字と文字との間の距離が、所定ピクセル以内である文字の組み合わせを、1つ単語として認識しても良い。
【0189】
図17に示す情報172は、文字認識部275により認識された文字列と、文字列の領域とを示す情報であり、文字認識部275による帳票画像の読取結果データである。
【0190】
また、文字認識部275は、帳票画像データから、縦線と横線で区切られた領域を1つのセルとして認識し、セル毎にセルを識別する識別情報(セルID)を付与する。
【0191】
図17に示す情報173は、明細部161bから認識されたセル毎の領域とセルIDとの対応付けを示す情報である。
【0192】
図17では、例えば、列見出し「品名」が認識された領域は、情報172において、X座標とY座標によって示される位置を基準として、高さと幅とから特定される。
【0193】
また、情報173において、列見出し「品名」が認識された領域は、セルID「2」に含まれることがわかる。したがって、列見出し「品名」は、明細部161bに含まれる列見出しとして、セルID「2」と対応付けられる。
【0194】
なお、情報173では、列見出し「品名」が認識された領域に対してセルIDを対応付けるものとしたが、これに限定されない。セルIDは、行見出しが縦方向に並ぶ列を特定する行IDと、列見出しが横方向に並ぶ列IDとによって特定されても良い。
【0195】
本実施形態の帳票認識部270は、このようにして、帳票画像データから、文字列とセルとを対応付ける。
【0196】
図18に示す明細情報174は、請求書161と対応する読取結果データに基づき生成された、明細部161bの明細情報を示す第三の図である。したがって、図18に示す明細情報174は、帳票画像データ全体の認識結果データの一部である。
【0197】
図18に示す明細情報174は、項目抽出部277によって生成されるものであり、情報の項目として、列ID、列見出し、列の座標、行ID、項目値、明細項目名とを有する。
【0198】
項目「列ID」の値は、明細部161b(表)に含まれる列を特定する識別情報であり、項目「列見出し」の値は、表の一番上の行の各セル内の列見出しである。項目「列の座標」の値は、列の座標を示す。なお、本実施形態では、列の座標を、帳票画像における明細の列の左上の点の座標値と右下の点の座標値とする。
【0199】
項目「行ID」の値は、行を特定する識別情報であり、項目「項目値」の値は、明細項目と対応する項目値を示す。
【0200】
項目「明細項目名」の値は、対応する明細項目名と、項目名の位置を示す座標とが、個社明細定義情報251においてどの項目に対応付けられるかを示す。項目名の位置を示す座標とは、例えば、列の座標と行IDとの組み合わせ等によって示される。
【0201】
明細情報174では、列見出しである「伝票日付」に項目「明細項目名」の値である「日付」が対応付けられている。また、列見出しである「伝票日付」に列の座標と行IDとが対応付けられている。
【0202】
ユーザーが個社明細定義情報251を更新すると判断しその操作を行うと、「伝票日付」の列の座標、行IDに基づいて、個社明細定義情報251の「日付」に、キーワード:「伝票日付」、キーワード座標(情報172の列見出しが品名の1レコード分)、セル座標(情報173の品名に対するセルの1レコード分)、列座標(セル座標×行数分の座標)が登録される。
【0203】
なお、図18の明細情報174の例では、情報の項目として、列の座標、列ID、行IDを含むものとしたが、これに限定されない。明細情報154は、情報の項目として、明細項目名と、項目値とが含まれていれば良く、それ以外の項目は、明細情報174に含まれなくても良い。
【0204】
また、本実施形態では、認識結果確認画面に明細情報174を表示させる場合には、表示画面生成部278が明細項目名と項目値のみを表示させれば良い。
【0205】
<認識結果の表示例>
次に、図19を参照して、帳票画像データの認識結果の表示例について説明する。図19は、認識結果確認画面501を示す図である。認識結果確認画面501は、例えば、図11BのステップS1125で端末装置400に表示される。
【0206】
認識結果確認画面501は、表示欄502、表示欄503と、表示部品508、509とを含む。表示欄502には、帳票画像データに基づく帳票画像が表示される。図19の例では、帳票が請求書であり、帳票画像における明細部を示す領域504が含まれる。
【0207】
表示欄503は、表示欄502に表示された帳票画像を示す帳票画像データに対して帳票認識部270による帳票認識を行った結果の認識結果データが表示される。
【0208】
表示欄503は、表示欄505、506、507を含む。表示欄505には、ジョブリスト101の項目「ステータス」の値が表示される。表示欄506には、請求元情報が表示される。請求元情報は、認識結果データの一部である。
【0209】
表示欄507は、明細情報が表示される。具体的には、表示欄507には、明細情報に含まれる明細項目の値の一覧が表示される。表示欄507は抽出された各行の明細項目を繰り返し表示する。図19では2行分が表示されているが、スクロール等で他の行の明細項目を表示できる。表示欄507は、表示欄511、513、514、515、516を含む。
【0210】
表示欄511は、帳票画像における明細部を示す領域504に表示された、明細項目名「品名」の明細項目の値が表示される。表示欄513は、領域504に表示された、明細項目名「金額」の明細項目の値が表示される。
【0211】
表示欄514は、領域504に表示された、明細項目名「単価」の明細項目の値が表示される。表示欄515は、領域504に表示された、明細項目名「数量」の明細項目の値が表示される。表示欄516は、領域504に表示された、明細項目名「伝票No」の明細項目の値が表示される。
【0212】
本実施形態では、このように、端末装置400が、帳票画像の明細部における明細項目名のそれぞれに対応する項目から項目値を抽出して、表示欄511、513、514、515、516に表示する。すなわち、これらの明細項目名に対応する項目は、抽出の対象となる項目(抽出対象項目)である。また、抽出対象項目は、固定に決められた項目であってもよいし、ユーザーにより変更できるようにしてもよい。
【0213】
明細抽出ボタン510は、図11BのステップS1127で、高さが異なる行を含む帳票の行区切りを正しく認識するために、ユーザーが帳票認識の要求を行うためのボタンである。
【0214】
表示部品508は、ジョブリスト101のステータスの値を、未処理状態から下書き保存状態とするための表示部品である。表示部品508が操作されると、表示欄505は、「未処理」から「下書き保存」に変化する。
【0215】
表示部品509は、ジョブリスト101のステータスの値を、確定済み状態とするための表示部品である。図19の例では、帳票画像データからの認識結果データの抽出が成功したため、認識結果データの修正は行われていない。したがって、図19の例では、表示部品509が操作されると、ジョブリスト101のステータスの値が、確定済み状態とされ、個社明細定義情報251の生成は行われない。
【0216】
<認識結果の調整>
上記のように、個社明細定義情報251を使用した帳票の認識でも、行区切りを正しく認識できない場合がある。このような場合、ユーザーは行を調整して(ユーザーによる調整は必須でない)、帳票認識の指示を行う。
【0217】
図20は、行の誤認識が生じた認識結果の一例である。なお、説明の便宜上、図20では領域504に表示された帳票画像データのみを示す。また説明のため、右橋に行番号を示した。図20(a)では、一例として、2行ごとに行が認識されている。認識結果は、行と列の区切りが分かるように行と列の違いを色等で区別する半透明部品540が帳票画像データに重ねて提示される。図20では行と列の区切りを点線が示している。ユーザーは半透明部品540をマウス等でドラッグすることで、各行を同じ高さに揃えたり、行を追加したり、削除したりすることができる。
【0218】
ここで、ユーザーは1行目と4~8行目を1行ごとに区切りたいと考えており、2,3行目を連結したいと考えている。そこで、ユーザーは半透明部品540を操作して、図20(b)に示すように、帳票画像データを等間隔に8行に区切った。この状態であれば、サーバ装置200が2,3行目を連結できる。この処理は、図11BのステップS1129の処理に相当する。
【0219】
なお、本実施形態では、列の区切りの調整について特に説明しないが、ユーザーは列についても調整できる。半透明部品540は、個社明細定義情報251、業種明細定義情報252、汎用明細定義情報253に登録されているキーワード521~526を、帳票画像データの各列に対応付けて表示する。図20(a)では、列見出しの更に上方にキーワード521~526が表示されている。表示位置は一例に過ぎない。ユーザーはキーワード521~526と列の対応が間違っている場合、半透明部品540を列ごとに移動でき、列見出しとキーワード521~526の対応を調整できる。例えば、数量というキーワード524に対し、帳票画像データの「数量」「単位」が対応しているが、「単位」を除外することができる。
【0220】
図21は、帳票認識部270が複数の行を連結する手順を説明するフローチャート図の一例である。
【0221】
まず、帳票認識部270は、金額の項目、又は、数量と単価の項目に項目値が入っている行を抽出してラベルAを設定する(S1129-1)。ラベルは後の処理で行を区別する必要があるために便宜上、設定される行の種類情報である。なお、ラベルAが設定された行は、第一の行の一例である。
【0222】
また、金額の項目が着目されるのは、帳票では金額が処理の対象となるためである。また、数量と単価が着目されるのは、帳票に金額が記載されていなくても、数量と単価が記載されている場合があるためである。
【0223】
なお、金額などの項目が指定されていない場合は金額の項目に着目しない。また、金額はユーザーが設定した項目であるが、ユーザーが別の項目を設定した場合は、帳票認識部270は該項目に着目する。また、金額、数量又は単価のいずれも設定されていない場合、全ての行にラベルAを設定する。
【0224】
帳票認識部270は、ラベルAが設定された行に後述するラベルDの行を連結する。このため、帳票認識部270は、以下のように各行にラベルを設定する。
・ラベルBは、「消費税」or「小計」or「合計」or「伝票計」の文字(除外用語に対応)がいずれかの項目に入っている行である。「消費税」、「小計」、「合計」、又は「伝票計」は、品名として使用されない用語である。なお、ラベルBが設定された行は、第三の行の一例である。また、除外用語はユーザーが適宜設定でき、本実施例の除外用語は一例に過ぎない。
・ラベルCは、どの項目にも値が存在しない行である。なお、ラベルCが設定された行は、第四の行の一例である。
・ラベルDは、その他の行である。なお、ラベルDが設定された行は、第二の行の一例である。
【0225】
このため、帳票認識部270は、「消費税」「小計」「合計」「伝票計」のいずれかの文字が入っている行のラベルをA→Bとする(S1129-2)。
【0226】
帳票認識部270は、どの項目にも値が存在しない行にラベルCを設定する(S1129-3)。
【0227】
帳票認識部270は、その他の行にラベルDを設定する(S1129-4)。なお、以下の処理については、図22にて補足して説明するので参照されたい。
【0228】
次に、帳票認識部270は、ラベルDの行の上下(双方)の行に、ラベルAが設定されているか否かを判定する(S1129-5)。ラベルDの行の上下の行に更にラベルDの行がある場合は、最も端のラベルDの行について判定する。
【0229】
ステップS1129-5の判定がNoの場合、帳票認識部270は、ラベルDの行の上下片方の行にラベルAが設定されているか否かを判定する(S1129-6)。
【0230】
ステップS1129-6の判定がYesの場合、帳票認識部270は、ラベルAの行にラベルDの行を連結する(S1129-7)。ステップS1129-6の判定がNoの場合、帳票認識部270は、ラベルDをどの行にも連結しない。
【0231】
ステップS1129-5の判定がYesの場合、帳票認識部270は、帳票(明細)の中で最初に登場するラベルAの行の上の行がなし(行そのものが存在しない。帳票画像データの範囲外。)、ラベルB、又はラベルCであるか否かを判定する(S1129-8)。
【0232】
ステップS1129-8の判定がYesの場合、帳票認識部270は、ラベルDの行の上にあるラベルAの行を連結する(S1129-9)。
【0233】
ステップS1129-8の判定がNoの場合、ラベルAの行の上の行がラベルDであるが、帳票認識部270は、ラベルDの行の下にあるラベルAの行にラベルDの行を連結する(S1129-10)。
【0234】
帳票認識部270は、ラベルDにラベルAを連結した結果、「数量」「単価」を複数行にあるか否かを判定する(S1129-11)。
【0235】
帳票認識部270は、ラベルAの行に近い方の「数量」「単価」を採用する(S1129-12)。
【0236】
図22は、ラベルAとラベルDの行の連結を模式的に説明する図である。まず、図22(a)は、ラベルDの行の上下(双方)の行にラベルAの行が存在する場合を示す。この場合、図21のフローチャート図で説明したように、ラベルDの上側に隣接した行のラベルAの行の上の行が、なし、ラベルB、又はラベルCであるか否か判定される(S1129-8)。
【0237】
図22(b)は、なしの場合を示す。この場合、帳票認識部270は、ラベルDの上側に隣接した行のラベルAとラベルDの行を連結する。
【0238】
図22(c)は、ラベルDの行の上にある行がラベルDの場合を示す。この場合、帳票認識部270は、上下にラベルAがあるラベルD、ラベルDの下側に隣接した行のラベルAの行を連結する。ラベルBの行がラベルAの下にある場合、ラベルBも連結する。
【0239】
なお、図23のように、ラベルDの上側にラベルDが隣接して、上下にラベルAの行が存在する場合がある。ラベルDの行の数は2つとは限らない。この場合もラベルDの行の上下(双方)の行にラベルAが設定されていると判定される。この場合、最も外側のラベルAの上側の行が、なし、ラベルB、又はラベルCであるか判定される(S1129-8)。
【0240】
図24は、図21の連結処理により帳票画像データの各行に設定されたラベルA~Dを示す。図24に示すように、3行目にラベルDが設定されている。ラベルDが設定された行の上の行だけラベルがAなので、帳票認識部270は、2行目と3行目を連結する。したがって、帳票認識部270は、2行に渡っている「xyzデータ移行料」と「[貴社注文No.123456789]」を1行の品名として抽出できる。
【0241】
なお、このようなラベルAの行にラベルDの行を連結するという連結結果を、サーバ装置200は保存しない。すなわち、サーバ装置200は、個社明細定義情報251にラベルAの行とラベルDを連結した状態でセルや列の座標を保存しない。これは、ラベルDの行がどこに存在するかは帳票で決まるというよりも記載内容で決まるため、保存するメリットが少ないためである。したがって、図11BのステップS1138で登録される個社明細定義情報251は、S1126で行と列が調整された状態のものである。
【0242】
図25は、図21の連結処理により連結された品名を説明する図である。なお、図25は、認識結果確認画面501のうち表示欄507を示す。図25(a)は連結処理の前の表示欄507を示し、図25(b)は連結処理の後の表示欄507を示す。連結処理の前は、表示欄511の品名が「xyzデータ移行料」と「[貴社注文No.:123456789]」に分かれているが、連結処理により、品名が「xyzデータ移行料[貴社注文No.:123456789]」に連結された。
【0243】
<主な効果>
以上説明したように、本実施形態のサーバ装置200は、高さが異なる行が存在したり、複数の行に記載されたりした項目値を連結して抽出できる。
【実施例0244】
本実施例では、仮想罫線と論理罫線を使用して、高さが異なる行が存在したり、複数の行に渡って項目値が記載されたりしても、帳票における行の区切りを正しく反映して行を抽出するサーバ装置200について説明する。本実施例では、帳票における行の区切りを正しく認識するので、実施例1で連結した場合と同様の結果が得られる。
【0245】
また、本実施例の行の区切りの認識処理は、実施例1とは全く独立に実施されてもよいし、実施例1の連結処理の前、又は、後に実施されてもよい。
【0246】
本実施例においては、上記の実施例にて説明した図2図3のハードウェア構成図、及び、図9,図10に示した機能ブロック図を援用できるものとして説明する。
【0247】
<仮想罫線と論理罫線を使用した行の区切りの認識>
まず、図26,図27を参照して、本実施例における行の区切りの認識方法の概略を説明する。図26は、比較される行の区切りの認識方法を示し、図27は、本実施例における行の区切りの認識方法の概略を示す。
【0248】
図26(a)の帳票Aに対する行と列の配置(ユーザーの調整があってもなくてもよい)に基づいてサーバ装置200が個社明細定義情報251を保存したとする。サーバ装置200が図26(b)の帳票Bから行を抽出すると、1つ目の商品名が「○○○△△△」、2つ目の商品名が「XXX」となってしまい、帳票における正しい行の区切りとは異なる行が抽出されてしまう。
【0249】
そこで、図27に示すように、サーバ装置200は、仮想罫線と論理罫線を用いて、帳票における正しい行の区切りで行を抽出する。なお、図27の帳票画像データは、認識結果確認画面501に表示されている。
【0250】
まず、図27(a)の帳票Aに示すように、ユーザーがどの列を行の区切りとして利用するのかを指定する。ユーザーは、例えば、マウスで列見出しの幅をドラッグする。これにより、矢印530が描画され、ユーザーが指定した列が明らかになる。ここでは行の区切りとして「金額」の列が選択されたものとする。サーバ装置200は、金額の列において、項目値の上端を行の上端として抽出する。
【0251】
図27(b)の帳票Bがスキャンされた場合も、サーバ装置200は、「金額」の列が選択されたという情報を利用して、金額の列において、項目値の上端を行の上端として抽出する。こうすることで、商品名が1行でも複数行でも行の区切りを正しく判定できる。このように抽出された罫線を「論理罫線531」という。
【0252】
しかしながら、図27(a)、図27(b)の方法だけで行の区切りを判定すると以下のような帳票で不都合がある。
【0253】
図27(c)の帳票Cでは、1つめの金額の「1000」に対応する商品名が「△△△」のみとなってしまい、「○○○」が商品名に含まれなくなってしまう。
【0254】
そこで、図27(d)に示すように、ユーザーが明細領域内を等間隔に区切った「仮想罫線532」を指定する。ユーザーが指定しなくても行が等間隔に認識される場合もある。図27(d)では、仮想罫線532が3本表示されているが、上から2本目と3本目の仮想罫線532に論理罫線531が重なっている。サーバ装置200は、論理罫線531と仮想罫線532が重なっている場合に該罫線が正しい行区切りと判定する。
【0255】
このように、本実施形態の行の認識方法では、ユーザーがどの列を行の区切りとして利用するのかという情報と、論理罫線531(第二の罫線の一例)と、仮想罫線532(第一の罫線の一例)とにより、帳票における行の区切りを正しく反映して行を抽出できる。
【0256】
<帳票認識システムの動作又は処理>
続いて、図28を参照して、帳票認識システム100の動作又は処理について説明する。図28の処理は、図11BのステップS1125~S1131に代えて、又は、S1131に続いて実行される。
【0257】
図28は、帳票認識システムの動作を説明するシーケンス図である。
【0258】
ユーザーは端末装置400に表示された認識結果確認画面501が有する領域504において、半透明部品540を移動、変形等して、明細領域を指定する(S2101)。ユーザーは帳票画像データの全体を過不足なくカバーするように半透明部品540を帳票画像データに重ねる。操作受付部431が操作を受け付ける。
【0259】
次に、ユーザーは帳票画像を何行で区切るかを指定する(S2102)。ユーザーが単に数値を入力する。この行数は、空白行を含む行数でよい。操作受付部431が操作を受け付ける。あるいは、ユーザーが行数を指定しなくてもよい。図13のステップS1301で行と列が認識されているので、帳票認識部270は、これを利用して仮想罫線532を描画できる。
【0260】
次に、端末装置400の通信部433が、行数を指定して仮想罫線532の表示要求をサーバ装置200に送信する(S2103)。仮想罫線532は、端末装置400が行数で帳票画像の高さを割って等間隔に表示してもよい。
【0261】
サーバ装置200の通信部298は仮想罫線532の表示要求を受信し、帳票認識部270が仮想罫線532を描画する(S2104)。描画とは帳票画像データにおける仮想罫線532の位置を決定することである。帳票認識部270は、帳票画像データの高さを行数で割って、等間隔な仮想罫線532を描画する。ユーザーが行数を指定しない場合、帳票認識部270は、図13のステップS1301で認識された行のうち最も高さが低い行の高さで、等間隔な仮想罫線532を描画する。
【0262】
サーバ装置200の298は、仮想罫線532の位置情報を端末装置400に送信する(S2105)。端末装置400の通信部433は仮想罫線532の位置情報を受信し、表示制御部432が領域504の帳票画像データに重ねて仮想罫線532を表示する(S2106)。ユーザーは、仮想罫線532に誤りがあれば適宜修正する。
【0263】
次に、ユーザーは、行区切りに使用する列をマウスなどで指定する(S2107)。例えば、行区切りに使用する列は金額の列である。金額で行の品名等が区切られる場合が多いためである。操作受付部431が操作を受け付ける。なお、列見出しの幅がドラッグされたことで、列ID、列名、又は、列の座標の少なくともいずれかが特定される。
【0264】
端末装置400の通信部433が、列ID、列名、又は、列の座標などを指定して論理罫線531の表示要求をサーバ装置200に送信する(S2108)。
【0265】
サーバ装置200の通信部298は論理罫線531の表示要求を受信し、帳票認識部270が論理罫線531を描画する(S2109)。すなわち、帳票認識部270は、指定された列にある項目値の上端に論理罫線531を描画する。
【0266】
サーバ装置200の298は、論理罫線531の位置情報を端末装置400に送信する(S2110)。端末装置400の通信部433は論理罫線531の位置情報を受信し、表示制御部432が領域504の帳票画像データに重ねて表示する(S2111)。表示制御部432は、仮想罫線532と論理罫線531の色を変えて表示するため、ユーザーは論理罫線531と仮想罫線532を区別できる。ユーザーは、論理罫線531に誤りがあれば適宜修正する。
【0267】
次に、ユーザーは、仮想罫線532と論理罫線531に基づく帳票の認識(項目値の抽出)を端末装置400に指示する(S2112)。なお、ユーザーは、どの項目の項目値を連結するかを指示してよい。ユーザーが指示しない場合、品名が連結される。ユーザーが明細抽出ボタン510を押下する。操作受付部431が操作を受け付ける。
【0268】
端末装置400の通信部433が、指定された項目、仮想罫線532、論理罫線531を指定して項目値の抽出要求をサーバ装置200に送信する(S2113)。
【0269】
サーバ装置200の通信部298は項目値の抽出要求を受信し、帳票認識部270が仮想罫線532と論理罫線531が重なった行区切りと行区切りの間の文字列を項目値と判定する(S2114)。
【0270】
サーバ装置200の通信部298は、項目と項目値を対応付けた認識結果を端末装置400に送信する(S2115)。端末装置400の通信部433は認識結果を受信し、表示制御部432が表示欄507の明細情報に表示する(S2116)。
【0271】
図29は、図28の連結処理により連結された品名を説明する図である。なお、図29では、主に図25との相違を説明する。認識結果確認画面501のうち表示欄507を示す。図29(a)は論理罫線531のみにより判断された行区切りによる表示欄507を示し、図29(b)は論理罫線531と仮想罫線532により判断された行区切りによる表示欄507を示す。論理罫線531のみでは、表示欄511の品名が「○○○」と「△△△」に分かれているが、論理罫線531と仮想罫線532により、品名が「○○○△△△」に連結された。
【0272】
このように、例えば、1行の金額に対し、品名が2行以上に渡っていても、2行以上の品名の列の文字列が連結されて、認識結果確認画面501の表示欄511(品名が表示される)に表示される。
【0273】
<指定された項目である「金額」の列に別の文字列もある段組み帳票>
図30を参照して、指定された項目である「金額」の列に別の文字列もある段組み帳票について説明する。図30は、金額の列に消費税も表示される帳票の一部である。図30の帳票のように、「金額」の列に他の情報(例えば消費税)も記載されているような段組み帳票の場合、「金額」の列にある文字の上端で論理罫線531が描画されると、金額と消費税の行が別の行として抽出される。
【0274】
そこで、段組み帳票に関しては、ユーザーが行区切りに使用する列をマウスなどで指定する際、論理罫線531の描画を何行飛ばしにするか(スキップ数ごとに)を設定する。例えば、上記の列を指定する矢印530をユーザーがマウスで右クリックすると、何行飛ばしにするかを設定するダイアログが表示される。図30の例では、1行飛ばしでよいので、ユーザーが1行を入力する。
【0275】
図31は、ユーザーが論理罫線531の行の区切りを「金額」の列、1行飛ばしを指定した場合の段組み帳票の論理罫線531の描画例を示す。図31では、金額(及び消費税)と、品名とが正しく対応付けて抽出される。
【0276】
<主な効果>
本実施例によれば、ユーザーがどの列を行の区切りとして利用するのかという情報と、論理罫線531と、仮想罫線532とにより、帳票における行の区切りを正しく反映して行を抽出できる。
【0277】
<その他の適用例>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【0278】
例えば、本実施形態では、画像形成装置300とサーバ装置200とが通信して、サーバ装置200が帳票認識を行ったが、画像形成装置300が単体で帳票認識を行ってもよい。また、本実施形態では、サーバ装置200が帳票認識を行った後、端末装置400が認識結果確認画面501を表示したが、画像形成装置300が認識結果確認画面501を表示してもよい。
【0279】
また、画像形成装置300の代わりに、PCに接続されたスキャナ装置がスキャンして、PCが帳票画像データをサーバ装置200に送信してもよい。この場合、PCが端末装置400の代わりになる。
また、本実施形態では、品名の項目値が連結されたが、どの項目の項目値を連結するかは、ユーザーが設定できてよい。また、複数の項目の項目値が連結されてもよい。
【0280】
また、図9などの構成例は、サーバ装置200による処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。サーバ装置200の処理は、処理内容に応じて更に多くの処理単位に分割することもできる。また、1つの処理単位が更に多くの処理を含むように分割することもできる。
【0281】
また、実施例に記載された装置群は、本明細書に開示された実施形態を実施するための複数のコンピューティング環境のうちの1つを示すものにすぎない。ある実施形態では、サーバ装置200は、サーバクラスタといった複数のコンピューティングデバイスを含む。複数のコンピューティングデバイスは、ネットワークや共有メモリなどを含む任意のタイプの通信リンクを介して互いに通信するように構成されており、本明細書に開示された処理を実施する。
【0282】
更に、サーバ装置200は、開示された処理ステップ、例えば図11等を様々な組み合わせで共有するように構成できる。例えば、所定のユニットによって実行されるプロセスは、サーバ装置200が有する複数の情報処理装置によって実行され得る。また、サーバ装置200は、1つのサーバ装置にまとめられていても良いし、複数の装置に分けられていても良い。
【0283】
上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」は、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)、及び、従来の回路モジュール等のデバイスを含む。
【符号の説明】
【0284】
100 帳票認識システム
200 サーバ装置
400 端末装置
【先行技術文献】
【特許文献】
【0285】
【特許文献1】特開2021-140788号公報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31