JP2017156853A - 生成装置、および、コンピュータプログラム - Google Patents
生成装置、および、コンピュータプログラム Download PDFInfo
- Publication number
- JP2017156853A JP2017156853A JP2016037555A JP2016037555A JP2017156853A JP 2017156853 A JP2017156853 A JP 2017156853A JP 2016037555 A JP2016037555 A JP 2016037555A JP 2016037555 A JP2016037555 A JP 2016037555A JP 2017156853 A JP2017156853 A JP 2017156853A
- Authority
- JP
- Japan
- Prior art keywords
- character
- blank
- data
- line
- image
- 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
Links
Images
Landscapes
- Character Input (AREA)
- Character Discrimination (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
【課題】 画像の見栄えを向上する。【解決手段】文字画像中の連続な特定範囲内に、非空白文字領域とは異なる文字領域であって、非空白位置データによってそれぞれの位置が表される2個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する。孤立空白文字領域が存在すると判断された場合に、文書データの特定範囲に対応する特定文書データを、特定範囲内の非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、文字画像データを用いることによって、生成する。孤立空白文字領域が存在すると判断されなかった場合に、特定文書データを、特定範囲内の非空白文字領域に対して付与処理を行うことによって、生成する。【選択図】 図1
Description
本明細書は、文書データを生成する技術に関する。
従来から、文書を光学スキャナで読み取って得られた画像データ(例えば、ビットマップデータ)を用いて、文書を表す文書データを生成する技術が存在している。この技術においては、文字認識技術を用いて画像データ中の文字を認識し、認識した文字について文字コードを示す情報を文書データの展開時に使用することを示す情報を付与する付与処理を行うことにより、展開の結果、高い分解能の文書データが生成され得る。
ところが、実際には文字が存在するにも係らず文字が存在していないと判断される場合があった。そして、このように判断された部分については、上記付与処理が実行されずに文書データが生成される場合があった。このような判断が、連続する文字列の途中の文字で生じると、連続する文字列であるにもかかわらず、文書データにおいて上記付与処理の実行が部分的になってしまう場合があった。
本明細書は、文書を表す画像の見栄えを向上し得る技術を開示する。
本明細書は、例えば、以下の適用例を開示する。
[適用例1]
文字画像データと位置データとを用いて文書データを生成する生成装置であって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記生成装置は、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される2個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断部と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成部と、
を備え、
前記生成部は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
生成装置。
文字画像データと位置データとを用いて文書データを生成する生成装置であって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記生成装置は、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される2個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断部と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成部と、
を備え、
前記生成部は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
生成装置。
この構成によれば、孤立空白文字領域が存在すると判断された場合には、非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、文字画像データを用いることによって特定文書データが生成され、孤立空白文字領域が存在すると判断されなかった場合には、付与処理を行うことによって特定文書データが生成されるので、画像の見栄えを向上できる。
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像データの生成方法および生成装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
A.第1実施例:
図1は、実施例の複合機200を示す説明図である。複合機200は、制御装置202と、スキャナ部280と、印刷実行部290と、を有している。制御装置202は、プロセッサ210と、揮発性記憶装置220と、不揮発性記憶装置230と、画像を表示する表示部240と、ユーザによる操作を受け入れる操作部250と、通信インタフェース270と、を有している。これらの要素は、バスを介して互いに接続されている。
図1は、実施例の複合機200を示す説明図である。複合機200は、制御装置202と、スキャナ部280と、印刷実行部290と、を有している。制御装置202は、プロセッサ210と、揮発性記憶装置220と、不揮発性記憶装置230と、画像を表示する表示部240と、ユーザによる操作を受け入れる操作部250と、通信インタフェース270と、を有している。これらの要素は、バスを介して互いに接続されている。
プロセッサ210は、データ処理を行う装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。
不揮発性記憶装置230は、プログラム232を格納している。プロセッサ210は、プログラム232を実行することによって、種々の機能を実現する(詳細は、後述)。プロセッサ210は、プログラム232の実行に利用される種々の中間データを、記憶装置(例えば、揮発性記憶装置220、不揮発性記憶装置230のいずれか)に、一時的に格納する。本実施例では、プログラム232は、複合機200の製造者によって、ファームウェアとして、不揮発性記憶装置230に予め格納されている。ただし、プログラム232の少なくとも一部が、外部から取得されて不揮発性記憶装置230に格納されるように、複合機200が構成されていてもよい。例えば、プロセッサ210は、ユーザの指示に応じて、プログラム232の一部を図示しない外部のサーバから取得し、取得したプログラムを不揮発性記憶装置230に格納してもよい。
表示部240は、画像を表示する装置であり、例えば、液晶ディスプレイである。操作部250は、ユーザによる操作を受け取る装置であり、例えば、表示部240上に重ねて配置されたタッチパネルである。ユーザは、操作部250を操作することによって、種々の指示を複合機200に入力可能である。
通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。
スキャナ部280は、CCDやCMOSなどの光電変換素子を用いて光学的に文書等の対象物を読み取ることによって、読み取った画像(「スキャン画像」と呼ぶ)を表すスキャンデータを生成する。スキャンデータは、例えば、カラーのスキャン画像を表すRGBのビットマップデータである。なお、スキャンデータの形式は、他の任意の形式であってよい(例えば、JPEG形式のデータ、スキャン画像を表すビットマップデータを含むPDF(Portable Document Format)形式のデータ等)。なお、スキャンデータは、外部装置から取得されてもよい。印刷実行部290は、所定の方式(例えば、レーザ方式や、インクジェット方式)で、用紙(印刷媒体の一例)上に画像を印刷する装置である。
制御装置202(本実施例では、具体的には、プロセッサ210)は、ユーザの指示に従って、ユーザによって指定されたデータを用いて印刷実行部290に画像を印刷させることができる。また、制御装置202は、ユーザの指示に従って、スキャナ部280を駆動し、対象物を光学的に読み取ることによって、対象物を表す文書データを生成することができる。以下、制御装置202が、ユーザによって指定された対象データを用いて印刷実行部290に画像を印刷させることとして、説明を行う。
図2は、印刷処理の例のフローチャートである。この印刷処理は、例えば、ユーザが操作部250に印刷の指示を入力した場合に、開始される。印刷の指示は、印刷に用いられる対象データを指定する指示を含んでいる。対象データを格納する記憶装置としては、任意の記憶装置を採用可能である。例えば、不揮発性記憶装置230に格納されたデータが、対象データとして指定されてもよい。また、通信インタフェース270に接続された他の装置(例えば、リームバブルメモリ)に格納されたデータが、対象データとして指定されてもよい。S10では、プロセッサ210は、操作部250を介して入力されたユーザの印刷指示によって指定された対象データを取得する。
図3は、対象データによって表される対象画像の例を示す概略図である。図中の対象画像IM1は、文字を表す文書を表している。この対象画像IM1は、互いに離れた3個の文字画像TA1、TA2、TA3を表している。各文字画像TA1、TA2、TA3は、それぞれ、複数の文字を表している。このような対象画像IM1を表す対象データの形式としては、種々の形式が採用され得る。例えば、PDF(Portable Document Format)形式のように、文字画像を表すビットマップデータと、文字画像の文字を表す文字コードデータ(例えば、ユニコード(Unicode)のデータ)と、文字の位置を表す位置データと、を含む形式が採用され得る。ビットマップデータと文字コードデータと位置データとのセットは、文字画像TA1、TA2、TA3毎に設けられる。このように、ビットマップデータと文字コードデータと位置データとを含むPDFデータは、例えば、文書を光学スキャナで読み取って得られた画像データ中の文字を文字認識技術によって認識することによって、生成される(文字認識技術としては、公知の技術を採用可能である)。以下、対象データが、このようなPDFデータであることとして、説明する。なお、図示を省略するが、ビットマップデータは、第1方向Dxと、第1方向Dxに垂直な第2方向Dyと、に沿ってマトリクス状に配置された複数の画素のそれぞれの色値(ここでは、RGBのそれぞれの階調値)を表している。
図2のS20では、プロセッサ210は、対象データを用いて、印刷用の文書データを生成する。S20では、文字画像の文字の見栄えが向上するように、文字コードデータを用いて、文書データが生成される。本実施例では、生成される文書データは、RGBのビットマップデータである。S20の詳細については、後述する。
S30では、プロセッサ210は、文書データ(ここでは、RGBのビットマップデータ)に対して色変換処理を実行して、印刷に利用可能な色材の種類に対応する画像データを生成する。本実施例では、CMYKビットマップデータが生成される。色変換処理は、RGBの階調値とCMYKの階調値との対応関係を定める図示しないルックアップテーブルを用いて行われる(例えば、補間)。
S40では、プロセッサ210は、CMYKビットマップデータに対してハーフトーン処理を実行して、ドットの形成状態を、画素ごと、かつ、インクの種類ごとに、表すドットデータを生成する。本実施例では、ハーフトーン処理は、誤差マトリクスを利用した誤差拡散処理を用いて実行される。これに代えて、ディザマトリクスを用いるハーフトーン処理を採用してもよい。
S50では、プロセッサ210は、ドットデータを用いて印刷データを生成する。印刷データは、印刷実行部290を制御するための所定のデータ形式で表されたデータである。プロセッサ210は、例えば、印刷に用いられる順にドットデータを並べるとともに、各種のプリンタ制御コードや、データ識別コードを付加して印刷データを生成する。
S60では、プロセッサ210は、生成した印刷データを、印刷実行部290に供給する。S70では、印刷実行部290は、受信した印刷データに従って、画像を印刷する。以上により、図2の印刷処理が終了する。
図4は、図2の文書データ生成処理(S20)の例を示すフローチャートである。プロセッサ210は、図4の処理を、文字画像毎に実行する。本実施例では、プロセッサ210は、対象画像IM1(図3)のうち、ビットマップデータと文字コードデータと位置データとによって表される部分を、文字画像として用いる。以下、処理対象の文字画像を、「対象文字画像」とも呼ぶ。S100では、プロセッサ210は、データ取得処理を実行する。図5は、データ取得処理の例を示すフローチャートである。このデータ取得処理では、対象文字画像内の各文字の空白フラグF1が設定される。S200では、プロセッサ210は、文字番号iと、空白文字数Nbと、文字数Ntとを、初期化する(i=1、Nb=0、Nt=0)。文字コードデータと位置データとは、文字画像に含まれる複数の文字のそれぞれの情報を、1文字ずつ順番に表している。文字番号iは、複数の文字のうちの1つの文字を特定する番号であり、先頭から数えた文字の順番を示している。
S205では、プロセッサ210は、文字数Ntに1を加算する。S210では、プロセッサ210は、i番目の文字の情報を取得する。取得される情報は、文字コードT(i)と、第1方向Dxの文字位置Px(i)と、第2方向Dyの文字位置Py(i)と、である。情報を示す符号に添えられた「(i)」は、その情報がi番目の文字の情報であることを示している(後述する他の情報に関しても、同様)。本実施例では、これらの情報T(i)、Px(i)、Py(i)は、対象データに含まれる文字コードデータと位置データとから、取得される。
図3の下部には、文字画像TA3の例が示されている。図中の複数のブロックBLは、それぞれ、1個の文字を表す領域である。第1方向Dxに沿って並ぶ複数のブロックBLが、行を形成している。文字番号iは、1つの行の中では、第1方向Dxに向かって1ずつ増加する。そして、1つの行の末尾のブロックBLeの次のブロックBLは、第2方向Dyの隣の行の先頭(すなわち、第1方向Dxとは反対方向側の端)のブロックBLである。
図5のS220では、プロセッサ210は、文字コードT(i)が、「空白文字」を表しているか否かを判断する。判断結果がYesである場合、プロセッサ210は、S230で空白フラグF1(i)を「1」に設定し、S240で空白文字数Nbに1を加算し、S260に移行する。空白フラグF1は、文字が空白文字であるか否かを示すフラグである。F1=1は、文字が空白文字であることを示し、F1=ゼロは、文字が空白文字ではないことを示している。S220の判断結果がNoである場合、プロセッサ210は、S250で空白フラグF1(i)をゼロに設定して、S260に移行する。図3の下部の文字画像TA3の例では、濃いハッチングが付されたブロックBLbが、空白フラグF1が1であるブロックを示している(空白ブロックBLbとも呼ぶ)。なお、「空白文字」を表す文字コードT(i)は、文字の誤認識によって設定される場合がある。
図5のS260では、プロセッサ210は、全ての文字の処理が完了したか否かを判断する。未処理の文字が残っている場合(S260:No)、プロセッサ210は、S270で文字番号iに1を加算し、S205に移行して、更新された文字番号iの文字の処理を実行する。全ての文字の処理が完了した場合(S260:Yes)、S265で、プロセッサ210は、空白割合Rを算出する。空白割合Rは、空白文字数Nbを文字数Ntで除して得られる商である。
S280では、プロセッサ210は、空白割合Rが第1閾値Th1より大きいか否かを判断する。第1閾値Th1は、例えば、ゼロに近い正値である。Th1≧Rである場合(S280:No)、S285で、プロセッサ210は、図4の処理で生成されるべき文書データ(ここでは、ビットマップデータ)のうちの対象文字画像を表す部分に、対象文字画像の全ての文字の文字コードを付与する。すなわち、対象文字画像の全ての文字に、対応する文字コードが付与される。そして、プロセッサ210は、付与された文字コードに対応付けられた文字をレンダリングすることによって、対象文字画像を表すビットマップデータを生成する。図示を省略するが、不揮発性記憶装置230には、文字コードと、その文字コードに対応付けられた文字を表すベクタデータ(アウトラインフォントとも呼ばれる)と、の対応関係を表すフォントデータが、予め格納されている。プロセッサ210は、フォントデータを参照することによって、対象文字画像の全ての文字のレンダリングを行う(ラスタライズとも呼ばれる)。ここで、プロセッサ210は、地色と文字色とを、対象データに含まれる元のビットマップデータを解析することによって、特定することが好ましい。例えば、対象文字画像の縁部分の色を、地色として用いてよい。また、対象文字画像に含まれる色のうちの地色以外の色を、文字色として用いてよい。S285の完了に応じて、プロセッサ210は、図5の処理、ひいては、図4の処理を終了する。
なお、レンダリングは、印刷用の解像度で行われることが好ましい。ただし、対象データに含まれる元のビットマップデータの解像度と同じ解像度でレンダリングが行われてもよい。この場合、プロセッサ210は、レンダリングによって生成されたビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。また、対象文字画像が空白ブロックBLbを含む場合には、空白ブロックBLbの画像を表すデータとして、対象データに含まれる元のビットマップデータのうちの空白ブロックBLbに対応する部分をそのまま採用してもよい。ここで、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。また、フォントデータは、プログラム232に組み込まれていてもよい。
Th1<Rである場合(S280:Yes)、S290で、プロセッサ210は、空白割合Rが第2閾値Th2未満であるか否かを判断する。第2閾値Th2は、例えば、第1閾値Th1より大きく、100%以下の値である。R≧Th2である場合(S290:No)、S295で、プロセッサ210は、図4の処理で生成されるべき文書データ(ここでは、ビットマップデータ)のうちの対象文字画像を表す部分として、対象データに含まれる元のビットマップデータをそのまま用いる。そして、プロセッサ210は、図5の処理、ひいては、図4の処理を終了する。なお、元のビットマップデータの解像度が、印刷用の解像度と異なる場合、プロセッサ210は、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。
R<Th2である場合(S290:Yes)、プロセッサ210は、図5の処理を終了し、図4のS110に移行する。この段階で、対象文字画像の全ての文字のそれぞれには、空白フラグF1と、文字コードTと、文字位置Px、Pyと、が対応付けられている。図5の下部には、文字と情報F1、T、Px、Pyとの処理例が示されている。この例では、文字数NtがL個である。そして、1番目とz番目の文字の空白フラグF1(z)が「1」である。
図6は、図4のS110のブロック抽出処理の例のフローチャートである。このブロック抽出処理では、対象文字画像内の各文字の改行フラグF2と各行の改行位置Prと段落末フラグF3とが設定される。S300では、プロセッサ210は、文字番号iと、行番号jと、列番号kとを、初期化する(i=1、j=1、k=1)。行番号jと列番号kとは、対象文字画像内でのi番目の文字の行と列とを示すために用いられる。なお、行番号jは、第2方向Dy(図3)に沿って数えた行の順番を示している。列番号kは、行の先頭から第1方向Dxに沿って数えた文字の順番を示している。
図6のS310では、プロセッサ210は、j行k列の文字の情報を取得する。取得される情報は、文字コードT(j,k)と、第1方向Dxの文字位置Px(j,k)と、第2方向Dyの文字位置Py(j,k)と、空白フラグF1(j,k)と、である。情報を示す符号に添えられた「(j,k)」は、その情報がj行k列の文字の情報であることを示している(後述する他の情報に関しても、同様)。ここで、プロセッサ210は、j行k列の文字がi番目の文字であることとして、i番目の文字の情報T、Px、Py、F1を、j行k列の文字の情報T、Px、Py、F1として、取得する。すなわち、T(j,k)=T(i)、Px(j,k)=Px(i)、Py(j,k)=Py(i)、F1(j,k)=F1(i)である。
S320では、プロセッサ210は、i+1番目の文字が、i番目の文字の次の行の文字であるか否かを判断する。図3の例では、2つの文字の間で第2方向Dyの位置が大きく異なる場合、2つの文字が互いに異なる行に位置している。そこで、本実施例では、プロセッサ210は、i+1番目の文字の文字位置Py(i+1)とi番目の文字の文字位置Py(i)との間の差が、行閾値Thrよりも大きいか否かを判断する。行閾値Thrは、2個の文字が互いに異なる行に位置していると判断するための基準を示している。位置Pyの差が行閾値Thrよりも大きいことは、i+1番目の文字がi番目の文字の次の行に位置している、すなわち、i番目の文字の後ろで改行されていることを示している。
なお、行閾値Thrは、予め決められている。この代わりに、プロセッサ210は、対象データの解析結果に応じて行閾値Thrを決定してもよい。例えば、位置データによって表される複数の文字の文字位置Pyの分布から、隣接する2個の行の間の位置Pyの差である行間を特定し、この行間に応じて行閾値Thrを決定してもよい。例えば、行閾値Thrは、行間よりも若干小さい値に決定されることが好ましい(例えば、行閾値Thr=0.8×行間)。
S320の判断結果がYesである場合、S330で、プロセッサ210は、j行k列の文字の改行フラグF2(j,k)を「1」に設定する。改行フラグF2は、文字の直後で改行されているか否かを示すフラグである。F2=1は、文字の直後で改行されていることを示し、F2=ゼロは、文字の直後で改行されていないことを示している。例えば、図3の下部の例では、各行の末尾のブロックBLeの改行フラグF2が1に設定される。
図6のS340では、プロセッサ210は、j行の改行位置Pr(j)を、kに設定する。改行位置Prは、各行の改行位置を示す情報であり、改行直前の文字の列番号によって表される。
S350では、プロセッサ210は、j行が段落の最後の行であるか否かを判断する。一般的に、段落の最後の行の文字数は、他の行の文字数以下である。例えば、図3の下部の例では、文字画像TA3は、3個の段落PR1、PR2、PR3を表している。第1段落PR1と第3段落PR3とは、それぞれ、複数の行で構成され、第2段落PR2は、1つの行R2で構成されている。段落PR1、PR2、PR3の最後の行R1e、R2、R3eの文字数は、最後の行R1e、R2、R3e以外の行の文字数よりも、少ない。従って、最後の行R1e、R2、R3eの改行位置は、他の行の改行位置と比べて、行頭に近い(すなわち、第1方向Dxとは反対方向側に位置している)。そこで、本実施例では、プロセッサ210は、j行の改行位置Pr(j)が、対象文字画像に対応付けられた最大改行位置Prmよりも小さいか否かを判断する。最大改行位置Prmは、例えば、S340で設定済みの改行位置Prのうちの最大値である。これに代えて、プロセッサ210は、S310よりも前に全ての行の改行位置Prを特定し、そして、特定した改行位置Prのうちの最大値を、最大改行位置Prmとして採用してもよい。改行位置Pr(j)が最大改行位置Prmよりも小さいことは、j行が段落の最後の行であることを示している。なお、特に最大改行位置PrmがS340で設定済みの改行位置Prのうちの最大値である場合、先頭の行(j=1)の判断結果は、「Yes(j行は段落の最後の行である)」と「No(j行は段落の最後の行ではない)」とのうちの予め決められた結果であってもよい。
S350の判断結果がYesである場合(Pr(j)<Prm)、プロセッサ210は、S355で、j行の段落末フラグF3(j)を「1」に設定し、S360に移行する。段落末フラグF3は、行が段落の最後の行であるか否かを示すフラグである。F3=1は、行が段落の最後の行であることを示し、F3=ゼロは、行が段落の最後の行ではないことを示している。S350の判断結果がNoである場合、プロセッサ210は、S357で、j行の段落末フラグF3(j)を「ゼロ」に設定し、S360に移行する。図3の下部の例では、第1段落PR1の最後の行R1eと第2段落PR2の最後の行R2と第3段落PR3の最後の行R3eのそれぞれの段落末フラグF3が、1に設定される。他の行の段落末フラグF3は、ゼロに設定される。
S360では、プロセッサ210は、行番号jに1を加算し、列番号kをゼロに設定する。そして、プロセッサ210は、S380に移行する。
S320の判断結果がNoである場合、すなわち、i+1番目の文字とi番目の文字とが同じ行に位置している場合、プロセッサ210は、S370で、i番目の文字であるj行k列の文字の改行フラグF2(j,k)を「ゼロ」に設定し、S380に移行する。
S380では、プロセッサ210は、全ての文字の処理が完了したか否かを判断する。未処理の文字が残っている場合(S380:No)、プロセッサ210は、S390で文字番号iに1を加算し、列番号kに1を加算する。そして、プロセッサ210は、S310に移行して、更新されたi番目の文字(すなわち、更新されたj行k列の文字)の処理を実行する。
全ての文字の処理が完了した場合(S380:Yes)、プロセッサ210は、図6の処理を終了し、図4のS120に移行する。この段階で、対象文字画像の全ての文字のそれぞれには、空白フラグF1と、改行フラグF2と、段落末フラグF3と、文字コードTと、文字位置Px、Pyと、が対応付けられている。図6の下部には、文字と情報F1、F2、T、Px、Pyとの処理例が示されている。この例では、1行の文字数がt文字である。そして、行の途中の文字Tmの空白フラグF1がゼロである。
図7は、図4のS120のデータ解析処理の例のフローチャートである。このデータ解析処理では、対象文字画像内の各行のビットマップフラグF4が設定される。S400では、プロセッサ210は、行番号jと、列番号kとを、初期化する(j=1、k=1)。S405では、プロセッサ210は、j行k列の空白フラグF1(j,k)が「1」であるか否かを判断する。F1=1である場合(S405:Yes)、S410で、プロセッサ210は、j行k列の空白文字が、行頭の文字であるか否かを判断する。本実施例では、列番号kが1である場合に、判断結果がYesである。図中のS410内の括弧内の条件「かつ、段落末フラグF3(j−1)=1」は、後述する別の実施例で用いられる条件である(詳細は後述)。
S410の判断結果がNoである場合、S415で、プロセッサ210は、j行k列の空白文字が、行末の文字であるか否かを判断する。本実施例では、列番号kが改行位置Pr(j)と同じである場合に、判断結果がYesである。図中のS415内の括弧内の条件「かつ、段落末フラグF3(j)=1」は、後述する別の実施例で用いられる条件である(詳細は後述)。
S405の判断結果がYesであり、かつ、S410の判断結果がNoであり、かつ、S415の判断結果がNoである場合、S420で、プロセッサ210は、j行のビットマップフラグF4(j)を「1」に設定し、S425に移行する。ビットマップフラグF4は、後述する図4のS130で、文字コードデータを用いずに対象データに含まれる元のビットマップデータを用いるか否かを示すフラグである。F4=1は、元のビットマップデータを用いて文書データを生成することを示し、F4=ゼロは、元のビットマップデータではなく文字コードデータを用いて文書データを生成することを示している。
本実施例では、S420でビットマップフラグF4が1に設定される場合、すなわち、S405の判断結果がYesであり、S410の判断結果がNoであり、S415の判断結果がNoである場合には、空白ブロックBLbは、行頭でもなく行末でもなく行の途中に位置している。図3の下部の例では、二重線で示された空白ブロックBLbが、行の途中に位置している。これらの空白ブロックBLbは、空白フラグF1がゼロである2個のブロックBLに挟まれた位置に存在する空白文字を表す領域を、示している(以下、「孤立空白文字領域」とも呼ぶ)。1個の孤立空白文字領域は、1個以上の空白ブロックBLbが連続した領域である。孤立空白文字領域を含む行Ra、Rd、Reに関しては、S420で、ビットマップフラグF4が1に設定される。
図3の下部の例では、段落PR1、PR2、PR3の先頭の行R1s、R2、R3sの先頭のブロックBL11、BL21、BL31は、空白ブロックBLbである。これらのブロックBL11、BL21、BL31は、字下げによる空白文字を示している。また、第1段落PR1の途中の行Rcの行頭にも、空白ブロックBLbが位置している。行頭の空白ブロックBLbによって表される領域は、空白フラグF1がゼロである2個のブロックBLに挟まれていないので、孤立空白文字領域ではない。このような行頭の空白ブロックBLbに関しては、S410の判断結果が「Yes」であるので、S420は実行されない。
また、各段落PR1、PR2、PR3の最後の行R1e、R2、R3eの行末の文字BL1e、BL2e、BL3eの後ろには、空白部分BS1、BS2、BS3が形成されている。本実施例の対象データでは、行の後ろの空白部分は、空白文字として扱われていない。仮に、空白部分BS1、BS2、BS3が空白文字として扱われる場合、空白部分BS1、BS2、BS3の空白ブロックBLbに関しては、S415の判断結果が「Yes」であるので、S420は実行されない。また、空白部分BS1、BS2、BS3の空白ブロックBLbは、空白フラグF1がゼロである2個のブロックBLに挟まれていないので、孤立空白文字領域ではない。
S405の判断結果がNo、または、S410の判断結果がYes、または、S415の判断結果がYesである場合、S430で、プロセッサ210は、j行k列の文字が、j行の最初の非空白文字であるか否かを判断する。ここで、非空白文字は、空白フラグF1=ゼロの文字である。判断結果がYesである場合、プロセッサ210は、S435で、先頭文字位置P1をkに設定し、S440に移行する。先頭文字位置P1は、j行における最も行頭に近い非空白文字の位置(ここでは、列番号)を示している。S430の判断結果がNoである場合、プロセッサ210は、S435をスキップして、S440に移行する。S440では、プロセッサ210は、j行のビットマップフラグF4(j)を「ゼロ」に設定する。
S445では、プロセッサ210は、プロセッサ210は、j行の全ての文字の処理が終了したか否かを判断する。本実施例では、j行k列の改行フラグF2(j,k)が「1」である場合に、j行の全ての文字の処理が終了したと判断される。S445の判断結果がNoである場合、プロセッサ210は、S450で列番号kに1を加算して、S405に移行する。そして、次の文字(更新された列番号kの文字)の処理を実行する。
S445の判断結果がYesである場合、S455で、プロセッサ210は、先頭文字位置P1がk(この段階では、k=改行位置)と同じであるか否かを判断する。先頭文字位置P1が改行位置kと同じであることは、j行の非空白文字の総数が1であることを示している。S455の判断結果がYesである場合、プロセッサ210は、S460で、j行のビットマップフラグF4(j)を1に変更し、S425に移行する。S455の判断結果がNoである場合、プロセッサ210は、S460をスキップして、S425に移行する。
S425では、プロセッサ210は、全ての行の処理が完了したか否かを判断する。未処理の行が残っている場合(S425:No)、プロセッサ210は、S465で、行番号jに1を加算し、列番号kを1に初期化する。そして、プロセッサ210は、S405に移行して、更新されたj行のk列の文字の処理を実行する。
全ての行の処理が完了した場合(S425:Yes)、プロセッサ210は、図7の処理を終了し、図4のS130に移行する。図8は、図4のS130の描画処理の例のフローチャートである。この描画処理では、図4の処理で生成されるべき文書データ(ここでは、ビットマップデータ)のうちの対象文字画像を表す部分が生成される。S500では、プロセッサ210は、行番号jを1に初期化する。S510では、プロセッサ210は、j行のビットマップフラグF4(j)が1であるか否かを判断する。F4(j)=1である場合(S510:Yes)、S515で、j行を表すデータとして、対象データに含まれる元のビットマップデータのうちのj行を表す部分をそのまま用いる。すなわち、j行を表すデータは、文字コードデータを用いずに、元のビットマップデータを用いて、生成される。そして、プロセッサ210は、S520に移行する。なお、元のビットマップデータの解像度が、印刷用の解像度と異なる場合、プロセッサ210は、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。
F4(j)=ゼロである場合(S510:No)、プロセッサ210は、S530、S540で、文字コードデータを用いて、j行を表すビットマップデータを生成する。具体的には、S530で、プロセッサ210は、j行を表す領域を地色で塗りつぶしたビットマップデータを生成する。地色としては、例えば、対象文字画像の縁部分の色が、採用される。S540では、プロセッサ210は、図4の処理で生成されるべき文書データ(ここでは、ビットマップデータ)のうちの対象文字画像のj行を表す部分にj行の文字の文字コードを付与する。すなわち、j行の全ての文字に、対応する文字コードが付与される。そして、プロセッサ210は、付与された文字コードに対応付けられた文字を、地色のビットマップ上にレンダリングする。文字の色としては、例えば、対象文字画像に含まれる色のうちの地色以外の色が、採用される。また、レンダリングには、図5のS285で説明したフォントデータが用いられる。このようなS530、S540によって、j行の文字を表すビットマップデータが生成される。そして、プロセッサ210は、S520に移行する。
なお、本実施例では、S530、S540の処理は、印刷用の解像度で実行される。ただし、S530、S540の処理が、対象データに含まれる元のビットマップデータの解像度と同じ解像度で実行されてもよい。この場合、プロセッサ210は、S530、S540で生成されたビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。また、j行が空白ブロックBLbを含む場合には、空白ブロックBLbの画像を表すデータとして、対象データに含まれる元のビットマップデータのうちの空白ブロックBLbに対応する部分をそのまま採用してもよい。ここで、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。
S520では、プロセッサ210は、全ての行の処理が完了したか否かを判断する。未処理の行が残っている場合(S520:No)、プロセッサ210は、S550で、行番号jに1を加算し、S510に移行して、更新されたj行の処理を実行する。
全ての行の処理が完了した場合(S520:Yes)、プロセッサ210は、図8の処理、ひいては、図4の処理を終了する。これにより、印刷用の文書データが生成される。
以上のように、本実施例では、図7のS405、S410、S415でj行の中に孤立空白文字領域が存在すると判断された場合には、S420でj行のビットマップフラグF4(j)が1に設定される。そして、図8の処理では、F4(j)=1の場合、S515で、図4の処理で生成されるべきビットマップデータのうちの対象文字画像のj行を表す部分にj行の文字の文字コードが付与されず、代わりに、対象データに含まれる元のビットマップデータのうちのj行を表す部分を用いて、j行を表すデータが生成される。例えば、図3の下部の例では、孤立空白文字領域を含む行Ra、Rd、Reのデータが、文字コードの付与処理を行わずに、元のビットマップデータを用いて生成される。仮に、j行のうち孤立空白文字領域以外の領域の文字がレンダリングによって表現され、かつ、孤立空白文字領域の文字がレンダリングされずに表現される場合には、同じ行の中の孤立空白文字領域の文字と孤立空白文字領域以外の領域の文字との間の表現方法の差異が目立つ場合がある。本実施例では、孤立空白文字領域を含む行の全体を表すデータが、文字コードを用いずに、元のビットマップデータを用いて生成されるので、表現方法の差異が目立つことを抑制できる。
また、図7のS405、S410、S415でj行の中に孤立空白文字領域が存在すると判断されなかった場合には、S440で、j行のビットマップフラグF4(j)がゼロに設定され得る。そして、図8の処理では、F4(j)=ゼロの場合、S530、S540で、図4の処理で生成されるべき文書データ(ここでは、ビットマップデータ)のうちの対象文字画像のj行を表す部分にj行の文字の文字コードが付与され、文字コードに対応付けられた文字のレンダリングによってj行を表すデータが生成される。従って、元のビットマップデータを用いる場合と比べて、文字を精細に表現可能である。
このように、行の中に孤立空白文字領域が存在すると判断される場合とそうではない場合との両方において、画像の見栄えを向上できる。
また、本実施例では、ビットマップフラグF4を用いた処理は、行毎に行われる。従って、行の中に孤立空白文字領域が存在すると判断される場合には、行の中の孤立空白文字領域の文字と孤立空白文字領域以外の領域の文字との間の表現方法の差異が目立つことを抑制できる。また、行の中に孤立空白文字領域が存在すると判断されない場合には、レンダリングによって、文字を精細に表現できる。
また、図7で説明したように、孤立空白文字領域は、1文字分の空白ブロックBLb、または、連続するN文字分(Nは2以上の整数)の空白ブロックBLbによって表される領域である。従って、1文字分の空白、または、N文字分の空白を表す孤立空白文字領域が不自然に表現されることを抑制できる。
また、図5のS260、S265、S280、S285で説明したように、空白割合R(すなわち、対象文字画像の全体に対する空白文字の割合)が第1閾値Th1以下である場合(S280:No)、S285が実行される。S285では、プロセッサ210は、図4の処理で生成されるべき文書データ(ここでは、ビットマップデータ)のうちの対象文字画像の全体を表す部分に、対象文字画像の全ての文字の文字コードを付与する(すなわち、対象文字画像の全ての文字に、対応する文字コードが付与される)。そして、プロセッサ210は、文字コードに対応付けられた文字のレンダリングによって、対象文字画像を表すデータを生成する。従って、空白文字の割合が小さい場合に、文字を精細に表現できる。
また、図5のS260、S265、S290、S295で説明したように、空白割合Rが第2閾値Th2以上である場合(S290:No)、S295が実行される。S295では、プロセッサ210は、文字コードの付与処理を行わずに(すなわち、文字コードデータを用いずに)、対象データに含まれる元のビットマップデータを用いて、対象文字画像を表すデータを生成する。仮に、対象文字画像のうち空白ブロックBLb以外の領域の文字がレンダリングによって表現され、かつ、空白ブロックBLbの文字がレンダリングされずに表現される場合には、同じ文字画像の中の空白ブロックBLbの文字と空白ブロックBLb以外の領域の文字との間の表現方法の差異が目立つ場合がある。本実施例では、空白文字の割合が大きい場合には、文字コードの付与処理を行わずに(すなわち、文字コードデータを用いずに)、対象データに含まれる元のビットマップデータを用いて、対象文字画像を表すデータが生成されるので、表現方法の差異が目立つことを抑制できる。
また、図7のS405、S410、S440で説明したように、空白ブロックBLbの位置が行頭である場合には、S440で、ビットマップフラグF4(j)がゼロに設定され得る。そして、S450、S405、S410、S415によって、同じ行に孤立空白文字領域が存在するか否かが判断される。そして、孤立空白文字領域が存在しないと判断された場合、S420が実行されずにビットマップフラグF4(j)がゼロに維持される。そして、図8の処理では、F4(j)=ゼロの場合、S530、S540で、文書データのうち対象文字画像のj行を表す部分は、文字コードを用いて(ここでは、レンダリングによって)生成される。例えば、図3の下部の例では、行R1s、Rc、R2、R3sにおいては、行頭のみに空白ブロックBLbが配置されている。従って、これらの行R1s、Rc、R2、R3sを表すデータは、レンダリングによって生成される。従って、元のビットマップデータを用いる場合と比べて、文字を精細に表現可能である。また、行頭の空白ブロックBLbは、空白フラグF1がゼロである2個のブロックBLに挟まれているわけではないので、孤立空白文字領域と比べて、表現方法の差異が目立ちにくい。従って、行頭の空白ブロックBLbと他の部分との間で表現方法が異なる場合であっても、画像の見栄えの低下を抑制できる。
また、図7のS455、S460で説明したように、j行の非空白文字の総数が1である場合、孤立空白文字領域が存在すると判断されたか否かに関わらず、ビットマップフラグF4(j)は、1に設定される。そして、図8の処理では、F4(j)=1の場合、S515で、文字コードが付与されず(すなわち、文字コードデータが用いられず)、代わりに、対象データに含まれる元のビットマップデータのうちのj行を表す部分を用いて、j行を表すデータが生成される。従って、1個の文字が不自然に表現されることを抑制できる。
B.第2実施例:
ビットマップフラグF4を設定するための条件としては、上記の第1実施例の条件に代えて、他の種々の条件を採用可能である。例えば、図7のS410の条件は、「j行k列の空白文字が、行頭の文字である」かつ「j行が段落の最初の行である」であってもよい(以下「第1段落条件」とも呼ぶ)。プロセッサ210は、1つ前の行の段落末フラグF3(j−1)が1である場合に、1つ前の行が段落の最後の行である、すなわち、j行が段落の最初の行である、と判断できる。また、プロセッサ210は、行番号jが1である場合にも、j行が段落の最初の行である、と判断できる。
ビットマップフラグF4を設定するための条件としては、上記の第1実施例の条件に代えて、他の種々の条件を採用可能である。例えば、図7のS410の条件は、「j行k列の空白文字が、行頭の文字である」かつ「j行が段落の最初の行である」であってもよい(以下「第1段落条件」とも呼ぶ)。プロセッサ210は、1つ前の行の段落末フラグF3(j−1)が1である場合に、1つ前の行が段落の最後の行である、すなわち、j行が段落の最初の行である、と判断できる。また、プロセッサ210は、行番号jが1である場合にも、j行が段落の最初の行である、と判断できる。
一般的に、段落の最初の行では、字下げが行われる。従って、j行が段落の最初の行である場合、行頭の空白ブロックBLbは、文字の誤認識に起因するものではなく、実際に空白文字に起因している可能性が高い。従って、その空白ブロックBLbに起因してビットマップフラグF4を1に設定するのではなく、ビットマップフラグF4をゼロに設定することによって、文字コードデータを用いてその行のデータを生成することが好ましい。
S410の条件として、上記の第1段落条件を採用すれば、空白ブロックBLbが段落の最初の行の行頭に位置している場合には、S410の判断結果がYesであるので、S440でビットマップフラグF4をゼロに設定することができる。例えば、図3の下部の例では、段落PR1、PR2、PR3の最初の行R1s、R2、R3sに関しては、行頭に空白ブロックBLbが位置しているものの、ビットマップフラグF4がゼロに設定される。従って、これらの行R1s、R2、R3sの文字を精細に表現可能である。
一方、j行が段落の途中の行である場合、行頭の空白ブロックBLbは、文字の誤認識に起因している可能性が高い。従って、その空白ブロックBLbに起因してビットマップフラグF4を1に設定することが好ましい。
S410の条件として、上記の第1段落条件を採用すれば、空白ブロックBLbが段落の途中の行の行頭に位置している場合には、S410の判断結果がNoであるので、S420でビットマップフラグF4を1に設定することができる。例えば、図3の下部の例では、第1段落PR1の途中の行Rcに関しては、行頭に空白ブロックBLbが位置しているので、S420でビットマップフラグF4が1に設定される。従って、図8のS515で元のビットマップデータを用いて行Rcのデータが生成されるので、行Rcの空白ブロックBLbの文字が不自然に表現されることを抑制できる。
なお、第2実施例では、第1実施例と同様に、孤立空白文字領域を含む行に関しては、ビットマップフラグF4が1に設定される。さらに、段落の途中の行の行頭に空白ブロックBLbが位置する場合にも、ビットマップフラグF4が1に設定される。
C.第3実施例:
図7のS415の条件は、「j行k列の空白文字が、行末の文字である」かつ、「j行が段落の最後の行である」であってもよい(以下「第2段落条件」とも呼ぶ)。プロセッサ210は、j行の段落末フラグF3(j)が1である場合に、j行が段落の最後の行である、と判断できる。
図7のS415の条件は、「j行k列の空白文字が、行末の文字である」かつ、「j行が段落の最後の行である」であってもよい(以下「第2段落条件」とも呼ぶ)。プロセッサ210は、j行の段落末フラグF3(j)が1である場合に、j行が段落の最後の行である、と判断できる。
図3の下部の例で説明したように、段落の最後の行の行末の文字の後ろには、空白部分(例えば、空白部分BS1〜BS3)が形成され得る。このような空白部分は、空白文字として認識され得る。従って、j行が段落の最後の行である場合、行末の空白ブロックBLbは、文字の誤認識に起因するものではなく、実際に空白文字に起因している可能性が高い。従って、その空白ブロックBLbに起因してビットマップフラグF4を1に設定するのではなく、ビットマップフラグF4をゼロに設定することによって、文字コードデータを用いてその行のデータを生成することが好ましい。
S415の条件として、上記の第2段落条件を採用すれば、空白ブロックBLbが段落の最後の行の行末に位置している場合には、S415の判断結果がYesであるので、S440でビットマップフラグF4をゼロに設定することができる。
一方、j行が段落の途中の行である場合、行末の空白ブロックBLbは、文字の誤認識に起因している可能性が高い。従って、その空白ブロックBLbに起因してビットマップフラグF4を1に設定することが好ましい。S415の条件として、上記の第2段落条件を採用すれば、空白ブロックBLbが段落の途中の行の行末に位置している場合には、S415の判断結果がNoであるので、S420でビットマップフラグF4を1に設定することができる。図3の下部の例において、仮に、第3段落PR3の途中の段落Rfの行末に空白ブロックBLbが位置していると仮定する。この場合、上記の第1実施例では、S415の判断結果がYesであるので、ビットマップフラグF4がゼロに設定され得る。しかし、第3実施例では、S415の判断結果がNoであるので、ビットマップフラグF4を1に設定できる。この結果、行末の空白ブロックBLbの文字が不自然に表現されることを抑制できる。
なお、第3実施例では、第1実施例と同様に、孤立空白文字領域を含む行に関しては、ビットマップフラグF4が1に設定される。さらに、段落の途中の行の行末に空白ブロックBLbが位置する場合にも、ビットマップフラグF4が1に設定される。
D.第4実施例:
図9は、図7のデータ解析処理の別の実施例のフローチャートの一部である。図7のフローチャートとの差異は、S405とS410との間に、S407が設けられている点だけである。データ解析処理の他の部分は、図7の処理と同じである。図9では、S407と他のステップとの接続のみを示し、他のステップについては、図示を省略している。
図9は、図7のデータ解析処理の別の実施例のフローチャートの一部である。図7のフローチャートとの差異は、S405とS410との間に、S407が設けられている点だけである。データ解析処理の他の部分は、図7の処理と同じである。図9では、S407と他のステップとの接続のみを示し、他のステップについては、図示を省略している。
j行k列の空白フラグF1(j,k)が1である場合(S405:Yes)、S407で、プロセッサ210は、「j行k列の空白文字が行頭の文字であり、かつ、1つ前の行の行末の文字が空白文字ではない」が満たされるか否かを判断する。上述したように、改行位置Pr(j−1)は、1つ前の行の改行位置、すなわち、1つ前の行の行末の文字の列番号を示している。従って、空白フラグF1(j−1、Pr(j−1))は、1つ前の行の行末の文字の空白フラグF1である。プロセッサ210は、空白フラグF1(j−1、Pr(j−1))がゼロである場合に、1つ前の行の行末の文字が空白文字ではない、と判断できる。
図3の下部の例で説明したように、j行が段落の途中の行である場合、行頭の空白ブロックBLbは、文字の誤認識に起因している可能性が高い。また、j行が段落の途中の行である場合、1つ前の行は段落の最後の行ではないので、1つ前の行の行末の文字は、空白文字ではない可能性が高い。例えば、図3の下部の例では、第1段落PR1の途中の行Rcの行頭に空白ブロックBLbが位置している。この行Rcの1つ前の行Rbの行末の文字は、空白文字ではない。j行k列の空白文字が、このように段落の途中の行Rcの行頭の文字である場合、S407の判断結果はYesである。
S407の判断結果がYesである場合、j行k列の空白ブロックBLbは、文字の誤認識に起因する可能性がある。そこで、本実施例では、S407の判断結果がYesである場合、プロセッサ210は、孤立空白文字領域が存在するか否かに関わらず、S420(図7)に移行して、ビットマップフラグF4(j)を1に設定する。これにより、行頭の空白ブロックBLbの文字が不自然に表現されることを抑制できる。例えば、図3の下部の例では、行Rcに関しては、ビットマップフラグF4が1に設定される。図8のS515で元のビットマップデータを用いて行Rcのデータが生成されるので、行Rcの空白ブロックBLbの文字が不自然に表現されることを抑制できる。
また、S407の判断結果がNoである場合、プロセッサ210は、S410に移行して、上記の各実施例と同様の判断を行う。
なお、第4実施例では、第1実施例と同様に、孤立空白文字領域を含む行に関しては、ビットマップフラグF4が1に設定される。さらに、段落の途中の行の行頭に空白ブロックBLbが位置する場合にも、ビットマップフラグF4が1に設定される。
E.第5実施例:
図10は、スキャン処理の例を示すフローチャートである。このスキャン処理は、ユーザが操作部250(図1)にスキャンの指示を入力した場合に、開始される。スキャン処理は、スキャナ部280によって読み取られた対象物を表す文書データを生成する処理である。
図10は、スキャン処理の例を示すフローチャートである。このスキャン処理は、ユーザが操作部250(図1)にスキャンの指示を入力した場合に、開始される。スキャン処理は、スキャナ部280によって読み取られた対象物を表す文書データを生成する処理である。
S600では、プロセッサ210は、スキャナ部280を駆動し、対象物を光学的に読み取ることによって、対象物を表すスキャンデータを取得する。以下、対象物が、複数の文字を表す文書であることとする。なお、スキャンデータは、外部装置から取得されてもよい。S610では、プロセッサ210は、スキャンデータを解析する文字認識処理を実行することによって、スキャンデータによって表されるスキャン画像中の文字を認識する。文字認識処理としては、公知の文字認識処理を採用可能である。この文字認識処理によって、プロセッサ210は、スキャン画像に含まれる文字画像の文字を表す文字コードデータと、文字の位置を表す位置データと、を取得する。例えば、スキャン画像が、図3の対象画像IM1と同じである場合、スキャン画像は、3個の文字画像TA1、TA2、TA3を表している。文字コードデータと位置データとのセットは、文字画像毎に生成される。
S620では、プロセッサ210は、文書データ生成処理を実行する。文書データ生成処理は、図4に示す文書データ生成処理と同じであり、上記の複数の実施例の文書データ生成処理から任意に選択された文書データ生成処理を採用可能である。ここで、対象データとしては、スキャンデータと、S610で取得された文字コードデータと位置データと、が用いられる。この文書データ生成処理によって、上記の各実施例と同様に、文字を精細に表現し、画像の見栄えが向上した文書データが生成される。なお、本実施例では、文字のレンダリング(例えば、図5のS285、図8のS540)は、スキャンデータの解像度と同じ解像度で行われる。また、文字画像を表すデータとしてスキャンデータが用いられる場合、解像度変換は行われない。ただし、プロセッサ210は、予め決められた解像度、または、ユーザによって選択された解像度に従って、文書データを生成してもよい。S630では、プロセッサ210は、生成した文書データを記憶装置に格納する。そして、図10の処理が終了する。
なお、文書データのデータ形式としては、任意の形式を採用可能である。本実施例では、文書データは、PDF形式のデータである。プロセッサ210は、文書データとして、S510で生成した文字コードデータと位置データとの両方を含むデータを生成する(図5のS285、図8のS540では、文字コードデータと位置データとの両方が付与される)。すなわち、文書データは、図5のS285と図8のS540とのレンダリングによって生成されたビットマップデータと、図5のS285と図8のS540とで付与された文字コードデータと位置データと、図5のS295と図8のS515で用いられたスキャンデータと、を含んでいる。
文書データを格納するための記憶装置としては、任意の記憶装置を採用可能である。例えば、プロセッサ210は、不揮発性記憶装置230に、文書データを格納してもよい。また、プロセッサ210は、通信インタフェース270に接続された他の装置(例えば、リームバブルメモリ)に、文書データを格納してもよい。
なお、プロセッサ210は、図5のS285、図8のS540で、レンダリングを行わずに、文字コードデータと位置データとを付与するだけであってもよい。この場合、最終的に生成される文書データは、スキャンデータと、文字コードデータと、位置データと、を含んでおり、レンダリングによって生成されたビットマップデータを含んでいない。さらに、プロセッサ210は、孤立空白文字領域を含むか否かに係らずすべての行に文字コードデータを付与すると共に、孤立空白文字領域を含まない行に、最終的に生成される文書データの展開時に文字コードデータを使用することを示す情報を付与し、孤立空白文字領域を含む行に、最終的に生成される文書データの展開時に文字コードデータを使用することを示す情報を付与しない構成であってもよい。あるいは、孤立空白文字領域を含まない行に、最終的に生成される文書データの展開時に文字コードデータを使用しないことを示す情報を付与せず、孤立空白文字領域を含む行に、最終的に生成される文書データの展開時に文字コードデータを使用しないことを示す情報を付与する構成であってもよい。この場合、最終的に生成される文書データの展開時に文字コードデータを使用しないことを示す情報を付与せず、文字コードデータのみを付与することが「文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理」の一例である。なおここで、展開とは、表示または印刷等のために、表示または印刷等に用いられる複数の画素のそれぞれの色値を表すデータを、文書データを用いて決定(例えば、算出、特定)することを意味している。
F.変形例:
(1)文書データを生成する処理としては、上記各実施例の処理に代えて、他の種々の処理を採用可能である。例えば、図5のS265で特定される割合Rは、文字数Ntに対する空白文字数Nbの割合に代えて、文字画像の全体に対する非空白文字領域を除いた残りの部分の割合を表す種々の値であってよい。例えば、割合Rは、文字画像の全体の面積に対する非空白文字領域を除いた残りの部分の面積の割合であってもよい。いずれの場合も、図5のS280とS290との少なくとも一方を省略してもよい。また、図7のデータ解析処理において、S455、S460を省略してもよい。また、図7のS410の条件は、行頭の1文字だけではなく、行頭を含む一部分(例えば、連続なM文字(Mは1以上の整数))が、空白ブロックBLbであることを、含んでもよい。また、孤立文字領域が存在すると判断されない場合であっても、行頭を含む一部分が空白ブロックBLbである場合には、ビットマップフラグF4が「1」に設定されてもよい(すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理が行われずに文書データが生成される(例えば、文字コードの付与処理が行われない))。また、孤立文字領域が存在すると判断されず、かつ、行頭を含む一部分が空白ブロックBLbではない場合に、ビットマップフラグF4が「ゼロ」に設定されてもよい(すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理が行われて文書データが生成される(例えば、文字コードの付与処理が行われる))。
(1)文書データを生成する処理としては、上記各実施例の処理に代えて、他の種々の処理を採用可能である。例えば、図5のS265で特定される割合Rは、文字数Ntに対する空白文字数Nbの割合に代えて、文字画像の全体に対する非空白文字領域を除いた残りの部分の割合を表す種々の値であってよい。例えば、割合Rは、文字画像の全体の面積に対する非空白文字領域を除いた残りの部分の面積の割合であってもよい。いずれの場合も、図5のS280とS290との少なくとも一方を省略してもよい。また、図7のデータ解析処理において、S455、S460を省略してもよい。また、図7のS410の条件は、行頭の1文字だけではなく、行頭を含む一部分(例えば、連続なM文字(Mは1以上の整数))が、空白ブロックBLbであることを、含んでもよい。また、孤立文字領域が存在すると判断されない場合であっても、行頭を含む一部分が空白ブロックBLbである場合には、ビットマップフラグF4が「1」に設定されてもよい(すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理が行われずに文書データが生成される(例えば、文字コードの付与処理が行われない))。また、孤立文字領域が存在すると判断されず、かつ、行頭を含む一部分が空白ブロックBLbではない場合に、ビットマップフラグF4が「ゼロ」に設定されてもよい(すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理が行われて文書データが生成される(例えば、文字コードの付与処理が行われる))。
また、図6のS320の条件は、i+1番目の文字が、i番目の文字の次の行の文字であるか否かを判断可能な任意の条件であってよい。例えば、i+1番目の文字がi番目の文字よりも行頭に近いことを含む条件を採用してもよい。また、S350の条件は、j行が段落の最後の行であるか否かを判断可能な任意の条件であってよい。例えば、j−1行の改行位置Pr(j−1)からj行の改行位置Pr(j)を引いた差が、段落閾値Thpよりも大きいことを含む条件を採用してもよい。段落閾値Thpは、j番目の行が段落の最後の行であると判断するための基準を示しており、例えば、予め決められている。差が段落閾値Thpよりも大きいことは、j行の文字数がj−1行の文字数と比べて少ないこと、すなわち、j行が段落の最後の行であることを示している。
また、文字コードデータと位置データとから、空白文字に関する情報が省略されていてもよい。すなわち、文字コードデータと位置データとは、非空白文字の情報のみを表していてもよい。この場合、連続する2個の文字の間の距離が閾値よりも大きい場合に、2個の文字の間に空白文字領域が存在すると判断できる。閾値は、予め決められていてもよく、また、文字画像の解析結果に応じて決定されてもよい。また、文字コードデータの代わりに、文字が、空白文字と、空白ではない任意の文字(すなわち、非空白文字)と、のいずれであるのかを示す文字種類データが、位置データに対応付けられていてもよい。この場合、位置データは、文字種類データによって特定される文字(空白文字、または、非空白文字)の位置を表す。また、この場合、文字コードを用いて文書データを生成する際に、各文字の文字コードを特定するために、文字認識処理が実行されてもよい。
また、孤立空白文字領域としては、1文字分の空白文字領域のみを用いてもよい。この場合、2以上の空白ブロックBLbが連続する領域は、2個の非空白文字領域に挟まれていたとしても、孤立空白文字領域として用いられない。文字認識処理による誤認識が連続する複数の文字で生じる可能性が小さい場合には、連続する2以上の空白ブロックBLbは、文字の誤認識に起因するものではなく、実際に空白文字に起因している可能性が高い。従って、そのように大きな空白文字領域が存在する場合には、その空白文字領域に起因して文字コードを示す情報を展開時に使用することを示す情報の付与をやめるのではなく、文字コードを示す情報を展開時に使用することを示す情報を付与することによって文書データ生成することによって、画像の見栄えを向上できる。
また、孤立空白文字領域が存在するか否かの判断を行う単位範囲(特定範囲とも呼ぶ)、すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与するか否かの判断を行う特定範囲は、文字画像中の1行の範囲に代えて、他の種々の連続な範囲であってよい。例えば、文字画像の全体を採用してもよく、1つの段落を表す範囲を採用してもよく、1つの文を表す範囲を採用してもよく、1つの単語を表す範囲を採用してもよい。
いずれの場合も、特定範囲内に孤立空白文字領域が存在すると判断された場合には、文書データのうちの特定範囲に対応する特定文書データを、特定範囲内の非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、特定範囲の画像を表す元のデータを用いて生成することが好ましい。そして、特定範囲内に孤立空白文字領域が存在すると判断されなかった場合には、特定文書データを、特定範囲内の非空白文字領域に対して付与処理を行うことによって、生成することが好ましい。これにより、画像の見栄えを向上できる。なお、文字コードを示す情報を展開時に使用することを示す情報は、文書データとは独立な別のデータとして生成されてよい。そして、元のデータのうちの特定範囲の画像を表す部分と、そのような別のデータが生成されたことを示すフラグデータと、を含む特定文書データが、生成されてもよい。
孤立空白文字領域が存在するか否かを判断する方法としては、上記の方法に代えて、他の種々の方法を採用可能である。例えば、図7のS410の条件が第1段落条件であり、かつ、S415の条件が第2段落条件であってもよい。この場合も、図3の下部の例の行R2のように、1つの行が1つの段落を形成する場合には、その行の中に孤立空白文字領域が存在する場合に、ビットマップフラグF4が1に設定される。また、空白ブロックBLbの前と後との両方に非空白のブロックBLが存在するか否かを判断してもよい。一般的には、1以上の条件に従って、文書データの生成に文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行うか否かを決定してよい。いずれの場合も、文書データの生成処理において、特定範囲内に孤立空白文字領域が存在する場合に特定範囲内の非空白文字領域に付与処理が行われない場合には、その生成処理は、孤立空白文字領域が存在するか否かを判断し、孤立空白文字領域が存在すると判断された場合に付与処理を行わないように構成されている、といえる。
(2)印刷処理の手順としては、図2に示す手順に代えて、他の種々の手順を採用可能である。例えば、プロセッサ210は、S20の前に、対象画像の文字認識処理を実行してもよい。この構成によれば、対象データが、文字コードデータと位置データとを含まない場合にも、プロセッサ210は、文字コードデータと位置データとを用いて、適切な文書データを生成できる。
(3)文書データを生成する複合機200の構成は、図1の構成とは異なっていてもよい。例えば、印刷実行部290とスキャナ部280との少なくとも一方が省略されてもよい。また、制御装置202は、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit))で構成されていてもよい。また、文書データを生成する生成装置は、複合機200(図1)とは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン、パーソナルコンピュータ)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、生成装置による文書データの生成処理の機能を一部ずつ分担して、全体として、生成処理の機能を提供してもよい(これらの装置を備えるシステムが生成装置に対応する)。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図2のS20と図10のS620との文書データ生成処理の機能を、専用のハードウェア回路によって実現してもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
200...複合機、202...制御装置、210...プロセッサ、220...揮発性記憶装置、230...不揮発性記憶装置、232...プログラム、240...表示部、250...操作部、270...通信インタフェース、280...スキャナ部、290...印刷実行部
Claims (10)
- 文字画像データと位置データとを用いて文書データを生成する生成装置であって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記生成装置は、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される2個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断部と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成部と、
を備え、
前記生成部は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
生成装置。 - 請求項1に記載の生成装置であって、
前記孤立空白文字領域は、1文字分の空白、または、連続するN文字分(Nは2以上の整数)の空白を表す領域である、
生成装置。 - 請求項1または2に記載の生成装置であって、
前記文字画像の全体に対する、前記非空白位置データによってそれぞれの位置が表される前記複数の非空白文字領域を除いた残りの部分の割合を特定する特定部を備え、
前記生成部は、前記割合が第1閾値以下である場合には、前記文字画像の全体に対応する前記文書データを、前記付与処理を行うことによって、生成する、
生成装置。 - 請求項1から3のいずれかに記載の生成装置であって、
前記文字画像の全体に対する、前記非空白位置データによってそれぞれの位置が表される前記複数の非空白文字領域を除いた残りの部分の割合を特定する特定部を備え、
前記生成部は、前記割合が第2閾値以上である場合には、前記文字画像の全体に対応する前記文書データを、前記付与処理を行わずに、前記文字画像データを用いることによって、生成する、
生成装置。 - 請求項1から4のいずれかに記載の生成装置であって、
前記特定範囲は、1行を表す範囲である、生成装置。 - 請求項5に記載の生成装置であって、
前記生成部は、前記特定範囲の前記1行の先頭を含む一部分が前記非空白文字領域とは異なる文字領域であり、かつ、前記孤立空白文字領域が存在すると判断されないことを含む特定の条件が満たされる場合には、前記特定画像データを、前記付与処理を行うことによって、生成する、
生成装置。 - 請求項6に記載の生成装置であって、
前記生成部は、前記特定範囲の前記1行の先頭を含む一部分が前記非空白文字領域とは異なる文字領域であり、かつ、前記特定範囲の前記1行の1つ前の行の末尾の文字領域が前記非空白文字領域である場合には、前記孤立空白文字領域が存在すると判断されない場合であっても、前記特定画像データを、前記付与処理を行わずに前記文字画像データを用いることによって、生成する、
生成装置。 - 請求項1から7のいずれかに記載の生成装置であって、
前記生成部は、前記特定範囲に含まれる前記非空白文字領域が1文字分の前記非空白文字領域のみである場合には、前記孤立空白文字領域が存在すると判断されたか否かに関わらず、前記特定画像データを、前記付与処理を行わずに、前記文字画像データを用いることによって、生成する、
生成装置。 - 請求項1から8のいずれかに記載の生成装置であって、
前記非空白位置データは、前記文字画像の文字認識処理によって特定された文字の位置を表すデータであり、
前記付与処理は、前記文字画像の前記文字認識処理によって特定された前記文字を表す前記文字コードを示す情報を付与する処理である、
生成装置。 - 文字画像データと位置データとを用いて文書データをコンピュータに生成させるためのコンピュータプログラムであって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記コンピュータプログラムは、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される2個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断機能と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成機能と、
をコンピュータに実行させ、
前記生成機能は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
コンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016037555A JP2017156853A (ja) | 2016-02-29 | 2016-02-29 | 生成装置、および、コンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016037555A JP2017156853A (ja) | 2016-02-29 | 2016-02-29 | 生成装置、および、コンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017156853A true JP2017156853A (ja) | 2017-09-07 |
Family
ID=59809710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016037555A Pending JP2017156853A (ja) | 2016-02-29 | 2016-02-29 | 生成装置、および、コンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017156853A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019035457A1 (ja) | 2017-08-15 | 2019-02-21 | 王子ホールディングス株式会社 | 金属化フィルム、金属化フィルムロール、版ロール |
-
2016
- 2016-02-29 JP JP2016037555A patent/JP2017156853A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019035457A1 (ja) | 2017-08-15 | 2019-02-21 | 王子ホールディングス株式会社 | 金属化フィルム、金属化フィルムロール、版ロール |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10706340B2 (en) | Image processing apparatus and method for controlling the same with character attribute indicating that pixel is pixel of a character | |
US10373030B2 (en) | Image processing apparatus that executes halftone process on target image data including edge pixel | |
JP6127877B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
JP5838984B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
JP5920293B2 (ja) | 画像処理装置及びプログラム | |
JP6233142B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
JP2017156853A (ja) | 生成装置、および、コンピュータプログラム | |
US8315458B2 (en) | Image-processing device, image-forming device, image-processing method, and computer readable medium | |
JP6452342B2 (ja) | 画像処理装置、画像形成装置、画像処理方法及びプログラム | |
JP2019140538A (ja) | 画像処理装置、画像形成装置、画像処理方法、及びプログラム | |
US9633290B2 (en) | Image processing apparatus and control method therefor | |
JP6500638B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
US9400948B2 (en) | Image processing for rendering an indexed color image | |
JP6781398B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
JP2005109807A (ja) | 画像処理方法、画像処理装置、画像形成装置及び画像処理システム | |
JP7297603B2 (ja) | 画像処理装置、画像処理方法、およびプログラム | |
JP6331772B2 (ja) | 画像処理装置およびコンピュータプログラム | |
JP4973603B2 (ja) | 画像処理装置および画像処理プログラム | |
JP2010232736A (ja) | 画像処理装置、画像形成装置およびプログラム | |
JP5720335B2 (ja) | 画像処理装置、及び、その画像処理プログラム | |
JP5609573B2 (ja) | ドライバープログラム、および、印刷システム | |
JP2016134016A (ja) | 画像処理装置およびコンピュータプログラム | |
KR101212092B1 (ko) | 화상형성장치 및 인쇄데이터 처리방법 | |
JP2013150111A (ja) | 画像処理装置および画像処理方法 | |
JP2010187177A (ja) | 画像形成装置および制御プログラム |