JP5248845B2 - 文書処理装置、文書処理方法、プログラムおよび記憶媒体 - Google Patents

文書処理装置、文書処理方法、プログラムおよび記憶媒体 Download PDF

Info

Publication number
JP5248845B2
JP5248845B2 JP2007303735A JP2007303735A JP5248845B2 JP 5248845 B2 JP5248845 B2 JP 5248845B2 JP 2007303735 A JP2007303735 A JP 2007303735A JP 2007303735 A JP2007303735 A JP 2007303735A JP 5248845 B2 JP5248845 B2 JP 5248845B2
Authority
JP
Japan
Prior art keywords
character
blank
characters
space
determined
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.)
Active
Application number
JP2007303735A
Other languages
English (en)
Other versions
JP2008171400A (ja
Inventor
忠則 中塚
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 JP2007303735A priority Critical patent/JP5248845B2/ja
Publication of JP2008171400A publication Critical patent/JP2008171400A/ja
Application granted granted Critical
Publication of JP5248845B2 publication Critical patent/JP5248845B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/163Handling of whitespace
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/189Automatic justification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は文書処理方法及び文書処理装置、特に、文書レイアウト情報を保持した文書から文字列を抽出するための文書処理方法及び文書処理装置に関するものである。
従来、文書における文字列の検索は、文書内に含まれる文字列を抽出し、その中に検索キーが含まれるかどうかを判定することによって行っている。検索手法としては、抽出された文字の中に検索キーが一部でも含まれるかどうかによって判定する方法(以降、通常検索と呼ぶ)が一般的である。より限定的な検索手法としては、単語が完全に含まれるかどうかで判定する完全一致単語検索、空白を含めた複数の単語などからなるフレーズを検索キーとするフレーズ検索がある。
たとえば、入力された検索キーが、"the"であり、文書から抽出される文字列が、"This theory was confirmed."であった場合、通常検索では"theory"に含まれる"the"がヒットするが、完全一致単語検索ではヒットしない。一方、検索キーとして"theory"を与えた時には、完全一致単語検索で"theory"がヒットする。これは、単語の取り出しに空白を利用するためである。
同様に、入力された検索キーが、"thistheory"であり、文書から抽出される文字列が、"This theory was confirmed."であった場合、フレーズ検索ではヒットしない。検索キーとして空白を正しく入れた"this theory"を与えた時に、ヒットする。
従って、これらの完全一致単語検索やフレーズ検索では、抽出された文字に空白が正しく入っている必要がある。
一方、文字のレイアウトを保持する文書において、空白文字を文字の描画位置をずらすことで表現することがある。例えば、PDF(Portable Document Format)やPDL(Page Description Language)などでそのような表現がなされる場合がある。例えば、PDFを作成するソフトウェアの1つに、プリンタドライバ型のソフトウェアがある。これは、元の原稿を作成したワープロアプリケーションやドローアプリケーションにおいて、印刷指示を行う際、通常のプリンタドライバの代わりに、このPDF作成用ドライバを選択すると、印刷コマンドからPDFファイルを作成するソフトウェアである。このとき、元の原稿を作成したアプリケーションが、空白文字を含む文字列をどのような印刷コマンドをPDF作成ドライバに渡すかは、そのアプリケーションに依存する。すなわち、そのアプリケーションが印刷時に空白文字コードを出力しないようにしている場合、PDF作成ドライバで作成されるPDFファイルには空白文字コードが含まれずに、文字の描画位置で空白を表現することがある。そのようなPDF文書やPDL文書から文字を抽出しても空白文字の文字コードが含まれず、完全一致単語検索、フレーズ検索においてヒットしないという問題がある。
例えば、元原稿が、"this is a pen"の文字列を含み、この原稿をPDF文書に変換する。この変換されたPDF文書では、スペースが描画位置をずらした記述を用いて、[(This)-833.4(is)-833.4(a)-833.4(pen.)]TJ、という記述に変換されたものとする。
このとき、そのPDF文書から文字コードに基づいて文字を抽出すると、"thisisapen."となる。これに対して、検索キーとして"a pen"が入力された場合、文書から抽出される文字には空白の文字コードが含まれないので、フレーズ検索ではヒットしない。また、完全一致単語検索のときもヒットしない。
また、文字毎に描画位置が細かく指定された記述に変換される場合もある。例えば、元原稿で均等割付された文字列を変換したとき、文字毎に描画位置が記述されることがある。例えば、"[(T)-833.4(h)-833.4(i)-833.4(s)-848.4(i)-833.4(s)-848.4(a)-848.5(p)-833.4(e)-833.4(n.)]TJ"という記述に変換される場合もある。このとき、そのPDF文書から文字コードのみを抽出すると、"thisisapen."となってしまい、フレーズ検索や完全一致単語検索ではヒットしないことになる。
一方、紙文書をスキャンして取り込んだイメージに対する文字認識結果に空白を挿入する技術がある。例えば、特許文献1では、イメージ内の文字領域を切り出し、文字幅の分布から空白文字幅候補を出す。そして、それぞれの候補によって文字間隔を空白としたときの単語長の分布が、あらかじめ持っている単語長分布に近くなるような空白文字幅を選択して、空白をいれる。
特開平5−67237号公報
しかしながら、特許文献1のような方法は、スキャンイメージなどを処理対象としたものであり、文字コードで記述されている文書を処理対象とするものではない。また、特許文献1のような方法では、空白文字幅を正確に取得できない(空白文字幅を間違う)ことがあり、空白判定精度が落ちてしまう。また、文字認識処理を行った際に文字画像を誤認識して、認識結果の文字コードが間違っている場合がある。そのため、完全一致単語検索、フレーズ検索においてヒットしないことが起こりやすいという問題がある。
なお、上記説明では、問題点を明瞭にするため、完全一致単語検索、フレーズ検索における従来技術の問題を示したが、本発明は検索処理の前処理に限定されるものではない。本発明は、文書における空白文字やタブを調整することで、空白文字やタブを正確に判定できるようにするための技術である。
本発明は、前記従来の問題点に鑑み、正確に空白文字幅を検出して、均等割り付け、見出しなどレイアウトや文書構造の解析を入れる。これにより、正確に空白文字の有無の判定を行なう文書処理方法及び文書処理装置を提供する。
上記の問題点を解決するため、本発明に係る文書処理装置は、レイアウト情報を含む文書から文字列を抽出する文字抽出手段と、前記文字抽出手段で抽出された文字列が見出しであるか否かを、前記文書に記述されている見出しタグと文字の大きさと行間スペースとに基づいて判断する見出し判断手段と、空白文字の文字幅情報を取得する文字幅取得手段と、前記文字抽出手段で抽出した文字列と前記レイアウト情報とに基づいて、各文字間のスペーシング量を取得するスペーシング量取得手段と、前記スペーシング量取得手段で取得した前記各文字間のスペーシング量と前記文字幅取得手段で取得した空白文字の文字幅情報とに基づいて、前記各文字間に空白文字が含まれるべきか判定し、空白文字が含まれるべきであると判定された文字間に空白文字コードを挿入する挿入手段と、を有し、前記見出し判断手段により前記抽出された文字列が見出しであると判断された場合、前記挿入手段は、前記文字幅取得手段で取得した前記空白文字の文字幅情報を修正し、当該見出しであると判断された文字列の各文字間のスペーシング量と当該修正された空白文字の文字幅情報とに基づいて、当該見出しであると判断された文字列の各文字間に空白文字が含まれるべきかを判断し、空白文字が含まれるべきであると判断された文字間に空白文字コードを挿入する、ことを特徴とする。
本発明によれば、空白文字幅をドキュメント内、あるいはシステム内、あるいはデバイス内蔵フォントから取得することにより、正確に空白文字幅を検出することが可能となる。また、和文・欧文の判断や、均等割り付け、見出しなどレイアウトなどの文書構造の解析に基づいて、判断条件を変えることにより、正確に空白文字を挿入するか否かの判定を可能とする。
このことにより、文字検索のフレーズ検索・完全一致単語検索でヒットできなかった文字をヒットさせることが可能となる。
以下、本発明の実施形態について、図面を参照して詳細に説明する。
<本実施形態の文書処理装置の構成例>
図1Aは、本実施形態の文書処理装置の構成例を示すブロック図である。
1は演算制御用のCPUである。2はデータ及び指示入力のためのキーボードである。3は文書画像を表示するディスプレイである。4は文書を格納するハードディスクである。5は装置を制御するプログラムや必要な情報をあらかじめ記憶するROMである。6は様々なワークエリアとして利用されるRAMである。7は、文書構造を解析する解析手段に相当する、空白・タブ判定のために文書のレイアウトを判定する文書レイアウト判定部である。8は文書から文字を抽出する際に空白・タブを判定して挿入する空白判定部である。9は各種データを転送するデータバスである。
尚、文書レイアウト判定部7や空白判定部8は、ROM5に格納されたコンピュータプログラムをCPU1が実行することで実現される。すなわち、コンピュータプログラムは、コンピュータを、文書レイアウト判定部7や空白判定部8として機能させることができる。なお、コンピュータプログラムが記憶されるコンピュータ読み取り可能な記憶媒体は、ROM5に限るものではなく、例えばハードディスク4であってもよい。
図1Bは、文書レイアウト判定部7や空白判定部8の処理を含む本実施形態の全体フローチャートである。
ステップS200は、以下の図2に示す本発明に係る文書処理を行なうステップである。ステップS200は、文書レイアウト判定部7の処理に相当する文書レイアウト処理S203, S204と、空白判定部8の処理に相当する空白判定S207-S209とを含んでいる。かかるステップS203, S204, S207-S209は、図2の同じステップに対応している(詳細は、図2以降で示す)。
ステップS100では、ステップS200で空白やタブの調整(挿入処理)がされた文書に対して、例えば、完全一致単語検索、フレーズ検索を含む文字列検索処理などが行われる。
図1Cは、本実施形態の文書処理を実行するためのRAM6の記憶領域の構成例を示す図である。なお、図1Cには、本実施形態の文書処理に直接関連しないデータや、図2の各ステップ内での処理で使用される変数などは省略している。
図1Cで、60aは、本実施形態での文書処理の対象となる、例えばPDFのTJオペレータ形式の文書である。60bは、上記文書で使用されるフォントを示すフォント情報である。フォント情報60bには、フォントのコードページ(国別情報)も含まれる。フォント自体は、ROM5やハードディスク4、あるいは図示しないCDやメモリチップに格納されてよい。
61, 62,…は、抽出された各行を表わす行番号である。各行61, 62,…に対応して、夫々以下のデータ、フラグなどが記憶される領域が確保される。ここでは、行61の内容について説明する。以下の行も同様である。
61aは、ステップS203で判断された均等割り付けか否かを示すフラグである。61bは、ステップS204で判断された見出しか否かを示すフラグである。61cは、ステップS207-S209で処理の対象とする文字間位置を示すポインタである。61dは、ステップS207で抽出された空白文字幅を記憶する領域である。61eは、ステップS208で抽出された文字スペーシング量Δ/Δpreを記憶する領域である。61fは、ステップS209の処理結果で、空白を挿入するか否かのフラグである。
かかるRAM6の領域を使用しながら、ROM5に格納されたプログラム、あるいはハードディスク4に格納されたプログラムをRAM6にロードして、図2以下の処理がCPU1により実行される。
<本実施形態の文書処理装置の動作例>
図2は、本実施形態の文書処理装置における文書処理S200の手順例を示すフローチャートである。
以下、文書レイアウト情報を持つ文書、例えばPDF文書から文字を抽出する際に、横書き文章から文字を抽出後に空白判定を行って適切に空白を挿入して抽出結果とする処理に関して詳細に説明する。なお、縦書き文章であっても同様に行える。
まず初めに、ステップS201で文書内の文字をすべて抽出する。
例えば、PDF文書で"This is a pen."を表示するためには、(This is a pen.) Tj のように表現されているので、Tjオペレータの文字を順に抽出していけば文書内の文字を抽出することができる。これは、空白文字コードを含んでいる例である。文字を抽出すると、通常の文字と空白文字とが抽出されるので、"This is a pen."となる。
次に、本実施形態で対応しようとしている空白文字コードを含まない例を説明する。
PDFのTJオペレータという別の表現方法では、個々の文字と文字との間の空間(文字スペーシング)を指定することができる。
TJを用いて、"This is a pen."について、空白文字の代わりに文字スペーシング量で記述すると、[(This)-833.4(is)-833.4(a)-833.5(pen.)] TJ のように表現され、次の文字を描画する位置を示す文字スペーシング量が記載されている。この例では、空白文字の代わりに使用されているが、空白文字の有無にかかわらず文字のレイアウトに従って文字スペーシング量が指定される場合もある。このように空白文字の代わりに文字スペーシング量が記載されている場合は、空白文字コードが記載されていないので、文字コードを抽出すると"Thisisapen."となって、空白文字が含まれない。すなわち完全一致単語検索、フレーズ検索ではヒットしないという問題がある。
なお、Tjオペレータが使われるか、TJオペレータが使われるかは、PDFを作成するソフトウェアもしくは元々の原稿を作成したソフトウェアの出力によって異なる。また、ソフトウェアによっては、TJオペレータを使う場合であっても、空白文字が含まれている場合もありうる。例えば、PDFを作成するソフトウェアの1つに、プリンタドライバ型のソフトウェアがある。これは、元の原稿を作成したワープロアプリケーションやドローアプリケーションにおいて、印刷指示を行う際に、通常のプリンタドライバの代わりにPDF作成用ドライバを選択すると、印刷コマンドからPDFファイルを作成するソフトウェアである。このとき、元の原稿を作成したアプリケーションが、空白文字を含む文字列をどのような印刷コマンドで出力するかは、そのアプリケーションに依存する。そのため、結果として作成されるPDFファイルには空白文字が含まれていたり含まれていなかったりする。
このようにステップS201では、文字が含まれるTjやTJなどのオペレータ内の文字を文書内から全て抽出する。
ステップS202以降で、空白・タブ判定及び挿入処理を行う。すなわち、ステップS201で抽出した文字の間に挿入すべき空白文字やタブがないかどうかを判定して、挿入すべきと判断した場合は自動的に空白文字コードやタブコードを挿入する。
ステップS202では、ステップS201で文書内から抽出された文字に空白以外の文字が3文字以上あるかどうか判定する。存在すればステップS203に進む。ない場合は、空白判定処理をスキップしてステップS201で抽出した文字を出力して終了する。空白・タブを判定するのに必要な文字数に達していないためである。なお、ここで、Tjオペレータの部分から抽出した文字列に関しては、空白文字が挿入されている状態と見なして、当該抽出した文字列を出力するようにしてもよい。更に、TJオペレータで空白文字コードが含まれていない場合にステップS203に進み、TJオペレータの部分から抽出した文字列に空白文字コードが含まれていれば、空白文字が挿入されている状態と見なして、当該抽出した文字列をそのまま出力するようにしてもよい。
ステップS203では、文書内の各行の均等割り付けの判断を行う(かかる処理が均等割付判断の処理に相当する。詳細は、図3及び図4を用いて後述する)。次に、ステップS204で見出しの判定を行う(かかる処理が見出し判断の処理に相当する。詳細は、図5及び図6を用いて後述する)。
ステップS205-S209では、空白・タブの挿入判定を行う。ステップS205で判定対象の文字間(対象文字間)を選択する。最初は、先頭文字と次の文字の間の文字間が対象文字間となる。なお、ステップS210からS205に戻ってきたときは、次の文字間が対象になるので、文字間ごとに順にひとつずつ空白・タブの挿入判定を行っていくことになる。
ステップS206で、対象文字間の前後の文字が空白・タブ以外か判定する。空白文字コードもしくはタブコードであれば、当該対象文字間に空白・タブがあるか否かの空白・タブ判定は行わずに、ステップS210に進む。対象文字間の前後の文字コードが共に空白やタブ以外であればステップS207に進む。ステップS207では、空白文字コードの文字幅情報を取得する(かかる処理が文字幅取得の処理に相当する。詳細は、図7を用いて後述する)。
ステップS208では、対象文字間の文字スペーシング量Δ、ひとつ前の文字間の文字スペーシング量Δpreを取得する(かかる処理がスペーシング量取得の処理に相当する。詳細は、図8及び図9を用いて後述する)。
ステップS209では、和文・英文(欧文)の均等割り付けや見出しの判断を行った後、空白・タブ判定を行う。そして、空白文字を挿入すべきと判定した場合は、必要な空白文字コードやタブコードを挿入する(詳細は、図10以降を用いて後述する)。
ステップS210では、全ての文字間をチェックしたか判定し、未チェックの文字間があればステップS205に戻って、次の文字間に対して前述の説明と同様に空白・タブ判定を繰り返す。全ての文字間のチェックが終了した場合は、文字抽出結果に空白・タブ判定結果を付与した全ての結果を出力して、本実施形態の文書処理を終了する。
尚、かかる図2の処理によって、正確な空白やタブが文書に挿入されるので、ステップS100の検索処理の精度がよくなる。このように、空白文字やタブが文字コードの代わりに文字描画位置で記述されている文書に対する文字列の検索処理、とりわけ完全一致単語検索、フレーズ検索における問題点が解消することが明らかである。なお、ステップS100の検索処理の詳細説明については省略する。
<図2の各ステップの詳細手順例>
以下に、上記図2のフローチャートの各ステップの詳細手順例に従い、各処理を詳細に説明する。
(均等割り付けの判断手順例:S203)
図3は、ステップS203における、文書内の各行の均等割付判断の詳細手順を示すフローチャートである。図4Aおよび図4Bの均等割付判断例を元に説明する。図4Aは英語文書(欧文)の例、図4Bは日本語文書(和文)の例である。
ステップS301で文字ブロックが複数存在するか判定する。ここで、文字ブロックとは文書内に存在する文字の集まりである。すなわち、TjやTJの各オペレータに対して記載されている文字列ごとに、文字ブロックとして判定される。
例えば、PDFで(This is a pen.) Tj と記載されていれば、"This is a pen."がひとつの文字ブロックとなる。また、[(This)-833.4(is)-833.4(a)-833.5(pen.)] TJ と記載されている場合は、"Thisisapen"がひとつの文字ブロックとなる。また、[(This)-833.4(is)] TJ 12Td [(a)-833.5(pen.)] TJ と記載されている場合は、"Thisis"と、"apen"の2つの文字ブロックとなる。
文字ブロックが複数存在しなければ均等割り付けの判断は行わなくて構わないため、均等割り付け処理を終了する。複数存在する時は、ステップS302に進む。
ステップS302では、一番先頭の文字ブロックを開始文字ブロックとする。図4A、図4Bの(4-1)が開始文字ブロックを指定したところである。ステップS303で、次の文字ブロックを対象文字ブロックとする。図4A、図4Bの例では、(4-2)で示す文字ブロックが対象文字ブロックとなる。
ステップS304では、開始文字ブロックと対象文字ブロックの位置を比較して、同じ行かどうかを判定する。判定手段としては、例えば行が変更されたことを示すT*や縦方向のオフセットを伴うTDオペレータが文字ブロックと次の文字ブロックの間に存在すれば、行が変わっていると判断する。一方、それらのオペレータがなければ同一行と判断する。同じ行であればステップS311へ進む。同じ行でなければステップS305へ進む。図4Aの欧文例では、「Book」と「Bus」は同一行である。また、図4Bの和文例では、「あき」と「あり」は同一行である。
以下、開始文字ブロックと対象文字ブロックとが同じ行である場合の説明をする。ステップS311で、対象文字ブロックの次の文字ブロックがあるか判定する。次の文字ブロックがあればステップS303へ進み、同一行かどうかの判定を行う。次の文字ブロックがない場合は、ステップS312へ進む。
図4Aの例では、(4-3)で示す次の文字ブロック「Block」があるので、ステップS303へ進む。そして、(4-3)の「Block」を対象文字ブロックとしてステップS304にすすむ。ステップS304では、(4-3)の「Block」は、開始文字ブロック「Book」と同じ行と判断されて、ステップS311に進む。ステップS311では、更に次の文字ブロック(4-4)「This is a pen.」を対象文字ブロックとして、ステップS303に進む。
なお、もし図4Aの例で文字ブロック(4-3)の後に、文字ブロック(4-4)が無かったとすれば、ステップS311で次の文字ブロックが無いと判断されてステップS312に進む。ステップS312で、対象文字ブロック(4-3)を行の右端の文字ブロックと決定し、開始文字ブロック(4-1)から対象文字ブロック(4-3)までを同じ行として記憶する。対象文字ブロック(4-3)の右端位置を、行の右端位置として記憶する。開始文字ブロックの左端位置を、行の左端位置として記憶する。そして、ステップS313に進み、同じ行と判定された文字ブロック群について、文字スペーシング量(文字間のスペース量)の分布を求めて記憶する。
文字間の文字スペーシング量は、TJオペレータ内で指定されている量、Tcオペレータで指定されている文字スペーシング、TDオペレータ(もしくはTdオペレータ)で指定された横方向のオフセット量、に基づいて計算する。TJやTDオペレータなど文字スペーシング量を指定するようなオペレータが特にない時、文字スペーシング量は0となる。文字スペーシング量が0の場合、文字はフォントの指定に従って配置される。次に、ステップS315に進む。
ステップS304に戻って、開始文字ブロックと対象文字ブロックとが違う行の場合の説明をする。ステップS305で、対象文字ブロックの1つ前の文字ブロックを行の右端の文字ブロックと決定し、開始文字ブロックから対象文字ブロックの1つ前の文字ブロックまでを同じ行と記憶する。また、1つ前の文字ブロックの右端位置に基づいて、行の右端位置も記憶する。開始文字ブロックの左端位置を、行の左端位置として記憶する。図4Aの文字ブロック(4-4)が対象文字ブロックになったとき、開始文字ブロック「Book」と対象文字ブロック「This is a pen.」の行が異なる行と判断されて、ステップS305へ進む。そして、ステップS305で、図4Aの(4-5)に示すように、1つ前の文字ブロック(4-3)が右端の文字ブロックと決定し、開始ブロック(4-1)から右端文字ブロック(4-3)までを同じ行に含まれる文字ブロック(「Book」「Bus」「Block」)であると決定する。更に、その行の右端位置・左端位置、文字スペーシング量を記憶する(4-5)。
また、ステップS306で、同じ行と判定された文字ブロック「Book」「Bus」「Block」内の文字スペーシング量の分布を求めて記憶する。
ステップS307で、対象文字ブロック(すなわち、次の行と判定された文字ブロック)を開始文字ブロックとする。図4Aの例では、文字ブロック(4-4)「This is a pen.」が開始文字ブロックにされる。ステップS308で、開始文字ブロックの次の文字ブロックがあるか判定する。次の文字ブロックがある場合は、ステップS314に進み、同じ行に属する文字ブロックであるかどうかの判定を続ける。一方、次の文字ブロックがない場合は、ステップS309に進む。図4Aの例では、文字ブロック(4-4)「This is a pen.」の次の文字ブロックが無いので、ステップS309に進む。
次の文字ブロックがあれば、ステップS314で、開始文字ブロックの次の文字ブロックを対象文字ブロックとして、ステップS304に戻る。そして、前述のように同じ行に属する文字ブロックであるかどうかの判定を行う。
ステップS308で、開始文字ブロックの次の文字ブロックがないと判断された場合は、ステップS309に進み、開始文字ブロックを行の右端の文字ブロックと確定する。また、当該文字ブロックの右端位置を、行の右端位置として記憶する。開始文字ブロックの左端位置を、行の左端位置として記憶する。次にステップS310で、開始文字ブロック内の文字スペーシング量の分布を求めて記憶する。図4Aの例では、(4-6)に示すように、「This is a pen.」の行の右端位置・左端位置と文字スペーシング量とが記憶される。
ここまでの処理で、全ての文字ブロックが行ごとに分類され、各行ごとに右端位置・左端位置および文字スペーシング量が記憶された。
ステップS315-S317では、これらの行を段落(文字領域)ごとにまとめる。これは、同じ段落(文字領域)単位で均等割付するかどうか設定されていることが多いためである。まず、最初の行から順に処理が行われ、ステップS315では、次の行が最初の行と同じ段落であるかどうかが、行間スペースや文字サイズが同じかどうかに基づいて判断される。同じ段落であると判断された場合は、ステップS316において、更に次の行があるかどうか判断され、次の行があれば、ステップS315に戻って同じ段落であるかどうかが判断される。一方、ステップS315で同じ段落でないと判断された場合は、ステップS317に進んで、当該行を新たな段落として作成し、更に次の行との間で当該新たな段落と同じ段落であるかの判断が行われる。
ステップS318では、各段落について、以下の条件により、各段落の行が均等割り付けされているかどうかを判定する。
(1)各段落に含まれる各行の右端位置がほぼ同じ位置である。
(2)1行目の左端位置と、その他の行の左端位置との差が所定範囲内(字下げの距離内)に収まる。
(3)各行の文字スペーシング量の分布に基づいて、各行の文字スペーシング量の値が1つまたは2つである。(ただし、所定誤差内の文字スペーシング量は、同じ文字スペーシング量であるとして扱う。)
の条件を満たす段落の場合、当該段落に含まれる行を均等割付された行として判定する。
図4Aの欧文例では、1行目と2行目の行間が所定距離以内(例えば、文字の高さの2倍以内)で、かつ文字サイズがほぼ等しいため、同じ段落と判断する。更に、1行目の右端位置と2行目の右端位置がほぼ等しい。また、左端位置もほぼ等しく、所定範囲内に収まっている。更に、各行の文字間のスペーシング量が2種類(文字間の距離と、単語間の距離との2種類)になっている。したがって、図4Aの例の各行は均等割付されていると判断する(4-7)。なお、図4Bの和文例においても同様の処理が行われ、均等割付判断の結果は図4Aと同じとなる。
このようにして、文書内の全ての行・段落に対して均等割付判断を行い、図2の全体フローチャートに戻って、ステップS204に進む。
(見出しの判断手順例:S204)
図5は、図2のステップS204における見出しの判断の詳細手順を示すフローチャートである。
ステップS501で、行が2行以上あるか否かを判定する。行に関しては、ステップS203の均等割り付け判定処理において行が抽出されているので、それを用いる。2行以上あればステップS502へ進む。1行しかない場合は、見出しの判断が不可能なため処理を終えて、図2のステップS205へ進む。
ステップS502で、処理対象となる文字行を選択する。最初は、1行目の文字行が選択される。次にステップS503で、当該選択された行に含まれる文字ブロックが見出しであるかどうかを、見出しタグがあるかどうかに基づいて判定する。すなわち、文書によっては、見出しかどうかの情報をタグで記述しているものがあるため、その確認を行う。本実施形態では、PDFなので見出しかどうかの情報が見出しタグとして記載されているかどうか判定する。また、文書がHTMLファイルである場合は、/Hタグ(H1〜H6のタグ)があるかどうかで判定する。
見出しである場合は、ステップS504に進み、該当する文字ブロックを見出しと判定する。この場合は、同一行の中に見出しの文字ブロックとそうではない文字ブロックが混在する場合もある。次にステップS506に進む。
ステップS503で見出しタグが無い場合は、ステップS505に進む。ステップS505では、以下のような文字行による見出しか否かの判断を行なう。
まず、選択された文字行、前の行、後の行からそれぞれ平均文字サイズを抽出してS、Spre、Spostとする。そして、選択された文字行の文字の大きさSを、前の行の文字の大きさSpre、後の行の文字の大きさSpostと比較する。なお、選択された処理対象の行が先頭の行であった場合は、後の行の文字の大きさSpostだけを比較対象にする。
また、選択された文字行と次の行の行間スペースをSS、次の行と更に次の行との間の行間スペースをSSpostとする。行間スペースSSを、次の行間スペースSSpostと比較する。
このとき、S ≧ Spre × 1.2 、且つ、S ≧ Spost × 1.2 (ただし、先頭行の場合はSpostとのみ比較)、且つ、SS ≧ SSpost × 1.2 の場合に、選択された文字行を見出しとする。この場合、選択された文字ブロックの行に属する文字ブロック全てを見出しとする。
なお、行間スペースは、縦方向のオフセットを指定したTDオペレータなど行間スペースを示す値から求める。
図6A及び図6Bは、見出しの判定例を説明する図である。ここで、図6Aは欧文フォントの例、図6Bは和文フォントの例である。(6-1)で文字大きさの比較をしている。まず最初は、先頭行が処理対象として選択され、次行との文字大きさの比較を行う。図6A及び図6Bの例では、S ≧ Spost × 1.2を満たしている。次に、(6-2)で行間スペースの比較を行う。図6A及び図6Bの例では、SS ≧ SSpost × 1.2を満たしている。これらの結果から、1行目は見出しであると判断されることになる。
次にステップS506で、すべての文字行について見出し判断を行ったか判定する。未判定の行が残っていればステップS502に戻って、次の文字行を選択し、次の行の見出し判断を行う。一方、全ての文字行を判断していれば、見出し判断処理を終了して、図2のステップS205に進む。
(空白文字幅Wsの取得手順例:S207)
図7は、図2のステップS207における空白文字幅の取得の詳細手順を示すフローチャートである。
ステップS701で、対象文字間の直前の文字のフォントの種類を判別し、当該判別したフォントの種類を対象フォントとする。次にステップS702で、ドキュメント内の対象フォントが空白文字幅情報を持っているかどうか判定する。PDFの場合は、フォント辞書のWidths情報にグリフ幅の情報が格納されている場合があり、その中に空白文字幅情報がないか確認する。また、文書内に含まれている同一フォントの文字で空白文字コードが存在すれば、その文字幅情報を用いるようにしてもよい。空白文字幅情報を得ることができればステップS708に進む。ステップS708で、空白文字幅をWsとする。
一方、ステップS702でドキュメント内から空白文字幅情報を得ることができなかった場合は、ステップS703に進む。ステップS703で、対象フォントがシステム(文書処理装置のOSなどのシステム)内に存在するか判定する。対象フォントがシステムにインストールされていれば、そこから情報を得られる可能性がある。システム内に対象フォントが格納されていればステップS707に進み、システム内の対象フォントが空白文字幅情報を持っているか判定する。持っていればステップS708に進んで、空白文字幅をWsとする。持っていない場合は、ステップS705に進む。
ステップS703で、対象フォントがシステム(当該文書処理装置)内に存在しない場合は、ステップS704に進む。ステップS704では、対象フォントがネットワーク等を介して接続された外部デバイス(例えば、プリンタ)内に格納されているか否か(外部デバイスにデバイス内蔵フォントがあるか否か)判定する。対象フォントが外部デバイス内に存在していればステップS707に進む。ステップS707で、対象フォントが空白文字幅情報を持っているか判定する。持っていればステップS708に進んで、空白文字幅をWsとする。持っていない場合は、ステップS705に進む。
ステップS704では、対象フォントが外部デバイス内に存在しない場合は、ステップS705に進む。ステップS705では、対象文字間の前後両方の文字のフォントを対象フォントとしたか判定する。直前の文字のフォントのみ判定が終了し、直後の文字のフォントの判定が終わっていない場合は、ステップS706にて対象文字間の直後の文字のフォントを対象フォントとして、ステップS702に進んで前述と同様に空白文字幅情報の取得を試みる。対象文字間の前後両方の文字の判定を行った場合(つまり、前後の文字のフォントから空白文字幅情報の取得を試みたが取得できなかった場合)は、ステップS709に進む。
ステップS709では、空白文字幅の推定を行う。直前の文字の文字幅Wpとした場合に、空白文字幅Wsは以下のように推定する。
(1)直前の文字が2バイトコードの場合は、Ws = Wp(全角)、Ws = Wp/2(半角)とする。
(2)直前の文字が1バイトコードのプロポーショナルフォントの場合は、Ws =(直前の文字のem値)/4 とする(em値とは日本語(和文)フォントの全角文字幅に値する文字幅情報)。
(3)直前の文字が1バイトコードの固定ピッチフォントの場合は、Ws =(直前の文字のem値)とする。
これで、空白文字幅の取得を終了し、図2のステップS208に進む。
(文字スペーシングの取得手順例:S208)
図2のステップS208の文字スペーシングの取得について、図8のフローチャートに従って説明する。図9A及び図9Bは、文字スペーシング量Δに関しての概略図である。例えば、図9Aでは、「This」の"s"と、「is」の"i"との間の文字スペーシング量Δを求める場合を示している。図9Bでは、「あき」の"き"と、「あり」の"あ"との間の文字スペーシング量Δを求める場合を示している。
ステップS801で、対象文字間の文字スペーシング量Δを求める。例えば、Tcオペレータで設定される文字スペーシングをΔTc、TDオペレータで設定される横方向のオフセットをΔTD、TJオペレータで設定される文字スペーシングをΔTJとする。
このとき、文字スペーシングは次の式に基づいて求められる。
Δ = ΔTD + (ΔTc - ΔTJ×(直前の文字のフォントサイズ)/1000)×100
次に、ステップS802で、1つ前の対象文字間があるか判定する。ある場合は、ステップS803に進む。ない場合は、ステップS804に進む。
ステップS803で、1つ前の対象文字間の文字スペーシング量Δpreを、1つ前の文字スペーシングΔTc_pre、TDで設定するオフセットΔTD_pre、TJで設定する文字スペーシングΔTJ_preから求める。
Δpre = ΔTD_pre+ (ΔTc_pre - ΔTJ_pre×(2文字前の文字のフォントサイズ)/1000)×100
Δpreを求めた後、文字スペーシングの取得処理を終了して、図2のステップS209に進む。
ステップS804で、1つ後の対象文字間の文字スペーシング量Δpostを求めて、1つ前のΔpreの代用とする。1つ後の対象文字間の文字スペーシング量Δpostを、文字スペーシングΔTc_post、TDで設定するオフセットΔTD_post、TJで設定する文字スペーシングΔTJ_postから求める。そして、求めたΔpostをΔpreに代入する。
Δpost = ΔTD_post+ (ΔTc_post - ΔTJ_post×(直後の文字のフォントサイズ)/1000)×100
Δpre ← Δpost (ΔpreをΔpostで代用)
Δpreを求めた後、文字スペーシングの取得処理を終了して、図2のステップS209に進む。
なお、図9Aの欧文例では、1つ前の対象文字間(「This」の"i"と"s"の間)があるので、ステップS803でΔpreを求めることになる。図9Bの和文例においても、1つ前の対象文字間(「あき」の"あ"と"き"の間)があるので、ステップS803でΔpreを求めることになる。
(空白・タブ判定手順例:S209)
図10は、図2のステップS209の空白・タブ判定の詳細な手順例を示すフローチャートである。
まず、ステップS1001で、対象文字間を含む行は均等割り付けか判定する。均等割り付けの場合は、ステップS1006へ進み、均等割り付け用の空白判定を行う(図11参照)。均等割り付けでない場合は、ステップS1002へ進む。
ステップS1002で、対象文字間を含む文字ブロックもしくは隣接する文字ブロックは見出しか判定する。いずれかが見出しの場合は、ステップS1007へ進み、見出し用の空白判定へ進む(図12参照)。見出しではない場合は、ステップS1003へ進む。
ステップS1003で、直前の文字が欧文フォントか否かを判定する。欧文フォントの場合は、S1004へ進む。欧文フォントでない(和文フォントの)場合は、ステップS1008へ進む。
ステップS1004で、欧文フォント用の空白判定を行う。すなわち、空白文字幅Ws, 文字スペーシング量Δが、Ws × 0.8 ≦ (Δ-Δpre×2) ≦ Ws × 1.2 を満たすか判定する。
この条件式の意味するところは、図9Aの文字スペーシングΔと空白文字幅Ws、文字スペーシングΔpreの関係をみると分かりやすいであろう。すなわち、"This"と"空白文字"との間の文字スペーシングをΔpreと推定し、"空白文字"と"is"との間の文字スペーシングもΔpreと推定する。すると、計算により求められる空白文字幅は、"This"と"is"の間の文字スペーシングΔから、文字スペーシングΔpreの2個分を引いたものとなる。よって、(Δ-Δpre×2)が空白文字幅Wsに近い、すなわち上記条件式を満たせば、空白が1個あると判定する。ここで、欧文ではスペースのみ幅が可変となる場合があるが、その場合はΔpre=0となるので、スペースのみ幅が可変となる場合も、単語内の文字間が可変となる場合も同一の判定式で対応できる。
条件を満たす場合は、ステップS1005へ進み、空白1個が存在すると判定し、対象文字間に挿入する。条件を満たさない場合は、ステップS1017へ進む。
ステップS1017で、文字スペーシングが空白1個があるとした場合よりも大きい場合に関して、さらに調査する。
Δ > Ws × 1.2 を満たす場合は、ステップS1018に進んでタブ判定/複数空白判定に進む。満たさない場合は、空白なしと判定し、空白判定処理を終了して、図2のステップS210に進む。
ステップS1003で、直前の文字が欧文フォントでない(和文フォントの)場合について説明する。
ステップS1008に進み、全角空白文字幅Ws, 文字スペーシング量Δが、
Ws × 0.9 ≦ (Δ- Δpre × 2) ≦ Ws × 1.1 を満たすか判定する。
この条件式の意味するところは、図9Bの文字スペーシングΔと空白幅Ws、文字スペーシングΔpreの関係をみると分かりやすい。すなわち、1文字の空白が入っていた場合の推定空白幅は、文字スペーシングΔから文字スペーシングΔpreの2個分を引いたものとなる。推定空白幅が実際の空白幅に近ければ、空白が1個あると判定できる。欧文対応のステップS1004に比べて、日本語(和文)の場合、全角空白文字幅Wsに近い大きさになることが多いので、条件式の閾値を厳しくしている。
条件式をみたす場合は、ステップS1009へ進み、全角空白1個が存在すると判定して対象文字間に挿入する。満たさない場合は、ステップS1010へ進む。
ステップS1010では、全角空白1個が存在するよりは文字間が小さい場合かどうか判定する。すなわち、(Δ - Δpre × 2)< Ws × 0.8 を満たすか判定する。満たす場合は、ステップS1011に進み、半角空白の文字幅をWsとする。満たさない場合は、ステップS1016に進みタブ判定/複数空白判定を行う。
満たす場合を説明する。ステップS1012で、半角空白文字幅Ws, 文字スペーシング量Δが、Ws × 0.8 ≦ (Δ- Δpre × 2) ≦ Ws × 1.2 を満たすか判定する。満たす場合は、ステップS1013に進み、半角空白1個が存在すると判定して対象文字間に挿入する。満たさない場合は、ステップS1020に進み空白なしと判定して、空白判定処理を終了する。
(均等割り付け用の空白判定手順例:S1006)
図10のステップS1006の均等割り付け用の空白判定の詳細を、図11のフローチャートに従って説明する。
ステップS1100で、均等割り付け量を算出し、それをもとに空白文字幅Wsの補正を行う。
(行の幅)=(行の右端)−(行の左端)
(標準の行の幅)=(各文字の幅の合計)
(補正した空白文字幅)=(空白文字幅Ws)×(行の幅)÷(標準の行の幅)
(空白文字幅Ws)を(補正した空白文字幅)に置き換える。
次に、ステップS1101で、直前の文字が欧文フォントか判定する。欧文フォントであればステップS1102に進む。欧文フォントでない(和文フォントの)場合は、ステップS1104に進む。
欧文フォントの場合を説明する。ステップS1102で、空白文字幅Ws, 文字スペーシング量Δが、Ws × 0.8≦ (Δ - Δpre × 2) ≦ Ws × 1.2 を満たすか判定する。条件を満たす場合は、ステップS1103に進み、空白1個と判定し対象文字間に挿入して、空白判定処理を終了する。満たさない場合は、ステップS1105に進み、空白なしと判定して、空白判定処理を終了する。
ステップS1101で、欧文フォントでない(和文フォントの)場合の説明をする。ステップS1104で、全角空白文字幅Ws, 文字スペーシング量Δが、
Ws × 0.9≦ (Δ - Δpre × 2) ≦ Ws × 1.1 を満たすか判定する。満たす場合は、ステップS1103に進み、空白1個と判定し対象文字間に挿入して、空白判定処理を終了する。満たさない場合は、ステップS1105に進み、空白なしと判定して、空白判定処理を終了する。
日本語(和文)の場合、(Δ - Δpre×2)は全角空白文字幅Wsに近い大きさになることが多いので、ステップS1102の条件式に比べて、条件式の閾値を厳しくしている。
(見出し用の空白判定手順例:S1007)
図10のステップS1007の見出し用の空白判定の説明を、図12のフローチャートに従って説明する。
ステップS1200で空白文字幅Wsの補正を行う。見出しの場合は、文字に変形がかかって縦長や横長になっていることが多いが、必要に応じて、空白文字幅Wsの補正を行う。
例えば、PDFの場合はX,Y座標を行列変換により変形を表現する。
(X,Y)が行列変換(a,b,c,d)で(X´,Y´)になるとすると、
X´= aX + bY
Y´= cX + dY
で表現される。
通常は、Δ、Δpreも同一の座標変換がおこなわれているので空白文字幅Wsの補正は必要ないが、見出しの途中で座標変換を変えているような場合は、切り替え前の変換行列を用いて空白文字幅Wsの補正を行い、切り替え前と切り替え後の座標から空白判定を行う。
(補正した空白文字幅)=a×(空白文字幅Ws)+ b×(空白文字高さ)
Δ=(文字の開始位置)−(前の文字の終了位置)
Δpreは、すでに座標変換されているのでそのままの値を使用する。
ステップS1201で、直前の文字が欧文フォントか判定する。欧文フォントであればステップS1202に進む。欧文フォントでない場合は、ステップS1204に進む。
欧文フォントの場合を説明する。ステップS1202で、空白文字幅Ws, 文字スペーシング量Δが、Ws × 0.8≦ (Δ - Δpre × 2) ≦ Ws × 1.2 を満たすか判定する。条件を満たす場合は、ステップS1203に進み、空白1個と判定し対象文字間に挿入して、空白判定処理を終了する。満たさない場合は、ステップS1205に進み、空白なしと判定して、空白判定処理を終了する。
ステップS1201で、欧文フォントでない(和文フォントの)場合の説明をする。ステップS1204で、全角空白文字幅Ws, 文字スペーシング量Δが、
Ws × 0.9≦ (Δ - Δpre × 2) ≦ Ws × 1.1 を満たすか判定する。満たす場合は、ステップS1203に進み、空白1個と判定し対象文字間に挿入して、空白判定処理を終了する。満たさない場合は、ステップS1205に進み、空白なしと判定して、空白判定処理を終了する。
(タブ判定手順例:S1016, S1018)
図10のステップS1016、S1018のタブ判定/複数空白判定の内のタブ判定の説明を、図13のフローチャートに従って、図14A(欧文)及び図14B(和文)のタブ判定例を参照して説明する。
ステップS1301で、対照文字間の次の文字の開始位置(左端)をB(X座標)とする(図14A及び図14B参照)。
次に、ステップS1302で、前行があるかどうか判定する。ある場合は、ステップS1304に進む。ない場合は、ステップS1303に進み、タブはないと判断し、複数空白判定に進む(図15参照)。
ステップS1304では、前行の先頭文字の開始位置をBpreとする(図14A及び図14B参照)。次に、ステップS1305で、Bpre - α ≦ B ≦ Bpre + α (αは閾値)を満たすか判定する。満たす場合は、ステップS1306に進む。ステップS1306では、前行のBpreとした対象文字の前に空白もしくはタブがあるか判定する。対象文字とは、図14A及び図14Bであれば「500」の「5」を指す。タブか空白がある場合は、ステップS1314にてタブと判定してタブを挿入する。
ステップS1305もしくはステップS1306で、条件を満たさない場合は、ステップS1307に進み、前行のすべての文字に対して調べたか判定する。全て調べた場合は、ステップS1309へ進む。一方、残っている場合は、ステップS1308に進み、前行の次の文字の開始位置をBpreとしてステップS1305に戻って、前述のように判定を行う。これを繰り返す。
ステップS1309では、次行があるか判断する。次行がない場合は、ステップS1310に進み、タブはないと判断し、複数空白判定へ進む。次行がある場合は、ステップS1311に進む。ステップS1311で、次行の先頭文字の開始位置をBpreとする。
次に、ステップS1312で、Bpre - α ≦ B ≦ Bpre + α (αは閾値)を満たすか判定する。満たす場合は、ステップS1313に進む。ステップS1313では、次行のBpreとした対象文字の前に空白もしくはタブがあるか判定する。タブか空白がある場合は、ステップS1314にてタブと判定してタブを挿入する。
一方、ステップS1312もしくはステップS1313で、条件を満たさない場合は、ステップS1315に進み、次行のすべての文字に対して調べたか判定する。次行の文字すべて調べた場合は、ステップS1317へ進む。一方、残っている場合は、ステップS1316に進み、次行の次の文字の開始位置をBpreとしてステップS1312に戻って、前述のように判定を行う。これを繰り返す。
ステップS1317では、タブはないと判断し、複数空白判定へ進む。
(複数空白判定手順例:S1303, S1310, S1317)
図13のステップS1303、S1310, S1317における複数空白判定に関して、図15のフローチャートに従って、図16を参照して説明する。
ステップS1501で、空白の数NをN=2とする。
次にステップS1502で、
Ws × 0.8 ≦ (Δ - (N+1) × Δpre) / N ≦ Ws × 1.2 を満たすか判定する。
図16では、空白が3個の例であるが、文字スペーシングから推定する空白幅は、(Δ - (N+1) × Δpre) / N で求められることが分かる。この推定空白幅が実際の空白幅にほぼ近ければ、その数の空白が入っていると考えられる。
条件を満たす場合は、ステップS1503に進んでNを1つ増やして、ステップS1502に戻る。この場合は、N=2で条件を満たしたのでN=3になる。
これを繰り返して、最後にS1502で条件を満たさなくなると、ステップS1504に進む。ステップS1504では、Nの値から1を引く。これによって、ステップS1502の条件を満たした最も大きなNが求まる。
次にステップS1505で、N ≧ 2 か判定する。満たしていれば、ステップS1506で、空白N個と判定し、対象文字空間に挿入して、空白・タブ判定処理を終了する。満たさない場合は、ステップS1507に進み、空白なしと判定し、対象文字空間に挿入して、空白・タブ判定処理を終了する。
前述の説明によりステップS209の空白・タブ判定処理が終了すると、次にステップS210に進む。
このように、文書から文字間の空白やタブを判定して挿入することで、例えば、完全一致単語検索、フレーズ検索を含む文字列検索処理などが間違いなく正確に行われるようになる。
<その他の実施形態>
尚、上記実施形態では、文書レイアウトを保持した文書としてPDFの例を示したが、PDLやHTMLなどでも同様な効果を得ることができる。
又、上述した実施形態では、英文(欧文)と和文との両方に対応できるように構成したが、これに限るものではなく、例えば、英文(欧文)だけまたは和文だけに対応するようにしてもよい。
英文だけを対象とした文書処理装置を構成する場合、上述した各フローチャートにおいて、英文であるか和文であるかの判断ステップは行わずに、常に英文に対する処理ステップが行われるようにすればよい。その場合、和文に対する処理部分は省略できるので、上述した各フローチャートは単純化することができる。その逆の和文だけの場合も同様である。
又、本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、プリンタなど)から構成されるシステムあるいは統合装置に適用しても、ひとつの機器からなる装置に適用してもよい。
又、本発明の目的が、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給することによって、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。又、コンピュータが読み出したプログラムコードの指示に基づき、オペレーティングシステム(OS)などが実際の処理の一部または全部を行い、前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれる。その後、そのプログラムコードの指示に基づき、機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
本実施形態の文書処理装置の構成例を示すブロック図である。 本実施形態の文書処理装置の概略動作例を示すフローチャートである。 図1AのRAM6の記憶領域の構成例を示す図である。 本実施形態の文書処理の手順例を示すフローチャートである。 図2の均等割り付けの判断S203の手順例を示すフローチャートである。 欧文フォントにおける、図3の均等割り付けの判断の一例を示す図である。 和文フォントにおける、図3の均等割り付けの判断の一例を示す図である。 図2の見出し判断S204の手順例を示すフローチャートである。 欧文フォントにおける、図5の見出しの判断の一例を示す図である。 和文フォントにおける、図5の見出しの判断の一例を示す図である。 図2の空白文字幅の取得S207の手順例を示すフローチャートである。 図2の文字スペーシングの取得S208の手順例を示すフローチャートである。 欧文フォントにおける、図8の文字スペーシングの一例を示す図である。 和文フォントにおける、図8の文字スペーシングの一例を示す図である。 図2の空白・タブの判定S209の手順例を示すフローチャートである。 図10の均等割り付け用の空白の判定S1006の手順例を示すフローチャートである。 図10の見出し用の空白判定S1007の手順例を示すフローチャートである。 図10のタブ判定/複数空白判定S1016,S1018の内のタブ判定の手順例を示すフローチャートである。 欧文フォントにおける、図13のタブ判定の一例を示す図である。 和文フォントにおける、図13のタブ判定の一例を示す図である。 図13の複数空白判定S1303,S3013,S1315の手順例を示すフローチャートである。 図15の複数空白判定の一例を示す図である。

Claims (10)

  1. レイアウト情報を含む文書から文字列を抽出する文字抽出手段と、
    前記文字抽出手段で抽出された文字列が見出しであるか否かを、前記文書に記述されている見出しタグと文字の大きさと行間スペースとに基づいて判断する見出し判断手段と、
    空白文字の文字幅情報を取得する文字幅取得手段と、
    前記文字抽出手段で抽出した文字列と前記レイアウト情報とに基づいて、各文字間のスペーシング量を取得するスペーシング量取得手段と、
    前記スペーシング量取得手段で取得した前記各文字間のスペーシング量と前記文字幅取得手段で取得した空白文字の文字幅情報とに基づいて、前記各文字間に空白文字が含まれるべきか判定し、空白文字が含まれるべきであると判定された文字間に空白文字コードを挿入する挿入手段と、を有し、
    前記見出し判断手段により前記抽出された文字列が見出しであると判断された場合、前記挿入手段は、前記文字幅取得手段で取得した前記空白文字の文字幅情報を修正し、当該見出しであると判断された文字列の各文字間のスペーシング量と当該修正された空白文字の文字幅情報とに基づいて、当該見出しであると判断された文字列の各文字間に空白文字が含まれるべきかを判断し、空白文字が含まれるべきであると判断された文字間に空白文字コードを挿入する、
    ことを特徴とする文書処理装置。
  2. 前記挿入手段は、前記スペーシング量取得手段で取得した前記各文字間のスペーシング量と前記文字幅取得手段で取得した空白文字の文字幅情報とに基づいて、前記各文字間に空白文字またはタブが含まれるべきか判定し、空白文字またはタブが含まれるべきであると判断された文字間に空白文字コードまたはタブコードを挿入することを特徴とする請求項1に記載の文書処理装置。
  3. 更に、前記抽出された文字列が、均等割付されているか否かを判断する均等割付判断手段を有し、
    前記均等割付判断手段により前記抽出された文字列が均等割付けされていると判断された場合、前記挿入手段は、前記文字幅取得手段で取得した前記空白文字の文字幅情報を修正し、前記均等割付けされていると判断された文字列の各文字間のスペーシング量と当該修正された空白文字の文字幅情報とに基づいて、前記均等割付けされていると判断された文字列の各文字間に空白文字が含まれるべきか判定し、空白文字が含まれるべきであると判定された文字間に空白文字コードを挿入する、
    ことを特徴とする請求項1に記載の文書処理装置。
  4. 前記挿入手段は、前記各文字間の直前の文字が欧文であるか和文であるかに応じて、前記空白文字コードを挿入するか否かの判断に用いる条件を変更することを特徴とする請求項1に記載の文書処理装置。
  5. 前記空白文字コードが挿入された文字列に対して、完全一致単語検索及び/又はフレーズ検索を行なう検索手段、を更に有することを特徴とする請求項1に記載の文書処理装置。
  6. 前記文字幅取得手段は、前記空白文字の文字幅情報を、前記文書内に含まれているフォントの空白文字の文字幅情報、あるいは文書処理装置に格納されているフォントの空白文字の文字幅情報、あるいは外部デバイスに格納されているフォントの空白文字の文字幅情報から取得することを特徴とする請求項1に記載の文書処理装置。
  7. 前記文字幅取得手段は、前記空白文字の文字幅情報をフォントから取得できなかった場合、直前の文字の文字幅に基づいて前記空白文字の文字幅情報を取得することを特徴とする請求項に記載の文書処理装置。
  8. レイアウト情報を含む文書から文字列を抽出する文字抽出ステップと、
    前記文字抽出ステップで抽出された文字列が見出しであるか否かを、前記文書に記述されている見出しタグと文字の大きさと行間スペースとに基づいて判断する見出し判断ステップと、
    空白文字の文字幅情報を取得する文字幅取得ステップと、
    前記文字抽出ステップで抽出した文字列と前記レイアウト情報とに基づいて、各文字間のスペーシング量を取得するスペーシング量取得ステップと、
    前記スペーシング量取得ステップで取得した前記各文字間のスペーシング量と前記文字幅取得ステップで取得した空白文字の文字幅情報とに基づいて、前記各文字間に空白文字が含まれるべきか判定し、空白文字が含まれるべきであると判定された文字間に空白文字コードを挿入する挿入ステップと、を有し、
    前記見出し判断ステップにより前記抽出された文字列が見出しであると判断された場合、前記挿入ステップは、前記文字幅取得ステップで取得した前記空白文字の文字幅情報を修正し、当該見出しであると判断された文字列の各文字間のスペーシング量と当該修正された空白文字の文字幅情報とに基づいて、当該見出しであると判断された文字列の各文字間に空白文字が含まれるべきかを判断し、空白文字が含まれるべきであると判断された文字間に空白文字コードを挿入する、
    ことを特徴とする文書処理方法。
  9. レイアウト情報を含む文書から文字列を抽出する文字抽出ステップと、
    前記文字抽出ステップで抽出された文字列が見出しであるか否かを、前記文書に記述されている見出しタグと文字の大きさと行間スペースとに基づいて判断する見出し判断ステップと、
    空白文字の文字幅情報を取得する文字幅取得ステップと、
    前記文字抽出ステップで抽出した文字列と前記レイアウト情報とに基づいて、各文字間のスペーシング量を取得するスペーシング量取得ステップと、
    前記スペーシング量取得ステップで取得した前記各文字間のスペーシング量と前記文字幅取得ステップで取得した空白文字の文字幅情報とに基づいて、前記各文字間に空白文字が含まれるべきか判定し、空白文字が含まれるべきであると判定された文字間に空白文字コードを挿入する挿入ステップと、をコンピュータに実行させ、
    前記見出し判断ステップにより前記抽出された文字列が見出しであると判断された場合、前記挿入ステップは、前記文字幅取得ステップで取得した前記空白文字の文字幅情報を修正し、当該見出しであると判断された文字列の各文字間のスペーシング量と当該修正された空白文字の文字幅情報とに基づいて、当該見出しであると判断された文字列の各文字間に空白文字が含まれるべきかを判断し、空白文字が含まれるべきであると判断された文字間に空白文字コードを挿入する、
    ことを特徴とするプログラム。
  10. 請求項9に記載のプログラムを格納したコンピュータ読取可能な記憶媒体。
JP2007303735A 2006-12-13 2007-11-22 文書処理装置、文書処理方法、プログラムおよび記憶媒体 Active JP5248845B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007303735A JP5248845B2 (ja) 2006-12-13 2007-11-22 文書処理装置、文書処理方法、プログラムおよび記憶媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006336371 2006-12-13
JP2006336371 2006-12-13
JP2007303735A JP5248845B2 (ja) 2006-12-13 2007-11-22 文書処理装置、文書処理方法、プログラムおよび記憶媒体

Publications (2)

Publication Number Publication Date
JP2008171400A JP2008171400A (ja) 2008-07-24
JP5248845B2 true JP5248845B2 (ja) 2013-07-31

Family

ID=39526770

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007303735A Active JP5248845B2 (ja) 2006-12-13 2007-11-22 文書処理装置、文書処理方法、プログラムおよび記憶媒体

Country Status (2)

Country Link
US (1) US8225200B2 (ja)
JP (1) JP5248845B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5508953B2 (ja) * 2010-06-28 2014-06-04 株式会社日立ソリューションズ 文書処理装置及びプログラム
US9734132B1 (en) * 2011-12-20 2017-08-15 Amazon Technologies, Inc. Alignment and reflow of displayed character images
CN103176956B (zh) * 2011-12-21 2016-08-03 北大方正集团有限公司 用于提取文档结构的方法和装置
US8850350B2 (en) 2012-10-16 2014-09-30 Google Inc. Partial gesture text entry
US8843845B2 (en) 2012-10-16 2014-09-23 Google Inc. Multi-gesture text input prediction
US8819574B2 (en) * 2012-10-22 2014-08-26 Google Inc. Space prediction for text input
US8832589B2 (en) 2013-01-15 2014-09-09 Google Inc. Touch keyboard using language and spatial models
CN104516868B (zh) * 2013-09-30 2018-03-06 北大方正集团有限公司 一种版面空格的流式还原方法与***
JP6528927B2 (ja) * 2014-08-20 2019-06-12 富士ゼロックス株式会社 文書処理装置及びプログラム
KR102280985B1 (ko) 2014-11-26 2021-07-26 삼성전자주식회사 화면 구성 방법, 전자 장치 및 저장 매체
JP6425022B2 (ja) * 2015-01-14 2018-11-21 ブラザー工業株式会社 テープ印字装置
CN111026924A (zh) * 2019-03-11 2020-04-17 广东小天才科技有限公司 一种待搜索内容的获取方法及电子设备
JP7371558B2 (ja) * 2020-03-31 2023-10-31 ブラザー工業株式会社 印刷装置、印刷方法及びプログラム
JP2023006605A (ja) * 2021-06-30 2023-01-18 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2915175B2 (ja) * 1990-10-01 1999-07-05 株式会社エフ・エフ・シー 単語間スペース検出方法
JPH0567237A (ja) 1991-05-13 1993-03-19 Hitachi Eng Co Ltd 空白認識方法、空白認識装置、文字認識装置、英日翻 訳装置
JPH0727776A (ja) * 1993-07-08 1995-01-31 Toshiba Corp 回転検出方法
EP0702322B1 (en) * 1994-09-12 2002-02-13 Adobe Systems Inc. Method and apparatus for identifying words described in a portable electronic document
ATE373274T1 (de) * 2005-07-01 2007-09-15 Pdflib Gmbh Verfahren zur identifizierung von wörtern in einem elektronischen dokument
US7827484B2 (en) * 2005-09-02 2010-11-02 Xerox Corporation Text correction for PDF converters

Also Published As

Publication number Publication date
US8225200B2 (en) 2012-07-17
US20080144062A1 (en) 2008-06-19
JP2008171400A (ja) 2008-07-24

Similar Documents

Publication Publication Date Title
JP5248845B2 (ja) 文書処理装置、文書処理方法、プログラムおよび記憶媒体
US6533822B2 (en) Creating summaries along with indicators, and automatically positioned tabs
KR100578188B1 (ko) 문자인식 장치 및 방법
US7219052B2 (en) Document based character ambiguity resolution
US20060218484A1 (en) Document editing method, document editing device, and storage medium
US20060217959A1 (en) Translation processing method, document processing device and storage medium storing program
JPH077410B2 (ja) 文書レイアウト方法
US20240104290A1 (en) Device dependent rendering of pdf content including multiple articles and a table of contents
JP6589704B2 (ja) 文境界推定装置、方法およびプログラム
US9075776B2 (en) Document processing apparatus, document processing method, and program
CN113138725A (zh) 信息处理装置及计算机可读取记录媒体
US11842141B2 (en) Device dependent rendering of PDF content
JP2763227B2 (ja) 書式決定方法
JPH0668748B2 (ja) 文書整形方法
JP2680540B2 (ja) 文書レイアウト方法
JP2829264B2 (ja) 文書レイアウト方法
JPS62245366A (ja) 文書処理装置
US10417312B2 (en) Information added document preparation device, non-transitory computer-readable recording medium and information added document preparation method for selecting a format for adding information to a document to satisfy a layout condition
JP2682570B2 (ja) 文書レイアウト方法
JPH07141366A (ja) 文書作成装置及び注釈付き文書作成方法
JP2010176364A (ja) 文書処理装置
JPH09146947A (ja) 文字領域の順序付け方法及び装置
JPH04199261A (ja) 文書出力装置
JP2004038756A (ja) 文書変換方法および文書変換装置
JPH11328171A (ja) 文書処理装置及び文書処理方法及び記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130411

R151 Written notification of patent or utility model registration

Ref document number: 5248845

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3