JP2022092917A - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP2022092917A
JP2022092917A JP2020205910A JP2020205910A JP2022092917A JP 2022092917 A JP2022092917 A JP 2022092917A JP 2020205910 A JP2020205910 A JP 2020205910A JP 2020205910 A JP2020205910 A JP 2020205910A JP 2022092917 A JP2022092917 A JP 2022092917A
Authority
JP
Japan
Prior art keywords
character
block
character block
information processing
blocks
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.)
Pending
Application number
JP2020205910A
Other languages
English (en)
Inventor
悠貴 鳴海
Yuki NARUMI
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2020205910A priority Critical patent/JP2022092917A/ja
Priority to US17/540,888 priority patent/US11908215B2/en
Publication of JP2022092917A publication Critical patent/JP2022092917A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/22Character recognition characterised by the type of writing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/19007Matching; Proximity measures
    • G06V30/1908Region based matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/148Segmentation of character regions
    • G06V30/153Segmentation of character regions using recognition of characters or words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/18Extraction of features or characteristics of the image
    • G06V30/1801Detecting partial patterns, e.g. edges or contours, or configurations, e.g. loops, corners, strokes or intersections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/22Character recognition characterised by the type of writing
    • G06V30/222Character recognition characterised by the type of writing of characters separated by spaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/32Digital ink
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30176Document

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Character Input (AREA)

Abstract

【課題】不連続に記載された本来的に一続きの手書き文字についての文字認識精度を向上させることを目的とする。【解決手段】文書をスキャンして得られた文書画像から手書き文字に対応する画像領域を分離して、ベースラインが同じ文字から成る文字ブロックを抽出する。そして、複数の文字ブロックが抽出された場合、当該複数の文字ブロックの位置関係に基づいて、文字ブロック同士を結合して単一の文字ブロックを生成する。【選択図】図12

Description

本発明は、文書画像から文字情報を抽出する技術に関する。
従来、文書をスキャンして得られた文書画像内の文字を読み取って認識する技術がある。この技術は一般にOCR(Optical Character Recognition)と呼ばれる。OCR処理は通常、文書画像をOCRに適した画像に修正する画像前処理、文書画像から文字の記載領域(文字ブロック)を抽出する処理、抽出された文字ブロックに含まれる各文字をその読み順(並び方向)に沿って識別する文字認識処理とで構成される。そして、近年の文字認識処理は、文字認識精度を高めるべく、言語学習による意味解釈を行うなどして、文字ブロック内に存在する複数の文字における前後の接続関係から出現可能性の高い文字を判断する機能(言語モデル機能)を有するものもある。この場合、特定の項目に関するなど意味のまとまりを持つ文字ブロックの単位で入力することによって、さらに文字認識精度を高めることが期待できる。つまり、前段のブロック抽出において、文書内の項目等の単位で正確に文字ブロックを抽出することが極めて重要である。この点、例えば文字行認識(文字がどの行に属するかの判断)に関わる先行技術として、特許文献1及び特許文献2がある。
まず特許文献1は、文書画像の湾曲などに対して文字行認識の誤りを回避する技術を開示する。具体的には、隣接する二つの文字が同一行に属するかどうかを、隣接する二つの文字の外接矩形同士の縦方向の重なり度から判定し、それを繰り返すことで文字行認識を行う方法が開示されている。また、特許文献2は、歪みの大きい文字列(立体物への印字やプリンタ故障による印字のずれなど)に対して文字行認識を行う技術を開示する。隣接するどの文字が同一行に属するかを、文字の重なり度合いや特徴の類似度合いといった連結の強さで比較し、連結が強い方の候補行を選択する方法が開示されている。
特開平8-44819号公報 特開2014-228953号公報
一般的にアンケート用紙や申込用紙といった手書き文字の混在する文書の場合、手書き文字が不連続なベースラインで書かれていることが少なくない。これは、記入者が用紙内に設けられた記入欄等に記入する際、予め各文字の配置を考えてから書き始めるのではなく、書き進めながら、残りの空白とこれから記入したい文字とのバランスを考えつつその配置を決定することが多いためである。例えば、枠に印字されている文字を避けるためにベースラインの高さを途中で変えたり、枠内に書きたいことを収めるために途中で改行したりといった行動を一般的にしがちである。その結果、記入欄等の枠の中に記載された手書き文字については、不規則な改行やベースラインのずれによって、複数の文字ブロックに分離してしまうことになる。しかしながら、例えば「住所記入欄」のような特定の項目について記入された手書き文字については、本来的には一続きの文字列として扱うことが望ましい。不規則な改行やベースラインのずれによってバラバラになった文字ブロックに対してOCR処理を行った場合、左から右へといったリーディングオーダーに従う上述の言語モデル機能が上手く働かないなど、文字認識精度が低下してしまう虞があるためである。そして、上述のような人間の手書き時の特性に依って発生する不連続な文字列については、上記特許文献1や特許文献2の手法では対処することができない。
本発明は、上記実情に鑑みてなされるものであり、不連続に記載された本来的に一続きの手書き文字についての文字認識精度を向上させることを目的とする。
本開示に係る情報処理装置は、文書をスキャンして得られた文書画像から手書き文字の文字情報を取得するための情報処理装置であって、前記文書画像から、前記手書き文字に対応する第1の画像領域を分離する分離手段と、分離された前記第1の画像領域から、ベースラインが共通し近接する文字から成る文字ブロックを抽出する解析手段と、前記解析手段によって複数の文字ブロックが抽出された場合、当該複数の文字ブロックの位置関係に基づいて、文字ブロック同士を結合して単一の文字ブロックを生成する結合手段と、を備えたことを特徴とする。
本開示の技術によれば、不連続に記載された本来的に一続きの手書き文字についての文字認識精度を向上させることができる。
画像処理システムの全体構成を示す図 MFPのハードウェア構成を示すブロック図 MFP連携サーバ及びストレージサーバのハードウェア構成を示すブロック図 画像処理システムのソフトウェア構成を示すブロック図 画像処理システム全体の処理の流れを示すシーケンス図 メイン画面」と表記)の一例を示す図 ログイン画面の一例を示す図 スキャン設定画面の一例を示す図 (a)~(c)は、レスポンスの一例を示す図 ストレージ保存画面の一例を示す図 ファイル名設定画面の一例を示す図 画像解析処理の流れを示すフローチャート (a)~(c)は、手書き文字分離処理の説明図 (a)は手書き文字画像に対する領域解析処理の結果の一例を示す図、(b)は手書き文字ブロック結合処理の結果の一例を示す図 実施形態1に係る、手書き文字ブロック結合処理の詳細を示すフローチャート 原本画像における記入領域の一例を示す図 (a)は手書き文字画像に対する領域解析処理の結果の一例を示す図、(b)は手書き文字ブロック結合処理の結果の一例を示す図 実施形態2に係る、手書き文字ブロック結合処理の詳細を示すフローチャート (a)は手書き文字画像に対する領域解析処理の結果の一例を示す図、(b)は手書き文字ブロック結合処理の結果の一例を示す図 実施形態3に係る、手書き文字ブロック結合処理の詳細を示すフローチャート
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
[実施形態1]
<システム構成>
図1は、本実施形態に係る、画像処理システムの全体構成を示す図である。画像処理システムは、MFP(Multifunction Peripheral)110と、インターネット上でクラウドサービスを提供するサーバ装置120及び130とを含む。MFP110は、インターネットを介してサーバ装置120及び130と通信可能に接続されている。
MFP110は、スキャン機能を有する情報処理装置の一例である。MFP110は、スキャン機能に加え印刷機能やBOX保存機能といった複数の機能を有する複合機である。サーバ装置120及び130は、共にクラウドサービスを提供する情報処理装置の一例である。本実施形態のサーバ装置120は、MFP110から受け取ったスキャン画像に対し画像解析を行ったり、別のサービスを提供するサーバ装置130に対しMFP110からのリクエストを転送したりするクラウドサービスを提供する。以下、サーバ装置120が提供するクラウドサービスを「MFP連携サービス」と呼ぶこととする。サーバ装置130は、インターネットを介して送られてきたファイルを保存したり、モバイル端末(不図示)などのウェブブラウザからの要求に応じて保存ファイルを提供したりするクラウドサービス(以下、「ストレージサービス」と呼ぶ)を提供する。本実施形態では、MFP連携サーバを提供するサーバ装置120を「MFP連携サーバ」と呼び、ストレージサービスを提供するサーバ装置130を「ストレージサーバ」と呼ぶこととする。
図1に示す画像処理システム100の構成は一例であって、これに限定されない。例えば、MFP連携サーバ120の機能をMFP110が兼ね備えていてもよい。また、MFP連携サーバ120はインターネット上ではなくLAN(Local Area Network)経由でMFP110と接続されていてもよい。また、ストレージサーバ130を、メール配信サービスを行うメールサーバに置き換えて、文書のスキャン画像をメールに添付し送信する場面に適用してもよい。
<MFPのハードウェア構成>
図2は、MFP110のハードウェア構成を示すブロック図である。MFP110は、制御部210、操作部220、プリンタ部221、スキャナ部222、モデム223で構成される。制御部210は、以下の各部211~219で構成され、MFP110全体の動作を制御する。CPU211は、ROM212に記憶された様々な制御プログラム(後述のソフトウェア構成図で示す各種機能に対応するプログラム)を読み出して実行する。RAM213は、CPU211の主メモリ、ワークエリア等の一時記憶領域として用いられる。なお、本実施例では1つのCPU211が1つのメモリ(RAM213またはHDD214)を用いて後述のフローチャートに示す各処理を実行するものとするが、これに限定されない。例えば、複数のCPUや複数のRAMまたはHDDを協働させて各処理を実行してもよい。HDD214は、画像データや各種プログラムを記憶する大容量記憶部である。操作部I/F215は、操作部220と制御部210とを接続するインタフェースである。操作部220には、タッチパネルやキーボードなどが備えられており、ユーザによる操作/入力/指示を受け付ける。なお、タッチパネルへのタッチ操作には、人の指による操作やタッチペンによる操作が含まれる。プリンタI/F216は、プリンタ部221と制御部210とを接続するインタフェースである。印刷用の画像データはプリンタI/F216を介して制御部210からプリンタ部221へ転送され、紙等の記録媒体上に印刷される。スキャナI/F217は、スキャナ部222と制御部210とを接続するインタフェースである。スキャナ部222は、不図示の原稿台やADF(Auto Document Feeder)にセットされた原稿を光学的に読み取ってスキャン画像データを生成し、スキャナI/F217を介して制御部210に入力する。スキャナ部222で生成されたスキャン画像データは、プリンタ部221にて印刷したり(コピー出力)、HDD214に保存したり、LANを介してMFP連携サーバ120等の外部装置にファイル送信したりすることができる。モデムI/F218は、モデム223と制御部210とを接続するインタフェースである。モデム223は、PSTN上のファクシミリ装置(不図示)との間で画像データをファクシミリ通信する。ネットワークI/F219は、制御部210(MFP110)をLANに接続するインタフェースである。MFP110は、ネットワークI/F219を用いて、スキャン画像データをMFP連携サーバ120に送信したり、MFP連携サーバ120から各種データを受信したりする。以上説明したMFP110のハードウェア構成は一例であり、必要に応じてその他の構成を備えるものであってもよいし、一部の構成を有していなくてもよい。
<サーバ装置のハードウェア構成>
図3は、MFP連携サーバ120/ストレージサーバ130のハードウェア構成を示すブロック図である。MFP連携サーバ120とストレージサーバ130は共通のハードウェア構成を有し、CPU311、ROM312、RAM313、HDD314及びネットワークI/F315で構成される。CPU311は、ROM312に記憶された制御プログラムを読み出して各種処理を実行することで、全体の動作を制御する。RAM313は、CPU311の主メモリ、ワークエリア等の一時記憶領域として用いられる。HDD314は、画像データや各種プログラムを記憶する大容量記憶部である。ネットワークI/F315は、制御部310をインターネットに接続するインタフェースである。MFP連携サーバ120及びストレージサーバ130は、ネットワークI/F315を介して他の装置(MFP110など)から様々な処理のリクエストを受け、当該リクエストに応じた処理結果を返す。
<画像処理システムのソフトウェア構成>
図4は、本実施形態に係る、画像処理システム100のソフトウェア構成を示すブロック図である。以下、画像処理システム100を構成するMFP110及び、MFP連携サーバ120及びストレージサーバ130それぞれの役割に対応したソフトウェア構成を、順に説明する。なお、以下では、各装置が有する諸機能のうち、文書をスキャンして電子化(ファイル化)し、ストレージサーバ130に保存を行うまでの処理に関わる機能に絞って説明を行うものとする。
≪MFPのソフトウェア構成≫
MFP110の機能モジュールは、ネイティブ機能モジュール410とアディショナル機能モジュール420の2つに大別される。ネイティブ機能モジュール410はMFP110に標準的に備えられたアプリケーションであるのに対し、アディショナル機能モジュール420はMFP110に追加的にインストールされたアプリケーションである。アディショナル機能モジュール420は、Java(登録商標)をベースとしたアプリケーションであり、MFP110への機能追加を容易に実現できる。なお、MFP110には図示しない他の追加アプリケーションがインストールされていてもよい。
ネイティブ機能モジュール410は、スキャン実行部411およびスキャン画像管理部412を有する。また、アディショナル機能モジュール420は、表示制御部421、スキャン制御部422、連携サービスリクエスト部423、画像処理部424を有する。
表示制御部421は、操作部220のタッチパネルに、各種のユーザ操作を受け付けるためのユーザインタフェース画面(UI画面)を表示する。各種のユーザ操作には、例えば、MFP連携サーバ120へアクセスするためのログイン認証情報の入力、スキャン設定、スキャンの開始指示、ファイル名設定、ファイルの保存指示などがある。
スキャン制御部422は、UI画面でなされたユーザ操作(例えば「スキャン開始」ボタンの押下)に応じて、スキャン設定の情報と共にスキャン実行部411に対しスキャン処理の実行を指示する。スキャン実行部411は、スキャン制御部422からのスキャン処理の実行指示に従い、スキャナI/F217を介してスキャナ部240に文書の読み取り動作を実行させ、スキャン画像データを生成する。生成したスキャン画像データは、スキャン画像管理部412によってHDD214に保存される。この際、保存されたスキャン画像データを一意に示すスキャン画像識別子の情報が、スキャン制御部422へ通知される。スキャン画像識別子は、MFP110においてスキャンした画像をユニークに識別するための番号や記号、アルファベットなどである。スキャン制御部422は、例えばファイル化する対象のスキャン画像データを上記のスキャン画像識別子を使ってスキャン画像管理部412から取得する。そして、ファイル化のために必要な処理のリクエストをMFP連携サーバ120に対して行うよう、連携サービスリクエスト部423に対して指示する。
連携サービスリクエスト部423は、MFP連携サーバ120に対して各種処理のリクエストを行ったり、そのレスポンスを受け取ったりする。各種処理には、例えば、ログイン認証、スキャン画像の解析、スキャン画像データの送信などが含まれる。MFP連携サーバ120とのやり取りはRESTやSOAPなどの通信プロトコルを使用される。
画像処理部424は、スキャン画像データに対し所定の画像処理を行って、表示制御部421が表示するUI画面で用いられる画像を生成する。所定の画像処理の詳細については後述する。
なお、MFP110とは異なる装置(不図示のクライアントPCなど)が、上述のアディショナル機能モジュール420を備えていてもよい。すなわち、MFP110にて得たスキャン画像の解析リクエストや解析結果に基づくファイル名の設定等を、クライアントPCで行うようなシステム構成でも構わない。
≪サーバ装置のソフトウェア構成≫
まず、MFP連携サーバ120のソフトウェア構成について説明する。MFP連携サーバ120は、リクエスト制御部431、画像処理部432、ストレージサーバアクセス部433、データ管理部434、表示制御部435を有する。リクエスト制御部431は、外部装置からのリクエストを受信できる状態で待機しており、受信したリクエスト内容に応じて、画像処理部432、ストレージサーバアクセス部433、データ管理部434に対し所定の処理の実行を指示する。画像処理部432は、MFP110から送られてくるスキャン画像データに対して、文字領域の検出処理、文字認識処理(OCR処理)といった解析処理の他、回転や傾き補正といった画像加工処理を行う。なお、本実施形態では、処理対象の文書として、手書き欄のある入会申込書を例に説明を行うこととする。ストレージサーバアクセス部433は、ストレージサーバ130に対する処理のリクエストを行う。クラウドサービスでは、RESTやSOAPなどのプロトコルを用いてストレージサーバにファイルを保存したり、保存したファイルを取得したりするための様々なインタフェースを公開している。ストレージサーバアクセス部433は、公開されたインタフェースを使用して、ストレージサーバ130に対するリクエストを行う。データ管理部434は、MFP連携サーバ120で管理するユーザ情報、画像解析結果、各種設定データ等を保持・管理する。表示制御部435は、インターネット経由で接続されたPCやモバイル端末(いずれも不図示)上で動作しているウェブブラウザからのリクエストを受けて、画面表示に必要な画面構成情報(HTML、CSS等)を返す。ユーザは、ウェブブラウザで表示される画面経由で、登録されているユーザ情報を確認したり、スキャン設定を変更したりできる。
次に、ストレージサーバ130のソフトウェア構成について説明する。ストレージサーバ130は、リクエスト制御部441、ファイル管理部442、表示制御部443を有する。リクエスト制御部441は、外部装置からのリクエストを受信できる状態で待機しており、本実施形態においてはMFP連携サーバ120からのリクエストに応じて、受信したファイルの保存や保存ファイルの読み出しをファイル管理部442に指示する。そして、リクエストに応じたレスポンスをMFP連携サーバ120に返す。表示制御部443は、インターネット経由で接続されたPCやモバイル端末(いずれも不図示)上で動作しているウェブブラウザからのリクエストを受けて、画面表示に必要な画面構成情報(HTML、CSS等)を返す。ユーザは、ウェブブラウザで表示される画面経由で、保存ファイルを確認したり取得したりすることができる。
<画像処理システム全体の処理の流れ>
図5は、MFP110で文書をスキャンし、得られた文書画像をファイル化してストレージサーバに保存する際の、装置間の処理の流れを示すシーケンス図である。図6はMFP110の起動時に表示されるメインメニューのUI画面(以下、「メイン画面」と表記)の一例を示す図である。文書をスキャンしてファイル化し、クラウドストレージサービスの利用に必要な専用のアプリケーションをMFP110にインストールすることで、メイン画面600上に「スキャンしてクラウドストレージに保存」ボタン601が表示されるようになる。そして、ユーザがメイン画面600内に表示されたメニューボタンの中から「スキャンしてクラウドストレージに保存」ボタン601を押下すると、図5のシーケンス図で示される一連の処理が開始する。なお、図5のシーケンス図は、スキャン画像をファイル化する際に付与されるファイル名を設定する場合の説明となっているが、ファイル名の他、フォルダパスやメタデータといったプロパティ全般に適用可能である。
以下、図5のシーケンス図に沿って、装置間のやり取りを時系列に説明する。なお、以下の説明において記号「S」はステップを表す。
MFP110は、MFP連携サーバ120にアクセスするためのログイン認証の情報を入力するUI画面(以下、「ログイン画面」と表記)を操作部220に表示する(S501)。図7にログイン画面の一例を示す。ユーザが、予め登録されているユーザIDとパスワードを、ログイン画面700上の入力欄702及び703にそれぞれ入力し「ログイン」ボタン701を押下すると、ログイン認証のリクエストがMFP連携サーバ120に送信される(S502)。
ログイン認証のリクエストを受けたMFP連携サーバ120は、当該リクエストに含まれるユーザIDとパスワードを用いて認証処理を行う(S503)。認証処理の結果、正規のユーザであることが確認されれば、MFP連携サーバ120は、アクセストークンをMFP110に返す。以後、MFP110からMFP連携サーバ120に対して行う各種リクエストの際にこのアクセストークンを一緒に送ることで、ログイン中のユーザが特定される。本実施形態では、MFP連携サーバ120へのログインの完了によって、ストレージサーバ130へのログインも同時に完了するものとする。このためにユーザは、インターネット上のPC(不図示)のウェブブラウザ等を介して、MFP連携サービスを利用するためのユーザIDとストレージサービスを利用するためのユーザIDとの紐づけを予め行っておく。これにより、MFP連携サーバ120へのログイン認証に成功すれば同時にストレージサーバ130へのログイン認証も完了し、ストレージサーバ130にログインするための操作を省略できる。そして、MFP連携サーバ120においては、自装置にログインしたユーザからのストレージサービスに関するリクエストにも対応可能となる。なお、ログイン認証の方法は一般的に公知な手法(Basic認証、Digest認証、OAuthを用いた認可等)を用いて行えばよい。
ログインが完了すると、MFP110は、スキャン設定用のUI画面(以下、「スキャン設定画面」と表記)が操作部220に表示される(S504)。図8にスキャン設定画面の一例を示す。スキャン設定画面800には、「スキャン開始」ボタン801、カラー設定欄802、解像度設定欄803が存在する。「スキャン開始」ボタン801は、原稿台にセットした文書(本実施形態では手書き用の記入欄のある入会申込書を想定)に対するスキャン処理の開始を指示するためのボタンである。カラー設定欄802では、スキャン時のカラーモードを設定する。例えばフルカラーやモノクロといった選択肢の中から指定できるようになっている。解像度設定欄803では、スキャン時の解像度を設定する。例えば600dpiや1200dpiといった選択肢の中から指定できるようになっている。なお、カラーモードと解像度は設定項目の一例であって、これらすべてが存在しなくてもよいし、これら以外の設定項目が存在してもよい。また、カラーモードや解像度に関する選択肢を、ストレージサービスの要求する設定値のみに限定したりしてもよい。ログインユーザは、このようなスキャン設定画面800を介してスキャン処理についての詳細な条件設定を行なう。スキャン設定を終えたログインユーザが、MFP110の原稿台にスキャン対象の文書をセットし、「スキャン開始」ボタン801を押下するとスキャンが実行される(S505)。これにより、紙文書を電子化したスキャン画像データが生成される。スキャンの完了後、MFP110は、スキャンによって得られたスキャン画像データを、その解析リクエストと共にMFP連携サーバ120に送信する(S506)。
文書画像の解析リクエストを受けたMFP連携サーバ120では、リクエスト制御部431が画像処理部432に対し、画像解析処理の実行を指示する(S507)。その際、リクエスト制御部431は、受信した解析リクエストを一意に特定可能なリクエストIDをMFP110に返す。図9(a)にリクエストIDの一例を示す。一方、画像解析処理の実行指示を受けた画像処理部432は、解析リクエストに係る文書画像に対する画像解析処理を実行する(S508)。本実施形態の画像解析処理では、まず文書画像内に存在する文字について、予め印刷された文字(活字)の部分と手書きで記入された文字(手書き文字)の部分とを分離する処理が行われる。次に、文書画像内の活字と手書き文字それぞれについて、文字ブロックの抽出処理が行なわれる。そして、ブロック抽出処理にて得られた「TEXT」属性の文字ブロックのうち活字に対応する文字ブロック(以下、「活字ブロック」と呼ぶ。)については、そのままOCR処理が実行される。一方、手書き文字に対応する文字ブロック(以下「手書き文字ブロック」と呼ぶ。)については、一定条件を満たす手書き文字ブロック同士を結合する処理を行った上で、OCR処理が実行される。なお、ブロック抽出は、例えばある閾値で2値化を行った画像から文字と推測される矩形領域を検出する方法等、既知の方法を適用すればよい。
上記画像解析処理が行われている間、MFP110は、上述のリクエストIDを使用して、MFP連携サーバ120に対して定期的(例えば数百ミリ秒から数ミリ秒程度毎)に処理状況の問合せを行う(S509~S509’)。この問合せは、MFP連携サーバ120からの画像解析処理の完了レスポンス(S510)が取得できるまで繰り返し実行される。MFP連携サーバ120は、処理状況の問合せを受けると、リクエストIDに対応する画像解析処理の進行状況を確認し、完了していない場合は処理中を表すレスポンス(図9(b)を参照)を返す。また、完了していた場合は完了を表すレスポンス(図9(c)を参照)を返す。このレスポンスの“status”には現在の処理状況を示す文字列、具体的には、MFP連携サーバ120で処理が行われている最中である場合には“processing”が入り、処理が完了している場合には“completed”が入る。なお、処理が失敗した場合の“failed”など、他のステータスを表す文字列が入ることもある。処理完了時のレスポンスには、ステータス情報に加え、文書画像の解析結果に関する情報などを含む。なお、S508における、MFP連携サーバ120における画像解析処理の詳細については、別途フローチャートを参照して後述する。
処理完了レスポンスを受信した後、MFP110は、当該レスポンスに含まれる、画像解析結果の格納先を示すURLを用いて、画像解析結果を、MFP連携サーバ120に対してリクエストする(S511)。リクエストを受けてMFP連携サーバ120のリクエスト制御部431は、画像解析処理の結果情報を返す。この結果情報には、文書画像に含まれる文字列の文字認識結果とそれらの位置情報を紐づけてリスト化した情報が含まれる。
そして、スキャン設定画面の表示から画像解析結果の取得までの一連の処理(S504~S511)が、ファイル化対象の文書の数だけ繰り返されることになる。
そして、MFP110は、画像解析処理の結果情報を使用して、文書画像にファイル名を設定してストレージサーバ130に保存するためのUI画面(以下、「ストレージ保存画面」と表記)を表示する(S512)。ファイル名は、スキャン画像データに関するプロパティ(属性)として設定される情報の一種である。図10に、ストレージ保存画面の一例を示す。図10のストレージ保存画面1000には、文書リスト領域1001、「送信」ボタン1002、「編集」ボタン1003、「削除」ボタン1004が存在する。文書リスト領域1001には、画像解析処理の対象となったスキャン済み文書の一覧がリスト形式で表示される。「送信」ボタン1002は、ストレージサーバ130に対して対象文書画像のファイルデータを送信するためのボタンである。スキャン済み文書一覧の中から任意の申込書を選択し、「送信」ボタン1002を押下することで、その「送信先」で特定されるストレージサーバ130に対してファイル送信が実行される。なお、ファイル送信が正常に完了した場合、その入会申込書に関する一行分の情報が、スキャン済み文書一覧から削除されることになる。「編集」ボタン1003は、後述するファイル名設定画面1100にUI画面を切り替えるためのボタンである。スキャン済み文書一覧の中から任意の入会申込書を選択し、「編集」ボタン1003を押下することで、その選択に係る文書画像に対するファイル名を設定するためのUI画面へと遷移する。「削除」ボタン1004は、任意の入会申込書を削除するためのボタンである。スキャン済み文書一覧の中から任意の入会申込書を選択し、「削除」ボタン1004を押下することで、選択した入会申込書がスキャン済み文書一覧から削除される。スキャン済み文書一覧の中から任意の一つの入会申込書が選択され、続けて「編集」ボタン1003を押下する操作イベントが検知されると、ストレージ保存画面1000は、ユーザ選択に係る入会申込書のスキャン画像がプレビュー表示された、図11に示すようなファイル名設定画面1100に遷移する。ファイル名設定画面1100を用いたファイル名設定の詳細については後述する。図11のファイル名設定画面1100においてユーザがファイル名を設定して「OK」ボタン1107を押下すると、再び図10に示すストレージ保存画面1000に戻る。そして、ユーザは、図10のストレージ保存画面1000内の「送信」ボタン1002を押下する。
「送信」ボタン1002の押下を受けてMFP110は、ユーザ選択に係る文書画像のデータとそのファイル送信時に設定するファイル名等の情報と共に、当該文書画像の保存リクエストをMFP連携サーバ120に送信する(S513)。保存リクエストを受信したMFP連携サーバ120では、リクエスト制御部431が、ファイル生成処理を開始すると共に保存リクエストを正常に受けたことを示すレスポンスをMFP110に返す。そのレスポンスを受け取ったMFP110は、処理を終了し、スキャン設定画面の表示状態(S504)に戻る。一方、MFP連携サーバ120では、事前に登録されたスキャン設定からファイルフォーマットの情報を取得し、当該ファイルフォーマットに従って文書画像をファイル化する(S514)。この際、生成されたファイルには保存リクエストにて指定されたファイル名が付されることになる。こうして生成された帳票画像ファイルは、ストレージサーバ130に送信され、保存される(S515)。
以上が、画像処理システム全体の処理の大まかな流れである。なお、図5のシーケンス図では、MFP110がMFP連携サーバ120とやり取りを行う内容となっているが、画像解析結果取得、UI画面の表示等は、不図示のクライアントPCなどで行なう構成でもよい。
<画像解析処理の概要>
図12は、上述のS508において実行される、MFP連携サーバ120の画像処理部432が行う画像解析処理の流れを示すフローチャートである。
まず、S1201では、処理対象の文書画像データに対して補正処理が実行される。ここで実行される補正処理は、後続の処理のための前処理であり、例えば文書画像データに対する傾き補正処理や回転補正処理である。まず、傾き補正処理では、文書画像から傾きの角度を検出し、検出した傾きだけ逆方向に画像を回転させることで、傾きを補正した文書画像データを取得する。傾き補正の対象となる傾きは、スキャナ部222による読み取り時に、原稿フィーダ内のローラの摩耗などが原因でまっすぐに文書が読み取られなかったり、文書の印刷時にまっすぐ印字できなかったりすることで生じる。傾き検出では、まず、文書画像内に含まれるオブジェクトを検出し、水平方向あるいは鉛直方向に隣り合うオブジェクト群を連結する。そして、連結されたオブジェクトの中心位置を結んだ角度が、水平方向あるいは鉛直方向からどれだけ傾いているかを取得することで傾きを求める。なお、傾き検出は上記の方法に限るものではない。例えば、文書画像内に含まれるオブジェクトの中心座標を取得し、0.1度単位で中心座標群を回転させながら、中心座標群が水平方向あるいは垂直方向に並ぶ割合が最も高い角度を傾きとして求めてもよい。次に、傾き補正後の文書画像に対して、文書内の文字が正立する向きになるように、90度単位で回転させる回転補正処理を行う。具体的には、まず、傾き補正後の文書画像を基準画像として、90度回転した画像、180度回転した画像、270度回転した画像を用意する。そして、90度単位で回転させた画像それぞれに対し、高速処理可能な簡易的なOCR処理を実行して、一定値以上の確信度を持って認識された文字の数が最も多い画像を、回転補正後の文書画像として取得する。なお、回転補正の方法は上記に限るものではない。
次のS1202では、S1201で得られた回転補正後の文書画像を入力文書画像として、手書き文字分離処理が実行される。図13の(a)~(c)は、手書き文字分離処理の説明図である。図13(a)は、入会申込書をスキャンして得られた画像に対してS1201の補正処理を行った結果としての入力文書画像の一例である。図13(a)の入力文書画像に対して手書き文字分離処理を行うと、図13(b)に示すような手書き文字部分のみから成る「手書き文字画像」と、図13(c)に示すような罫線や活字のみから成る手書き文字記入前の状態を表す「原本画像」とに分離されることになる。文書画像から手書き文字の画像領域を分離する技術はいくつか知られているが、本実施形態においては、ディープニューラルネットワークによる機械学習で実装されている。この際、ニューラルネットワークの構造としては、例えば公知のFCN(Fully Convolutional Networks)を適用する。また、手書き文字の画像領域を推定するためのニューラルネットワークについては、例えば公知のYOLO(You Only Look Once)を適用する。なお、上記手法以外にも例えば、文書画像に含まれる罫線を検出し、検出された罫線で囲われた内部の領域を手書き文字が記入された領域として特定することで、文書画像から手書き文字の画像領域を分離してもよい。
分離文字処理が完了すると、原本画像についての処理(S1203及びS1204)が先ず実行され、それに続いて、手書き文字画像についての処理(S1205~S1207)が実行される。ただし、原本画像についての領域解析処理完了後に手書き文字画像についての処理を開始するなど一部の処理を並列で実行してもよい。
≪原本画像に対する処理≫
S1203では、S1202にて得られた原本画像を対象として領域解析処理が実行される。具体的には、原本画像を前景領域と背景領域に分類した上で、前景領域をオブジェクト属性に応じたブロックに分割する処理(「ブロックセレクション処理」とも呼ばれる)が行われる。このブロックセレクション処理においては、まず各画素が白又は黒に二値化されたクエリ画像を生成し、当該クエリ画像に対し輪郭線追跡を行って、黒画素輪郭で囲まれる画素の塊を抽出する。そして、面積が所定の面積よりも大きい黒画素の塊については、内部にある白画素に対しても輪郭線追跡を行い、白画素の塊を抽出し、さらに一定面積以上の白画素の塊の内部から再帰的に黒画素の塊を抽出する。こうして得られた黒画素の塊を前景領域とし、大きさ及び形状で分類し、オブジェクト属性に応じたブロックへ分類していく。例えば、縦横比が1に近く、大きさが一定の範囲のものを文字相当の画素塊とし、さらに文字相当の画素塊同士が近接して整列している部分(文字のベースラインが同じでグループ化できる部分)を「TEXT」の属性を持つ文字ブロックとする。そして、扁平な画素塊を「LINE」の属性を持つ線ブロック、一定大きさ以上でかつ矩形の白画素塊を整列よく内包する黒画素塊の占める範囲を「TABLE」の属性を持つ表ブロック、不定形の画素塊が散在している範囲を「PHOTO」の属性を持つ写真ブロックとする。さらに、「TEXT」、「LINE」、「TABLE」、「PHOTO」のいずれの属性にも該当しない任意形状の画素塊を「PICTURE」の属性を持つ図形ブロックとする。こうしてオブジェクトの属性毎に領域分割されたブロックのうち「TEXT」に分類された文字ブロックが、活字用OCR処理の対象となる活字ブロックとして抽出される。
S1204では、S1203の領域解析処理において抽出されたすべての活字ブロックを対象にOCR処理が実行される。これにより、各活字ブロックに対応した文字認識結果が得られる。なお、所定記入欄に記載された手書き文字だけを抽出したい場合は、ここでの活字ブロックに対するOCR処理を省略することも可能である。
≪手書き文字画像に対する処理≫
S1205では、S1202にて得られた手書き文字画像を対象として領域解析処理が実行される。なお、活字と手書き文字では、濃度や黒画素の連続性等の性質が異なる。そこで、二値化の際の閾値や連続性判定時の閾値といったパラメータを手書き文字用に調整することで、手書き文字に適した領域解析処理を行うことができる。図14(a)は、図13(b)の手書き文字画像に対する領域解析処理の結果を示している。図示されるように5つの手書き文字ブロック1401~1405が取得されることになる。
S1206では、S1205にて得られた全ての手書き文字ブロックを対象として、必要に応じて結合する処理が実行される。この結合処理により、本来であれば一続きで抽出されるはずであった複数の手書き文字ブロックが1つの文字ブロックにまとめられる。手書き文字ブロック結合処理の詳細については後述する。
S1207では、結合処理後の手書き文字ブロックを対象としてOCR処理が実行される。これにより、各手書き文字ブロックに対応した文字認識結果が得られる。
最後に、S1208において、S1204及びS1207で得られた文字認識結果に基づき、画像解析結果が生成される。具体的には、活字ブロックの文字認識結果と手書き文字ブロックの文字認識結果それぞれについて、対応する文字ブロックの位置情報との紐づけを行って、リスト化する処理が行われる。こうして、文書画像から文字情報が抽出されることになる。
以上が、S508における画像解析処理の内容である。
<手書き文字ブロック結合処理の詳細>
図15は、本実施形態に係る、手書き文字ブロック結合処理の詳細を示すフローチャートである。以下、図15のフローに沿って、図14(a)に示すように分離した複数の手書き文字ブロックを単一の手書き文字ブロックとして抽出するための結合処理について詳しく説明する。
S1501では、前述の領域解析処理(S1205)にて取得された手書き文字ブロックについて、原本画像における空白領域の単位でグループ分けする処理(グルーピング処理)が実行される。本実施形態の場合、入会申込書内の“申込者”や“ご住所”といった記入欄に相当する、前述の原本画像に対する領域解析処理(S1203)にて線領域「LINE」と判定された罫線によって囲まれた領域(表構造におけるセル領域)が空白領域となる。以下、手書きで記入されることを想定した特定の項目に関する空白領域を「記入領域」と呼ぶこととする。図16は、前述の図13(c)の原本画像における2つの記入領域を、破線の矩形1601及び1602で示している。なお、記入領域の特定は、上述の方法に限定されない。例えば文字領域「TEXT」の左右に存在する領域を記入領域としてもよいし、不図示のUI画面を介したユーザ入力に基づき記入領域を設定するようにしてもよい。また、様々な文書フォーマットの文書画像について記入欄に相当する空白領域を教師データとしてディープニューラルネットワークによる機械学習を行って得られた学習済みモデルを用いて、処理対象の文書画像における記入領域を特定してもよい。
次のS1502~S1510は、グループピング処理によって得られた記入領域毎のループ処理となっている。
まず、S1502では、注目する記入領域の中に、手書き文字ブロックが複数存在するかが判定される。注目する記入領域内に手書き文字ブロックが複数存在する場合は、S1503に進む。一方、注目する記入領域内に存在する手書き文字ブロックが1つ或いはゼロの場合はS1510に進む。前述の図16に示す例では、2つの記入領域1601と1602のうち記入領域1601については手書きブロックが1つだけ存在するのでS1510に進み、記入領域1602については手書きブロックが4つ存在するのでS1503に進むことになる。以下、記入領域1602を注目する記入領域とした場合の処理を具体例として説明を行うものとする。
S1503では、注目する記入領域内に存在する複数の手書き文字ブロックのうち、主要な文字行を形成しているブロック(以下、「メインブロック」と呼ぶ。)が決定される。例えば、記入領域において文字の書き出し位置に存在する手書き文字ブロックがメインブロックに決定される。図13に示すような横書きのフォーマットの場合は、書字方向が左から右なので文字の書き出し位置は左端となり、最も左にある手書き文字ブロックをメインブロックとして決定すればよい。ただし、メインブロックの決定方法はこれに限定されるものではなく、例えばブロック長或いはブロック面積が最大のものをメインブロックにするなど、別のパラメータを用いて決定することも可能である。図16に示す記入領域1602が注目記入領域の場合、その中の4つの手書き文字ブロック1402~1405のうち、文字の書き出し位置が最も左にあり、ブロックの長さも一番長い手書き文字ブロック1403がメインブロックに決定されることになる。なお、縦書きのフォーマットであれば、書字方向が上から下なので、文字の書き出し位置は上端となり、最も上にある手書き文字ブロックをメインブロックに決定すればよい。また、アラビア語のような書字方向が右から左の横書きの言語であれば、文字の書き出し位置は右端になり、最も右にある手書き文字ブロックをメインブロックに決定すればよい。
S1504~S1509は、注目する記入領域に存在する手書き文字ブロックのうち、S1503で決定したメインブロック以外の残りの手書き文字ブロック(以下、「サブブロック」と呼ぶ。)毎のループ処理となっている。このループ処理により、メインブロックと残りの各サブブロックとの結合可否が判定される。
まず、S1504では、残りのサブブロックのうち注目するサブブロックが決定される。続くS1505では、決定された注目サブブロックについて、その文字サイズがメインブロックの文字サイズと近いかどうかが判定される。この文字サイズのチェックは、あまりに双方の文字サイズがかけ離れていると、それぞれが別の項目や行に属している或いは特別な意図を持って分離した可能性が高いと推測されることから、そのような関係にあるサブブロックを連結対象外とする目的で行う。したがって、双方の文字サイズが近いかどうかは、例えばメインブロックの高さを基準として、メインブロックの高さに対してサブブロックの高さが例えば50%~150%の範囲内にあれば文字サイズが近い(かけ離れていない)と判断すればよい。このような判定の結果、メインブロックの文字サイズと注目するサブブロックの文字サイズとが近いと判定された場合はS1506に進み、近くない(かけ離れている)と判定された場合S1508の結合処理をスキップしてS1509に進む。
S1506では、注目サブブロックが、メインブロックの延長方向(書字方向に向かってメインブロックを拡張する方向)に連続し、かつ、上下いずれかにずれているかどうかが判定される。この位置関係のチェックは、記入者が記入欄に文字を書き始めたもののその途中で上または下にベースラインをずらして文字を書き続けたと推測できる場合は、それら文字を連続した文字列として扱うことが望ましいことに基づいて行うものである。ここで、「メインブロックの延長方向に連続」とは、注目サブブロックの左端(書き出し位置のx座標)が、メインブロックの右端(書き終わり位置のx座表)と一致していることを意味する。この際の「一致」は完全一致である必要はなく、例えば1文字程度のずれは許容範囲とすればよい。本条件を満たす場合はS1507に進み、満たさない場合はS1509に進む。いま、図14の具体例において、注目サブブロックとして手書き文字ブロック1404が選択されていたとする。手書き文字ブロック1404の左端位置は、メインブロックである手書き文字ブロック1403の右端位置と略一致(x方向のずれ幅が1文字の範囲内)している。そして、手書き文字ブロック1404は手書き文字ブロック1403に対して上方向にずれているので、判定結果は「Yes」となり、次のS1507に進むことになる。
S1507では、メインブロックの延長方向に原本画像の黒画素領域(活字)が存在するかどうかが判定される。この判定の際には、例えばメインブロックと完全に横並びの位置に活字が存在していなくてもよく、例えば1文字分程度の高さ方向(y座標)のずれは許容範囲とすればよい。この原本画像の活字チェックは、以下の理由で行うものである。まず、S1506にて文字サイズが近いと判定された注目サブブロック内の文字が、原本画像内の活字部分を回避する目的で上または下にずらして記入を続けたと推測できる場合は、連続した文字列として扱うのが適切である。その一方で、原本画像内に回避すべき活字が無いにも関わらず、注目サブブロックが上または下にずれている場合は、その文字が別の意図をもって敢えてずらして記入された文字であると推測でき、この場合は連続した文字列として扱うのは適切ではない。そこで、原本画像内の活字を回避する目的で上下にずれているのかを見極めるためにこのような条件が存在する。本条件を満たす場合はS1508に進み、満たさない場合はS1509に進む。いま、メインブロックである手書き文字ブロック1403の延長方向には活字の「電話番号」の黒画素領域が存在しているので、判定結果は「Yes」となり、次のS1508に進むことになる。
S1508では、S1505~S1507の条件をすべて満足した注目サブブロックを、メインブロックに結合する処理が実行される。これによりメインブロックに対応する画像領域と注目サブブロックに対応する画像領域とを繋げた単一の画像領域で表される手書き文字ブロック(結合画像)が生成されることになる。なお、ここでは、結合するかどうかを決める際の所定の条件として3つの条件を設けているがこれら3つすべてが必要と言う訳ではない。結合後は、S1509に進む。
S1509では、注目記入領域内に処理されていないサブブロックが残っているかどうかが判定される。未処理のサブブロックがあればS1504に戻って次の注目サブブロックを対象として処理が続行される。一方、すべてのサブブロックについての処理が完了していれば、S1510に進む。
S1510では、すべての記入領域について上述のループ処理が完了したか否かが判定される。未処理の記入領域があればS1502に戻って次の記入領域を対象として処理が続行される。一方、すべての記入領域についての処理が完了していれば、本処理を終了し、図12のフローに戻ることになる。
以上が、本実施形態に係る、手書き文字ブロック結合処理の内容である。図14(b)は、上述の図14(a)に示す5つの手書き文字ブロック1401~1405に対して、手書き文字ブロック結合処理を行った結果を示している。手書き文字ブロック1403と1404とが結合されて1つの手書き文字ブロック1406となっているのが分かる。この例で結合された2つの手書き文字ブロック1403と1404に対応する2つの文字列“佐賀県唐津市和多田”と“西山2-2-22”は、元々が“ご住所”という1つの項目に対応する枠内に記入された文字列である。そのため、例えば前述の言語モデル機能を持つOCR処理を行う場合に、住所という共通概念の下で記入された一続きの文字列として扱うことができ文字認識を行いやすくなる。その結果、結合することなく別々の状態(図14(a))の状態)でOCR処理を行ったときよりも誤認識を減らすことが期待できる。
以上のとおり本実施形態によれば、記入欄等に記入された手書き文字が、予め印刷された文字の回避のために記入位置(ベースライン)が途中から上下にずれていても、一続きの単一の文字ブロックとして文書画像から抽出することができる。その結果、OCR処理における文字認識精度を向上させることができる。
[実施形態2]
実施形態1は、記入領域内に予め印刷された文字を回避しようとして記入者が途中で文字をずらして記入したことで当該手書き文字に対応する文字ブロックが分離してしまう場合に、それらを結合して単一の文字ブロックを得る態様について説明した。次に、記入者が記入領域内に文字がすべて収まるように途中で改行したことで本来は同じベースラインの一続きの手書き文字が分離してしまう場合に、それらを結合して単一の文字ブロックを得る態様を、実施形態2として説明する。なお、なお、システム構成やシステム全体の処理の流れなど実施形態1と共通する内容については説明を省略し、以下では差異点である手書き文字ブロック結合処理について説明することとする。
図17(a)は、本実施形態の適用例を説明するための、手書き文字画像に対する領域解析処理の結果の一例である。図17(a)において実線の矩形1700は記入領域を示す枠を示し、その中にある破線の矩形1701及び1702が分離して検出された手書き文字ブロックを示している。図17(a)の例の場合、記入者が記入領域1700内に文字がすべて収まるように「田」のところまで記入した段階で改行し、続けて「多」の真下から続きを書き始めたことでこのような手書き文字画像となっている。本実施形態では、このような不規則な改行によって分離してしまった手書き文字ブロックを結合して、単一の手書き文字ブロックを得られるようにする。
<手書き文字ブロック結合処理の詳細>
図18は、本実施形態に係る、手書き文字ブロック結合処理の詳細を示すフローチャートである。以下、図18のフローに沿って、図17(a)に示すように分離した複数の手書き文字ブロックを単一の手書き文字ブロックとして抽出するための結合処理について詳しく説明する。
S1801は、実施形態1の図15のフローにおけるS1501と同様、領域解析処理(S1205)にて取得された手書き文字ブロックについて、原本画像における空白領域の単グループ分けする処理が実行される。次のS1802~S1813は、グループピング処理によって得られた記入領域毎のループ処理となっている。
まず、S1802では、S1502と同様、注目する記入領域の中に手書き文字ブロックが複数存在するかが判定される。注目する記入領域内に手書き文字ブロックが複数存在する場合は、S1803に進む。一方、注目する記入領域内に存在する手書き文字ブロックが1つ或いはゼロの場合はS1813に進む。以下、上述の記入領域1700を注目する記入領域とした場合の処理を具体例として、S1803以下の各処理について説明を行うものとする。
S1803では、注目する記入領域内に存在する複数の手書き文字ブロックのうちメインブロックが決定され、さらに、当該メインブロックが以降の結合可否の判断基準となる基準ブロックの初期値に設定される。いま、記入領域1700内の手書き文字ブロック1701がメインブロックに決定され、さらに、基準ブロックの初期値に設定されることになる。
S1804~S1811は、注目する記入領域に存在する手書き文字ブロックのうち、S1803で決定したメインブロック以外の残りのサブブロック毎のループ処理となっている。このループ処理により、残りの各サブブロックと基準ブロックとの結合可否が判定される。
S1804では、残りのサブブロックのうち注目するサブブロックが決定される。ここでは、注目サブブロックとして手書き文字ブロック1702が選択されることになる。続くS1805では、決定された注目サブブロックについて、その文字サイズが基準ブロックの文字サイズに近いかどうかが判定される。この文字サイズのチェックは、S1505と同じ目的で行うものである。判定の結果、基準ブロックの文字サイズと注目するサブブロックの文字サイズとが近いと判定された場合はS1806に進み、近くないと判定された場合はS1811に進む。
S1806では、注目するサブブロックが基準ブロックの改行位置に存在しているかどうかが判定される。この位置関係のチェックは、改行による行の移動と判断できるかどうかを見極めるために行う。ここで、日本語の横書きを前提とする場合、注目するサブブロックの左端のx座標が基準ブロックの左端から右端までの範囲内にあり、かつ、注目するサブブロックの上端が基準ブロックの下端よりも下にあるとき、「基準ブロックの改行位置に存在」と判定されることになる。この際、S1506と同様、例えば1文字程度の横方向(x方向)のずれは許容範囲としてもよい。判定の結果、改行による行の移動と判断できる場合はS1807に進み、そうでない場合はS1811に進む。いま、手書き文字ブロック1702の左端は基準ブロックである手書き文字ブロック1701の右端よりもやや左よりの位置である。そして、手書き文字ブロック1702の上端は、手書き文字ブロック1701の下端よりも下である。したがって、判定結果は「Yes」となり、次のS1807に進むことになる。
S1807では、基準ブロックの右側に注目するサブブロックを結合すると、結合後のブロックの右端が注目する記入領域を超えるかどうかが判定される。この結合チェックは、注目するサブブロックの改行が、当該サブブロックの文字を基準ブロックの右に続けて書いてしまうと記入領域をはみ出てしまうことからそれを避けるためになされたものであるかどうかを見極めるために行う。判定の結果、結合後のブロックの右端が記入領域を超える場合はS1808に進み、そうでない場合はS1811に進む。いま、手書き文字ブロック1702を基準ブロックである手書き文字ブロック1701の右側に加えた場合には、結合後のブロックの右端が記入領域1700からはみ出ることになる。したがって、判定結果は「Yes」となり、次のS1808に進むことになる。
S1808では、結合済みのブロックがあるかどうかが判定される。一度も結合処理が実行されておらず、結合済みのブロックが存在しない場合にはS1809に進む。一方、既に結合済みのブロックが存在している場合はS1810に進む。
S1809では、注目するサブブロックを基準ブロックに結合する処理が実行される。この処理によって、手書き文字ブロック1702が、基準ブロックである手書き文字ブロック1701の右側に結合されることになる。結合後のブロック(結合画像)は、結合済みブロックとしてRAM313に一時保存される。
S1810では、結合済みブロックが読み出され、注目するサブブロックを、読み出した結合済みブロックに結合する処理が実行される。上述の例では存在しないが、不規則に改行された手書き文字ブロックが複数存在するようなケースでは、この処理によって結合が繰り返されることになる。
S1811では、注目記入領域内に処理されていないサブブロックが残っているかどうかが判定される。未処理のサブブロックがあれば、まずS1812に進んで基準ブロックが更新される。基準ブロックの更新とは、注目サブブロックであった手書き文字ブロックを次の基準ブロックに設定する処理である。そして更新後はS1804に戻り、同様の処理が次の注目サブブロックを対象として続行される。これにより複数回に渡って改行が繰り返されていた場合にも対応可能となる。一方、すべてのサブブロックについての処理が完了していれば、S1813に進む。
S1813では、すべての記入領域について上述のループ処理が完了したか否かが判定される。未処理の記入領域があればS1802に戻って次の記入領域を対象として処理が続行される。一方、すべての記入領域についての処理が完了していれば、本処理を終了し、図12のフローに戻ることになる。
以上が、本実施形態に係る、手書き文字ブロック結合処理の内容である。なお、結合するかどうかを決める際の所定の条件として、本実施形態でも3つの条件を設けているがこれら3つすべてが必要と言う訳ではない。図17(b)は、図17(a)に示す2つの手書き文字ブロック1701及び1702を結合して得られた結合後の手書き文字ブロック1703を示している。実施形態1と同様、結合された2つの手書き文字ブロックに対応する2つの文字列は、元々が共通概念の下で記入された一続きの文字であるため、結合することでOCR処理における誤認識を減らすことが期待できる。
以上のとおり本実施形態によれば、手書き文字が、記入欄等の所定の領域内に文字が収まりきるようにするために不規則に改行されていても、一続きの単一の文字ブロックとして文書画像から抽出することができる。その結果、OCR処理の認識精度を向上させることができる。
[実施形態3]
実施形態1では記入位置(ベースライン)のずれによって分離してしまった手書き文字ブロックを、実施形態2では改行によって分離してしまった手書き文字ブロックを、結合処理によって単一の手書き文字ブロックにする態様について説明した。次に、これらの複合的な要因で分離してしまった文字ブロックを結合する態様について、実施形態3として説明する。なお、なお、システム構成やシステム全体の処理の流れなど実施形態1及び2と共通する内容については説明を省略し、以下では差異点である手書き文字ブロック結合処理について説明することとする。
図19(a)は、本実施形態の適用例を説明するための、手書き文字画像に対する領域解析処理の結果の一例である。図19(a)において実線の矩形1900は記入領域を示し、その中にある破線の矩形1901~1903が分離して検出された手書き文字ブロックを示している。図19(a)の例の場合、記入者が記入領域1900内に文字がすべて収まるように「田」のところまで記入した段階で上方向に記入位置(ベースライン)をずらし、「西山」まで記入した段階でさらに改行して「2-2-22」を記入したことで、このような手書き文字画像となっている。本実施形態では、このような記入位置のずれと改行が複合的に行われて分離してしまった手書き文字ブロックを結合して、単一の手書き文字ブロックを得られるようにする。
<手書き文字ブロック結合処理の詳細>
図20は、本実施形態に係る、手書き文字ブロック結合処理の詳細を示すフローチャートである。以下、図20のフローに沿って、図19(a)に示すように分離した複数の手書き文字ブロックを単一の手書き文字ブロックとして抽出するための結合処理について詳しく説明する。
S2001~S2006は、実施形態1の図15のフローにおけるS1501~S1506に対応し、異なるところはないので説明を省く。続くS2007では、メインブロックの延長方向に、注目するサブブロック以外のサブブロックが存在するかどうかが判定される。この判定の際には、前述のS1507と同様、例えばメインブロックと完全に横並びの位置に他のサブブロックが存在しなくてもよく、例えば1文字分程度の高さ方向(y座標)のずれは許容範囲とすればよい。本条件は、記入領域に収めるために記入位置(ベースライン)をずらしたものの、その残りの文字を記入領域に収める目的でさらにベースラインをずらして記入された手書き文字が存在するのかを見極めるために存在する。本条件を満たす場合はS2008に進み、満たさない場合はS2009に進む。いま、メインブロックである手書き文字ブロック1901の延長方向には他の手書き文字「2-2-22」が存在しているので、判定結果は「Yes」となり、次のS2008に進むことになる。
S2008では、ここまでの結合可否の判定(S2005~S2007)にてメインブロックと結合可能と判定された注目サブブロックが待機ブロックに設定される。この処理は、メインブロックの右側に複数のサブブロックが存在する場合、当該複数のサブブロックを予め1つのブロックにまとめた上でメインブロックに結合するためである。図19(a)の例では、メインブロックである手書き文字ブロック1901の右に位置する2つの手書き文字ブロック1902と1903が待機ブロックに設定されることになる。
S2009では、注目記入領域内に処理されていないサブブロックが残っているかどうかが判定される。未処理のサブブロックがあればS2004に戻って次の注目サブブロックを対象として処理が続行される。一方、すべてのサブブロックについての処理が完了していれば、S2010に進む。
S2010では、設定された待機ブロックの数に応じて、次の処理の振り分けがなされる。待機ブロックの数が、複数(2個以上)の場合はS2011に進み、1個の場合はS2018に進み、設定されていない(0個)の場合はS2019に進む。いま、記入領域1900の場合は、待機ブロックが2個設定されるのでS2011に進むことになる。そして、S2011~S2016において、待機ブロック同士の結合可否の判定並びに結合処理がなされる。
まず、S2011では、複数の待機ブロックの中で最初に記載されたと推測される文字列に対応する待機ブロックが、待機ブロック同士の結合可否の判断基準となる基準ブロックの初期値に設定される。ここでは、手書き文字ブロック1902が基準ブロックの初期値に設定されることになる。
S2012~S2016は、残りの待機ブロック毎のループ処理となっている。このループ処理により、待機ブロック同士の結合可否が判定される。
S2012では、残りの待機ブロックのうち注目する待機ブロックが決定される。いま、注目待機ブロックとして手書き文字ブロック1903が選択されることになる。
S2013では、実施形態2の図18のフローのS1806と同様、決定された注目する待機ブロックが、基準ブロックの改行位置に存在しているかどうかが判定される。判定の結果、改行による行の移動と判断できる場合はS2014に進み、そうでない場合はS2016に進む。いま、手書き文字ブロック1903の左端は基準ブロックである手書き文字ブロック1902の右端よりも左寄りの位置である。そして、手書き文字ブロック1903の上端は、手書き文字ブロック1902の下端よりも下である。したがって、判定結果は「Yes」となり、次のS2014に進むことになる。
S2014では、実施形態2の図18のフローのS1807と同様、基準ブロックの右側に注目する待機ブロックを結合すると、結合後のブロックの右端が注目する記入領域を超えるかどうかが判定される。判定の結果、結合後のブロックの右端が記入領域を超える場合はS2015に進み、そうでない場合はS2016に進む。いま、手書き文字ブロック1903を基準ブロックである手書き文字ブロック1902の右側に加えた場合には、結合後のブロックの右端が記入領域1900を超えることになる。したがって、判定結果は「Yes」となり、次のS2015に進むことになる。
S2015では、注目する待機ブロックを、基準ブロックである待機ブロックに結合する処理が実行される。これにより、待機ブロック同士が繋がった暫定の結合ブロック(結合画像)が生成されることになる。いま、手書き文字ブロック1902と1903とが繋がった、文字列「西山2-2-22」に対応する暫定結合ブロック(図19(b)を参照)が得られることになる。このような処理によって、メインブロックと結合する前に、待機ブロック同士の結合がなされることになる。
S2016では、処理されていない待機ブロックが残っているかどうかが判定される。未処理の待機ブロックがあれば、まずS2017に進んで基準ブロックが更新される。基準ブロックの更新とは、注目待機ブロックであった手書き文字ブロックを次の基準ブロックに設定する処理である。そして更新後はS2012に戻り、同様の処理が次の注目待機ブロックを対象として続行される。これにより複数回に渡って改行が繰り返されていた場合にも対応可能となる。一方、すべての待機ブロックについての処理が完了していれば、S2018に進む。
S2018では、S2015で生成された暫定結合ブロック又は結合処理の対象とならなかった単独の待機ブロックを、メインブロックに結合する処理が実行される。いま、メインブロックとしての手書き文字ブロック1901に、“西山”と“2-2-22”とをまとめた暫定結合ブロック(不図示)が結合された、図19(c)に示すような結合ブロックが最終的に得られることになる。
S2019では、すべての記入領域について上述のループ処理が完了したか否かが判定される。未処理の記入領域があればS2002に戻って次の記入領域を対象として処理が続行される。一方、すべての記入領域についての処理が完了していれば、本処理を終了し、図12のフローに戻ることになる。
以上が、本実施形態に係る、手書き文字ブロック結合処理の内容である。なお、待機ブロックに設定するかどうか、待機ブロック同士を結合するかどうかを決める際の条件として示した上述の各条件は、そのすべてが必要と言う訳ではないことは実施形態1及び2と同様である。
以上のとおり本実施形態によれば、手書き文字が複合的な要因で不連続になっていても、一続きの単一の文字ブロックとして文書画像から抽出することができる。その結果、OCR処理における文字認識精度を向上させることができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

Claims (19)

  1. 文書をスキャンして得られた文書画像から手書き文字の文字情報を取得するための情報処理装置であって、
    前記文書画像から、前記手書き文字に対応する第1の画像領域を分離する分離手段と、
    分離された前記第1の画像領域から、ベースラインが共通し近接する文字から成る文字ブロックを抽出する解析手段と、
    前記解析手段によって複数の文字ブロックが抽出された場合、当該複数の文字ブロックの位置関係に基づいて、文字ブロック同士を結合して単一の文字ブロックを生成する結合手段と、
    を備えたことを特徴とする情報処理装置。
  2. 前記結合手段は、
    抽出された前記複数の文字ブロックをグループ分けし、
    グループを構成する文字ブロックのうち主要な文字行を形成している文字ブロックを第1の文字ブロックとして決定し、
    前記グループを構成する文字ブロックであって、前記第1の文字ブロック以外の第2の文字ブロックが所定の条件を満たす場合に、当該第2の文字ブロックを前記第1の文字ブロックに結合する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記分離手段は、前記文書画像から、前記手書き文字が記入される前の前記文書の状態を表す第2の画像領域をさらに分離し、
    前記グループ分けは、抽出された前記複数の文字ブロックを、前記第2の画像領域における特定の項目に関する手書き用の記入欄に対応する空白領域を単位とするグループに分ける処理である、ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記主要な文字行を形成している文字ブロックは、前記空白領域における文字の書き出し位置にある文字ブロック、又はブロック長或いはブロック面積が最大の文字ブロックである、ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記所定の条件には、前記第2の文字ブロックが第1の文字ブロックの延長方向に連続し、かつ、前記第2の文字ブロックのベースラインと前記第1の文字ブロックのベースラインとがずれていることが含まれることを特徴とする請求項4に記載の情報処理装置。
  6. 前記所定の条件には、さらに、前記第1の文字ブロックの延長方向に前記第1の画像領域における黒画素領域が存在することが含まれることを特徴とする請求項5に記載の情報処理装置。
  7. 前記所定の条件には、さらに、前記第1の文字ブロックの文字サイズに対する、前記第2の文字ブロックの文字サイズの比が、所定の範囲内にあることが少なくとも含まれることを特徴とする請求項5又は6に記載の情報処理装置。
  8. 前記所定の条件には、前記第2の文字ブロックが、前記第1の文字ブロックの改行位置に存在することが含まれることを特徴とする請求項4に記載の情報処理装置。
  9. 前記所定の条件には、さらに、前記第2の文字ブロックを、前記第1の文字ブロックに結合した場合に、結合後の文字ブロックが前記空白領域を超えることが含まれることを特徴とする請求項8に記載の情報処理装置。
  10. 前記所定の条件には、さらに、前記第1の文字ブロックの文字サイズに対する、前記第2の文字ブロックの文字サイズの比が、所定の範囲内にあることが少なくとも含まれることを特徴とする請求項8又は9に記載の情報処理装置。
  11. 前記結合手段は、
    抽出された前記複数の文字ブロックをグループ分けし、
    グループを構成する文字ブロックのうち主要な文字行を形成している文字ブロックを第1の文字ブロックとして決定し、
    前記グループを構成する文字ブロックであって、前記第1の文字ブロック以外の第2及び第3の文字ブロックが所定の条件を満たす場合に、当該第2及び第3の文字ブロックを前記第1の文字ブロックに結合する、
    ことを特徴とする請求項1に記載の情報処理装置。
  12. 前記分離手段は、前記文書画像から、前記手書き文字が記入される前の前記文書の状態を表す第2の画像領域をさらに分離し、
    前記グループ分けは、抽出された前記複数の文字ブロックを、前記第2の画像領域における特定の項目に関する手書き用の記入欄に対応する空白領域を単位とするグループに分ける処理である、ことを特徴とする請求項11に記載の情報処理装置。
  13. 前記所定の条件には、前記第1の文字ブロックの延長方向に、前記第2及び第3の文字ブロックが存在することが含まれることを特徴とする請求項11に記載の情報処理装置。
  14. 前記所定の条件には、さらに、前記第3の文字ブロックが、前記第2の文字ブロックの改行位置に存在することが含まれることを特徴とする請求項13に記載の情報処理装置。
  15. 前記所定の条件には、さらに、前記第3の文字ブロックを、前記第2の文字ブロックに結合した場合に、結合後の文字ブロックが前記空白領域を超えることが含まれることを特徴とする請求項13又は14に記載の情報処理装置。
  16. 前記所定の条件には、さらに、前記第1の文字ブロックの文字サイズに対する、前記第2の文字ブロックの文字サイズの比が、所定の範囲内にあることが少なくとも含まれることを特徴とする請求項13乃至15のいずれか1項に記載の情報処理装置。
  17. 前記結合手段によって生成された単一の文字ブロックに対して文字認識処理を行って、前記文字情報を取得する処理手段をさらに備えたことを特徴とする請求項1乃至16のいずれか1項に記載の情報処理装置。
  18. 文書をスキャンして得られた文書画像から手書き文字の文字情報を取得するための情報処理装置の制御方法であって、
    前記文書画像から、前記手書き文字に対応する第1の画像領域を分離する分離ステップと、
    前記分離ステップにて分離された前記第1の画像領域から、ベースラインが共通し近接する文字から成る文字ブロックを抽出する解析ステップと、
    前記解析ステップにて複数の文字ブロックが抽出された場合、当該複数の文字ブロックの位置関係に基づいて、文字ブロック同士を結合して単一の文字ブロックを生成する結合ステップと、
    を含むことを特徴とする制御方法。
  19. コンピュータを、請求項1乃至17のいずれか1項に記載の情報処理装置として機能させるためのプログラム。
JP2020205910A 2020-12-11 2020-12-11 情報処理装置、情報処理方法及びプログラム Pending JP2022092917A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020205910A JP2022092917A (ja) 2020-12-11 2020-12-11 情報処理装置、情報処理方法及びプログラム
US17/540,888 US11908215B2 (en) 2020-12-11 2021-12-02 Information processing apparatus, information processing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020205910A JP2022092917A (ja) 2020-12-11 2020-12-11 情報処理装置、情報処理方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2022092917A true JP2022092917A (ja) 2022-06-23

Family

ID=81942851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020205910A Pending JP2022092917A (ja) 2020-12-11 2020-12-11 情報処理装置、情報処理方法及びプログラム

Country Status (2)

Country Link
US (1) US11908215B2 (ja)
JP (1) JP2022092917A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022092119A (ja) * 2020-12-10 2022-06-22 キヤノン株式会社 画像処理装置、画像処理方法およびプログラム
US11948383B2 (en) * 2021-04-06 2024-04-02 Capital One Services, Llc Document classification of files on the client side before upload
CN117355842A (zh) * 2021-04-15 2024-01-05 百可德罗德公司 用于保护深度图像分类器的系统和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3108979B2 (ja) 1994-07-28 2000-11-13 セイコーエプソン株式会社 画像処理方法および画像処理装置
JP2006092346A (ja) * 2004-09-24 2006-04-06 Fuji Xerox Co Ltd 文字認識装置、文字認識方法および文字認識プログラム
JP6286866B2 (ja) 2013-05-20 2018-03-07 オムロン株式会社 画像処理装置および画像処理方法
US10055659B2 (en) * 2015-05-04 2018-08-21 King Fahd University Of Petroleum And Minerals Systems and associated methods for arabic handwriting using synthetic extension concatenation and synthesis

Also Published As

Publication number Publication date
US11908215B2 (en) 2024-02-20
US20220189187A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
JP2022092917A (ja) 情報処理装置、情報処理方法及びプログラム
JP7391672B2 (ja) 文書を電子化するための画像処理システム、その制御方法及びプログラム
CN111835933B (zh) 图像处理设备及其控制方法和存储介质
JP7234024B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP7297510B2 (ja) ユーザ操作のためのガイダンスを表示する画像処理装置、その制御方法及びプログラム
JP2022096218A (ja) 情報処理装置、情報処理システム、その制御方法及びプログラム
JP7225017B2 (ja) タッチパネルを用いた文字入力のための画像処理装置、その制御方法及びプログラム
CN111835934B (zh) 图像处理设备及其控制方法和存储介质
JP2021184190A (ja) 画像処理装置、画像処理方法、およびプログラム
JP2023053602A (ja) 装置、情報処理方法、及びプログラム
JP2021164132A (ja) 画像処理システム、及びプログラム
JP2024034778A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
US11620840B2 (en) Image processing apparatus for extracting a desired character string from a scanned image
JP7358663B2 (ja) タッチパネルを用いた文字入力のための画像処理装置、その制御方法及びプログラム
US20240193975A1 (en) Image processing apparatus, image processing method, and storage medium
JP7387282B2 (ja) スキャン画像のプレビュー表示を行なう画像処理装置、その制御方法及びプログラム
JP2024034740A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
JP2023054708A (ja) 情報処理装置、文書分割方法、及びプログラム
JP2022045011A (ja) 画像処理装置、画像処理装置の制御方法およびプログラム
JP2023120267A (ja) タッチパネルを用いた文字入力のための画像処理装置、その制御方法及びプログラム
JP2022159774A (ja) 画像処理装置、画像処理システム、その制御方法及びプログラム
JP2020177526A (ja) スキャン画像のプレビュー表示を行う画像処理装置、その制御方法及びプログラム
JP2020178284A (ja) スキャン画像のプレビュー表示を行う画像処理装置、その制御方法及びプログラム
JP2020177523A (ja) スキャン画像のプレビュー表示を行う画像処理装置、その制御方法及びプログラム
JP2023071227A (ja) 情報処理装置、情報処理装置の制御方法及びプログラム