Nothing Special   »   [go: up one dir, main page]

JP2014085689A - 画像再配置方法、画像再配置システム、および画像再配置プログラム - Google Patents

画像再配置方法、画像再配置システム、および画像再配置プログラム Download PDF

Info

Publication number
JP2014085689A
JP2014085689A JP2012231467A JP2012231467A JP2014085689A JP 2014085689 A JP2014085689 A JP 2014085689A JP 2012231467 A JP2012231467 A JP 2012231467A JP 2012231467 A JP2012231467 A JP 2012231467A JP 2014085689 A JP2014085689 A JP 2014085689A
Authority
JP
Japan
Prior art keywords
area
character
image
histogram
column
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.)
Granted
Application number
JP2012231467A
Other languages
English (en)
Other versions
JP6030915B2 (ja
Inventor
Isamu Igarashi
勇 五十嵐
Ryosuke Otsuya
亮祐 大津谷
Yusuke Naka
裕介 仲
Takeshi Hattori
剛 服部
Satoshi Yamane
聡 山根
Tatsuya Osawa
達哉 大澤
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.)
NTT Communications Corp
Original Assignee
NTT Communications Corp
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 NTT Communications Corp filed Critical NTT Communications Corp
Priority to JP2012231467A priority Critical patent/JP6030915B2/ja
Publication of JP2014085689A publication Critical patent/JP2014085689A/ja
Application granted granted Critical
Publication of JP6030915B2 publication Critical patent/JP6030915B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Facsimile Image Signal Circuits (AREA)
  • Image Analysis (AREA)
  • Character Input (AREA)
  • Image Processing (AREA)

Abstract

【課題】文書画像の傾きを加味して行領域または列領域を切り出す。
【解決手段】コンピュータ1が行う画像再配置方法であって、読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出ステップと、前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定ステップと、前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得ステップと、を行う。
【選択図】図1

Description

本発明は、文書画像から文字を切り出して配置する画像再配置方法、画像再配置システム、および画像再配置プログラムに関する。
文書画像からの文字の切り出し方法として、画像中から行・列を検出して各行ごとに文字位置を特定する手法がある。文字の切り出しに際しては、一般的に、文字認識が行われている(例えば特許文献1参照)。しかし、文字認識には、多くの処理時間を要するとともに、認識誤りによって文字が置き換わるという問題がある。
そこで、文書画像中の文字を認識することなく、画像のまま文字を切り出し、表示領域の大きさに合わせて文字を画像のまま再配置(リフロー)して表示する技術が研究されている。
特開2006-235817号公報
文書データをスキャンして文書画像とする際に、文書データが傾いた状態でスキャンされてしまう場合がある。この場合、文書画像の文字が傾いて斜めになっている状態で、文書画像の垂直方向または水平方向に列または行が存在するものとして処理すると、列として切り出した列領域または行として切り出した行領域に、余分な領域が含まれてしまう。そのため、画像として列領域または行領域から切り出した文字を再配置して表示した場合に、文字のがたつきや、見栄えが悪くなる可能性がある。なお、従来の再配置技術では、文書画像の傾きについては、考慮されていない。
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、文書画像の傾きを加味して行領域または列領域を切り出す画像再配置方法、画像再配置システム、および画像再配置プログラムを提供することにある。
上記目的を達成するため、本発明は、コンピュータが行う画像再配置方法であって、読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出ステップと、前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定ステップと、前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得ステップと、を行う。
本発明は、画像再配置システムであって、読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出手段と、前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定手段と、前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得手段と、を備える。
本発明は、コンピュータが実行する画像再配置プログラムであって、前記コンピュータに、読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出ステップと、前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定ステップと、前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得ステップと、を実行させる。
本発明によれば、文書画像の傾きを加味して行領域または列領域を切り出す画像再配置方法、画像再配置システム、および画像再配置プログラムを提供することができる。
本発明の実施形態に係る画像再配置システムを示す構成図である。 リフロー表示のイメージを示す図である。 クラスおよびオブジェクトの関係を示す図である。 矩形座標の表現方法を示す図である。 リフローデータ生成処理のフローチャートである。 網掛け領域の拡大図である。 2値化処理の結果を示す図である。 初期ラベリング結果の統合を示す図である。 キャプションエリア候補とヒストグラムとを示す図である。 ラベルを用いたヒストグラムの作成を示す図である。 画素の走査によるヒストグラムの作成を示す図である。 キャプションエリアの設定を示す図である。 キャプションと本文との判別を示す図である。 文字領域の取得を示す図である。 文字領域のヒストグラムを示す図である。 傾き推定を説明するための図である。 傾きを考慮した列の取得を説明するための図である。 縦書きおよび横書きの読み順の並べ替えを示すものである。 ルビの統合を示す図である。 文字間隔の整形例を示す図である。 列端の文字間隔の整形例を示す図である。 最終的な切り出し結果を示す図である。 リフローデータの一例を示す図である。 リフロー表示処理のフローチャートである。 リフローデータを分冊に区切る方法を示す図である。 文字および図表の配列イメージを示す図である。
以下、本発明の実施形態について説明する。
図1は、本発明の実施形態に係る画像再配置システムの全体構成を示す図である。図示する画像再配置システムは、レイアウト解析部1と、データ保存部2と、リフロー(再配置)表示部3とを備える。レイアウト解析部1は、画像としてスキャンされた文書データなどの画像(文書画像)を読み込み、様々な画面サイズのデバイスにおいて快適に読むことを実現するためのリフローデータを生成する。データ保存部2には、読み込んだ画像、および、生成したリフローデータを格納する。リフロー表示部3は、データ保存部2に格納されたデータを用いて、画像から切り出した文字や図表などを、画面サイズに合わせて再配置し、表示する。図2は、リフロー表示のイメージを示す図である。
図1に示すレイアウト解析部1は、処理対象となるデータを画像として読み込む画像読み込み部11と、読み込まれた画像の2値化処理を行う2値化処理部12と、2値化された画像で文字または図表と認識されたピクセルの連続した領域を抽出し、ラベルを付けるラベリング部13と、ラベリング結果を用いて図表を示す領域を抽出する図表認識部14と、図表として認識されなかった文字領域から行または列を認識し、文字情報の切り出しを行う文字切り出し部15と、所定の場合にページ全体を図表領域にするなどのレイアウトを変換するレイアウト変換部16と、読み込んだ画像の最終ページのバーコードを認識し、ISBNコードを取得するバーコード解析部17と、各データを保存する記憶部18とを備える。
また、図示するリフロー表示部3は、レンダリング部31と、ディスプレイ32と、タッチパネルなどの操作受付部33とを備える。レンダリング部31は、データ保存部2に格納された画像およびリフローデータを用いて、画像から切り出した文字や図表などを画面サイズに合わせて再配置し、ディスプレイ32に表示する。ユーザは、例えば、ディスプレイ32上に形成されたタッチパネルなどの操作受付部32にタッチすることで、ページ捲り、ページ移動などの指示をリフロー表示部3に入力する。
上記説明した画像再配置システムには、例えば、CPUと、メモリと、HDD等の外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされた画像再配置システム用のプログラムを実行することにより、画像再配置システムの各機能が実現される。また、画像再配置システム用のプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD−ROMなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
なお、レイアウト解析部1は、例えばPC、サーバなどのコンピュータに実装され、リフロー表示部3およびデータ保存部2は、例えばスマートフォン、タブレットなどの携帯端末などに実装することが考えられる。しかしながら、これに限定されず、例えば携帯端末などの1つのコンピュータが、レイアウト解析部1、データ保存部2およびリフロー表示部3を実装することとしてもよい。
次に、本実施形態のデータ構造について説明する。
図3に、主要なクラスとオブジェクトの関係を示す。IR Layout クラス31は、読み込んだ画像のページ全体に関わるレイアウト情報を保持しており、1 または複数のIR Area クラス32のデータと関連している。例えば、IR Layout クラス31は、2 値化した結果、横書き領域、縦書き領域、図表領域の面積およびそれらの和(CHARH AREA, CHARV AREA, FIGURE AREA, SUM AREA)、文字領域取得に利用するY 方向のヒストグラムデータ、初期ラベリング結果の保持リスト(srcArea)、文字候補リスト(charCandidate)、文字領域リスト(charArea)、図表領域リスト(imageArea)などを保持する。
IR Area クラス32は、画像中に複数存在する領域に関する情報を保持する。領域には”縦書き領域”、”横書き領域”、”図表領域”の3 種類が存在する。”縦書き領域”、”横書き領域”はさらに細かい単位のIR Column クラス33のデータと関連している。IR Area クラス32は、例えば、領域の種別(縦書き、横書き、図表)、領域の矩形座標データ、領域の縦書き・横書き判定用の領域内X 方向ヒストグラム、領域の縦書き・横書き判定用の領域内Y 方向ヒストグラム、領域に含まれる行・列のデータなどを保持する。
IR Column クラス33は、”縦書き領域”、”横書き領域”に含まれる”列”または”行”に関する情報を保持する。例えば、IR Column クラス33は、行・列の矩形座標データ、行・列に含まれる文字矩形のデータなどを保持する。IR Column クラス33は、1 または複数のIR Cordinate クラス34と関連している。
IR Cordinate クラス34は、”列”または”行”に含まれる”文字矩形”の座標情報を保持する。また、段落位置についても合わせて管理する。その他に”縦書き”、”横書き”、”図表”領域および”行”、”列”の矩形座標の管理にも利用する。矩形座標は、図4 に示すように矩形左上の座標を基準とし、矩形の幅、高さを利用して管理する。例えば、IR Cordinate クラス34は、文字か段落かの種別、文字矩形の左上X 座標、文字矩形の左上Y 座標、文字矩形の幅、文字矩形の高さなどを保持する。
本実施形態では、このように文書構造を階層的に管理して処理を行う。また、これらのデータは、レイアウト解析部1の記憶部18に格納される。
次に、本実施形態の処理について説明する。
以下にリフローデータ生成処理と、リフロー表示処理について説明する。
<リフローデータ生成処理>
図5は、レイアウト解析部1が行う、リフローデータ生成処理のフローチャートである。ここでは、画像読み込みからリフローデータを生成するまでについて説明する。
[S11:画像の読み込み]
まず、画像読み込み部11は、処理対象となるデータ(文書データなど)を、画像として読み込み、記憶部18に記憶する。本実施形態では、例えば、プリミティブな画像処理にOpenCV を活用し、OpenCVは各種画像コーデックをサポートしているため、様々な形式(例えば、JPEG 形式、PNG 形式、TIFF 形式など)に対応可能であるものとする。なお、読み込みの際には、画像の2値化処理で使用するため、強制的にグレースケール画像として読み込むものとする。そして、読み込んだ画像のページ(画像ファイル)毎に、S12からS17の処理を行う。
[S12:画像の2値化処理]
2値化処理部12は、S11で読み込まれた画像の2値化処理を行う。2値化処理は、濃淡がある画像(8bit 画像であれば0〜255)をある条件に従って、0 か1 の2値で表すように変換する処理のことである。ここでは、文字、もしくは図表がある部分を1、文字がない部分、すなわち背景を0 として認識するように2 値化を行う。画像の2値化処理により、画像の文字・図表部分(前景)と背景の分離を行うアルゴリズムについて、以下に説明する。
(1)前処理
最適な2 値化の結果を得るには、2 値化自体のアルゴリズム以外に前処理が重要である。本実施形態では、前処理として「背景の調整」と「網掛け領域の処理」の2つを行うものとする。
背景の調整については、後述する2値化処理では判別分析法を活用し、動的に閾値を決定し、2値化を行っている。このため、例えば白紙のページであったとしても、スキャニング時の問題で前景を検出してしまう可能性がある。そこで、本実施形態では、背景の輝度値は十分に明るいとを仮定し、例えば式1に示すように2値化を行う前に一定以上の輝度値lum[x,y]を持つ画素に対し、最大輝度値に変更する補正処理を行う。式1では、閾値の例として230に設定している。
網掛け領域の処理については、印刷文書には網掛けによる表現を多く見ることができる。単色の印刷の場合、網掛け領域は図6に示すように黒と白のドットが交互に繰り返されることで表現されており、2値化処理時に前景として網掛け領域全体を検出できない場合がある。
そこで、本実施形態では、ボックスフィルタをかけ画像をあらかじめ平滑化することにより、網掛け領域を前景として検出できるようにする。ボックスフィルタのカーネルは、式2に示すようにn×nを採用し、アンカーはカーネル中心として処理を行う。nは、画面の分解能に合わせて所定の値(例えば、3など)を設定するものとする。
(2)2値化処理
2値化とは、画像の各ピクセルを背景クラスと前景クラスに分ける処理である。本実施形態においては、2値化処理に判別分析法を活用し、閾値を決定しているが、判別分析法以外の手法を用いて2値化処理を行うこととしてもよい。判別分析法ではクラス間分散ω とクラス内分散ωの比で表される分離度Tが最大となる閾値を決定する。
図7に、2値化処理後の画像を示す。図表と文字が前景(白)として認識されていることが分かる。背景は、黒で表現されている。
[S13:ラベリング処理]
ラベリング部13は、S12の2値化処理で検出された前景において、ピクセルの連結する成分毎に異なるラベルをつけていくラベリング処理を行う。すなわち、連結成分を囲む矩形をラベリング結果として抽出する。理想的には1文字もしくは1つの図表が、それぞれ1つの連結成分と認識される。例えば「日」という文字は1つの連結成分として得ることができる。このラベリングの結果を、初期ラベリング結果の保持リスト(srcArea)として記憶部18に格納する。
しかしながら、日本語の文字は複数の連結成分に分かれることも稀ではない。例えば、「現」という字は2つの連結成分に分かれてしまう。また図表も、必ずしも1つの連結成分として取得することはできないため、各種の統合処理が必要となる。1つの文字が複数のラベルに分離されている場合に各々の矩形が重なるような場合がある。
そこで、例えば、図8のように重なりのある矩形の統合を行うことで、その後の処理を簡略化し、高速化を行うことができる。ここで、重なり合うラベルAの矩形と、ラベルBの矩形が統合前にそれぞれ(xa, ya, wa, ha)、(xb, yb, wb, hb)で表されているとする。なお、各ラベルの矩形は、図4で示したように、(矩形の左上x座標, 矩形の左上y座標, 矩形の幅, 矩形の高さ)で表すものとする。この場合、統合後のラベルの矩形は、以下のように変換する。
(min(xa,xb), min(ya,yb), max(xa + wa, xb + wb) - min(xa, xb), max(ya + ha, yb + hb) - min(ya, yb))
初期ラベリング結果の保持リスト(srcArea)に格納されたラベリング結果からラベル同士を比較し、矩形が重なる場合はこのように統合(一方を削除し、もう一方を更新)を行う。
[S14:図表の認識処理]
図表認識部14は、S13で統合されたラベリング結果を用いて、図表を示す連結成分を抽出し、図表を表すラベルとそれ以外のラベルとに分ける。これは一般的に、図表が文字よりも大きいことなどのレイアウトに関する事前知識を活用して抽出を行う。また、図表と、それに紐づくキャプションは一体となってユーザに提示することが望ましいため、図表とそれに紐づくキャプションを示す連結成分の統合処理を行う。
(1)図表領域の取得
図表を表すラベルは、文字を表すラベルに比べて非常に大きいため、矩形サイズに閾値を設けることで容易に検出を行うことができる。本実施形態では、画像全体の面積の1% 以上の矩形面積の大きさを持つラベルを図表として認識し、記憶部18の図表領域リスト(IR Layout::imageArea)に格納する。また図表として認識されなかったラベルは、文字候補として、記憶部18の文字候補リスト(IR Layout::charCandidate)に格納する。
(2)キャプションの統合
図表とそれの説明であるキャプションは、一覧性を保つために1つの図表領域として統合することが必要である。ここでは、検出された図表とキャプションを統合する処理について説明する。すなわち、図表領域の周囲のキャプションエリア候補に、文字候補としてのラベルが存在する場合、当該文字候補のラベルをキャプションと判別し、当該キャプションを図表領域に統合する。以下に、キャプションの統合処理について説明する。
(a)キャプションエリア候補のヒストグラム生成
まず、検出された図表領域の周囲に、キャプションエリア候補を設定する。キャプションエリア候補は、図9に示すように図表領域70の4 辺から等距離Lの範囲を設定する。図表領域の上端をTop領域71、下端をBottom領域72、左端をLeft領域73、右端をRight領域74とする。距離Lは、例えば、図表領域を表すパラメータを利用し、L = min(width, height) としてもよい。すなわち、対象とする図表領域のwidth (幅)およびheight(高さ)の小さい方の値としてもよい。
本実施形態では、設定された4つのキャプションエリア候補で、前景のヒストグラムを計算する。Top 領域71およびBottom 領域72ではX 方向のヒストグラム、Left 領域73およびRight 領域74ではY 方向のヒストグラムを計算する。
図9に示すように、キャプション(前景)があるRight 領域74とBottom 領域72ではヒストグラムの山75、76ができる。キャプションがないTop 領域71とLeft 領域73ではヒストグラムは平坦となる。
なお、画像のX方向ないしY方向の各座標におけるその座標上に存在する前景(文字、文字矩形など)の指標となる値を計算することでヒストグラムを作成する。このヒストグラムの計算は、本実施形態では、図10に示すように、記憶部18の文字候補リスト(IR Layout::charCandidate)を活用して、文字候補として認識されたラベルの数をX 方向またはY 方向にカウントして、簡易的に計算することとする。図10に示すように、文字領域に3つの文字矩形が存在する場合、X 方向またはY 方向に各座標上に存在するラベルの数を取得する。
具体的には、文字領域内の各ラベルの領域rについて、
X 方向のヒストグラムを作成する場合は、当該ラベルの領域rの左端≦i≦右端を満たす全てのiについてhx(i)に1を加え、
Y 方向のヒストグラムを作成する場合は、当該ラベルの領域rの上端≦i≦下端を満たす全てのjについてhx(j)に1を加える。
これにより、本実施形態では、精度を落とすることなく、高速な計算を実現する。
なお、ヒストグラムは、図11に示すように、文字領域の画像の画素自身を走査することで作成してもよい。
(b)キャプションエリアの設定と領域の更新
ヒストグラムの計算が終わった後、キャプションエリアを設定する。図12のBottom 領域に示すように、ヒストグラムのランレングスを計算し、最も外側のヒストグラム81のランの終端82までをキャプションエリア83として拡張する。
この際、図12のTop 領域84のようにヒストグラム85は存在するものの、ヒストグラム85のランがキャプションエリア候補84を超えて存在する場合(ランがキャプションエリア候補内で収束しない場合)には、キャプションではないと判断し、図表領域の拡張を行わない。
また、図13に示す例では、キャプションエリア候補のRight領域には、キャプションではない本文のラベル(文字候補)が存在する。この場合、図12のTop 領域84とは異なり、本文のラベルの隙間(行間)が、キャプションエリア候補の境界91と一致する(重なる)場合がある。このとき、ヒストグラムの山ができ、ヒストグラムのランがキャプションエリア候補を超えて存在しない(ランがキャプションエリア候補内で収束している)と判別され、本文のラベルをキャプションとして誤検出してしまう問題がある。このため、本実施形態では、ヒストグラムのラン毎に、キャプションエリア候補の境界92に重なるラベルがあるか否かをチェックする。ラベルがある場合、そのランに属する領域は、キャプションではないと判断する。図13の場合、ラベル93が境界92に重なっているため、ラン95に属する領域はキャプションではないと判断する。また、この処理において、文字間の隙間が境界92と一致してしまう場合がある。そこで、境界92の外側の一定範囲94に文字候補として認識されたラベルがあるか否かもチェックし、ラベルがある場合は、そのランに属する領域は、キャプションではないと判断する。図13では、ラン96に対応する行の文字間が境界92と一致しているが、範囲94にラベルが含まれるため、ラン96に属する領域はキャプションではないと判断する。境界と重なるラベル、境界の外側の一定範囲にあるラベルのいずれも存在しない場合、キャプションとして判断する。
以上のようにして、キャプションエリアを設定した後、記憶部18の文字候補リスト(IR Layout::charCandidate)に格納されている文字候補領域でキャプションエリア内に存在している領域の削除を行い、図表領域をキャプションエリア分拡大して更新する。また取得した図表領域の面積の和を計算し、図表領域の面積(IR Layout::FIGURE AREA)に格納する(後々のレイアウト変換に利用する)。
以上により、S14では、S13のラベリング結果を、図表領域リスト(IR Layout::imageArea )と、文字候補リスト(IR Layout::charCandidate)とに分ける。
[S15:文字情報の切り出し]
文字切り出し部15は、記憶部18の文字候補リスト(IR Layout::charCandidate)を用いて、1 文字、1文字の矩形を切り出す処理を行う。
すなわち、図表およびキャプションとして認識されなかった文字候補のラベルは、文字を構成していると考えられる。まず、これらの文字を構成しているラベルの画像内分布より、文字領域を矩形として定義する。次に定義された文字領域内で文字が縦書きで書かれているか、もしくは横書きで書かれているかを、文字領域内のラベルの分布から推測する。定義された各文字領域内で縦書き・横書きが判別できた後に、縦書きの場合には列、横書きの場合には行の認識を行い、最後に1 文字、1 文字の切り出しを行う。以下に、これらの処理について説明する。
(1)文字領域の取得
まず、文字候補リスト(IR Layout::charCandidate)のデータを用いて、文字領域を取得する。一般的な書籍を対象と仮定すれば、縦方向で文書の領域を分割することができる。例えば、文書の上部から柱領域(章題などが書かれるエリア)、本文領域、ノンブル領域(ページ番号の書かれるエリア)のように分割して別の領域として考えることが可能である。そこで、文字候補リスト(IR Layout::charCandidate)を利用して、Y 方向の前景ヒストグラムを作成し、このランレングスを計算することで領域の縦分割を行う。
図14に、縦分割の方法を示す。画像101の中で、柱領域102、本文領域103、ノンブル領域104が異なる領域として認識できていることが分かる。図表が入るページの場合にも文字候補リスト(IR Layout::charCandidate)を利用してヒストグラムを作成するため、図表部分105は無視してこの処理を行うことが可能である。
また、同じ領域でありながら、偶然、文字の切れ目が一致することにより、複数の領域に分割されてしまうことがある。これを防ぐため隣接領域が十分近い場合(例えば、30 ピクセル以内など)、領域の統合を行うこととする。
最終的に分割された領域に含まれる文字候補リスト(IR Layout::charCandidate)の矩形領域のX 方向最小値と最大値を求め、文字領域を決定する。具体的には、
文字候補の上端≧分割された文字領域の上端、
かつ、 文字候補の下端≦分割された文字領域の下端、
を満たす全ての文字候補の中で、最小の左端および最大の右端を、それぞれ文字領域の左端および右端とする。取得した文字領域は、記憶部18の文字領域リスト(IR Layout::charArea)に格納しておく。
(2)文字方向の推定
取得された文字領域で、文字が縦書きで書かれているか、横書きで書かれているかを判定する。まず、図15に示すように、取得された文字領域内でX 方向、Y 方向のヒストグラムを作成する。ヒストグラム作成後、X 方向、Y 方向の双方で、白ラン(連続する前景ヒストグラムの長さ)および黒ラン(連続する背景ヒストグラムの長さ)の平均を計算する。ただし、前景ヒストグラム、背景ヒストグラムとは、それぞれ、ヒストグラムの値が0より大きい部分、ヒストグラムの値が0である部分のことである。
ここでは、X 方向の白ランの平均をxwrun、黒ランの平均をxbrunとし、Y 方向の白ランの平均をywrun、黒ランの平均をybrun とする。
例えば、図15に示すように、文字領域が縦書きである場合、ybrun はほとんどなくなる。縦書きをY 方向に射影すると文字がない部分はほとんど表れないためである。反対にxbrun は一定の値を持つことになる。なぜならば、行間に文字のないスペースが定期的に生じるためである。つまり、xbrun > ybrun の場合、基本的に縦書きと判定し、それ以外は横書きと判定する。
しかしながら、この条件には例外が存在する。それは、横書きで1行だけの場合である。複数行ある横書き領域の場合には上記の条件で問題がないが、1行だけの場合には、ybrun はほぼゼロとなり、xbrun は一定の値を持つため、縦書きと判定されてしまう。例えば、柱領域やノンブル領域はこのままだと縦書き領域と判定されてしまうことになる。
そこで、これを回避するために、以下の条件1および条件2を満たす場合には、横書きの1 行だと認識し、xbrun > ybrun であっても横書きと判定する。
条件1:文字領域の高さheigtと、ybrun が同程度の大きさである。例えば、以下の式を満たす場合、同程度であると判定する。
条件2:xwrun と、ywrun の大きさがあまり離れていない。例えば、以下の式を満たす場合、あまり離れていないと判定する。
条件1および条件2の例外条件を追加することで、文字領域の縦書き・横書きを正しく認識することができる。判定された縦書き・横書きの結果は記憶部18のIR Area の領域の種別に格納しておく。
(3)傾き推定
文字領域の縦書き・横書きが判定できたら、縦書きの場合はX 方向のヒストグラムを利用して列を取得し、横書きの場合はY 方向のヒストグラムを利用して行の取得を行う。以降は簡単のため、文字領域が縦書きである場合について説明する。
取得された文字領域の中で最も大きい文字領域を特定し、当該文字領域をn分割する。縦書きの文字領域であれば横に分割し(X 方向の線で分割し)、横書きの文字領域であれば縦に分割する(Y 方向の線で分割する)。なお、文字領域の分割は、等分するのが望ましいが、等分でない場合は分割比率等を用いることとしてもよい。
図16は、傾き推定を説明するための図である。ここでは、文字領域121を上下に2等分する場合を例として説明する。まず、分割した各領域122、123において、X方向の前景のヒストグラムを作成する。すなわち、上部領域122のヒストグラムhu(x)と、下部領域123のヒストグラムhd(x)とを作成する。なお、ヒストグラムは、前述した図10または図11の方法により作成する。S11で読み込まれた画像が傾いている場合、その傾きに応じて、分割した領域122、123のヒストグラムのラン(山)の位置がずれる。そのため、以下のc(x)が最大となるx(傾きを補正するためにずらす量)を算出する。
なお、bu(i)は、上部領域122のヒストグラムhu(x)を2値化するものであって、ヒストグラムhu(i)が0より大きい場合(少なくとも1つの文字候補のラベルが存在する場合)は「+1」を設定し、それ以外(文字候補のラベルが1つも存在しない場合)は「-1」を設定する。なお、iは、x座標である。bd(i)は、下部領域123のヒストグラムhd(i)を2値化するものであって、bu(i)と同様である。
そして、算出したxを用いて画像の傾きsを、以下の式により推定する。
傾きs = x ÷ (文字領域の高さ ÷ 2)
図16に示す例では、2等分した場合の例であるため、上記式では(文字領域の高さ ÷ 2)としているが、分割数に応じて分割した領域間の距離を設定する。すなわち、分割領域のうち2つが選択されたとき、
傾きs=x÷(|一方の領域の中心のy座標−他方の領域の中心のy座標|÷2)
とする。また、分割数が3以上の場合は分割領域の選択方法が複数通りあるため、例えばy座標が最も離れた2つを選択してもよいし、y座標が小さい方から2つを選択してもよい。一般的には分割領域の距離が離れている方が高精度になるため前者を用いるが、小説等でせりふが多い文字領域など、文字領域の下方まで文字が続かない行が多いときには後者の方がよい場合がある。さらに、分割領域の組み合わせを複数とって各々でsを算出し、その平均値や中央値をとってもよい。複数の組み合わせは、全ての組み合わせや、隣接する分割領域の組み合わせでもよいし、他の組み合わせでも構わない。
なお、本実施形態では、読み込んだ画像のページ全体の傾きを、ページ内で面積が最大の文字領域を用いて推定しているが、ページ内の文字領域毎に上記の方法により傾きを推定し、文字領域毎の傾きを保持することとしてもよい。ページ全体の傾きを推定する場合、最大の文字領域を用いることで、他の小さい文字領域における傾き推定の失敗を回避することができるとともに、処理時間を短縮することができる。一方、文字領域毎に傾きを推定する場合、画像に幾何学的な歪みが発生している場合(例えば、スキャンが曲がってる場合等)に、各文字領域単位で高精度な傾きを推定することができる。
(4)行・列の取得
文字領域の縦書き・横書きを判定し、傾きの推定を終えると、縦書きの場合はX 方向のヒストグラムを利用して列を取得、横書きの場合はY 方向のヒストグラムを利用して行の取得を行う。ここでは、文字領域が縦書きである場合について説明を行う。
まず、ヒストグラムの前景のランレングスを検出することで、列幅を取得していく。この際、極端に幅の小さい(3 ピクセル以下)場合は、誤検出だとして無視をする。
ここで、推定した傾きsを考慮したヒストグラムを再作成する。図17(a)は、傾いた文字領域について再作成したヒストグラムの例である。図示する例では、推定した傾きsの分だけ文字候補のラベルの加算位置をずらしてヒストグラムを作成している。具体的には、各ラベルの領域rについて、その領域rの左端≦ i ≦ 右端を満たす全てのiについて、h(i + s * (領域rの上端))に1を加える。これにより、傾きsの分だけ領域rの加算位置をずらしたヒストグラム131が作成される。
そして、図17(b)に示すように、作成されたヒストグラムの山の範囲に含まれる各ラベルの領域rを列に含め、当該列に含めた各ラベルの領域rの幅を、ヒストグラムのランレングス(幅)に合わせて、更新する。具体的には、各ラベルの領域rについて、
領域rの左端 ≦ ヒストグラムの左端 + s * 領域rの上端 かつ
領域rの右端 ≦ ヒストグラムの右端 + s * 領域rの上端
の場合、以下の処理を行う。
領域rを列に含め、領域rの左端を「ヒストグラムの左端 - s * 領域rの上端」に設定し、領域rの幅をヒストグラムのランレングスと同じにする。これにより、各ラベルの領域rの幅が、列幅と等しくなり、同じ列に格納されている文字候補をレンダリング時に並べやすくなる。
次に、取得した列幅の範囲に含まれる文字候補リスト(IR Layout::charCandidate)のデータのY 方向の最小値、最大値を利用して列の高さを取得して、列領域リスト(charArea.column )として、列を表す矩形情報と、列に含まれる文字候補リスト(IR Layout::charCandidate) のデータとを記憶部18に格納する。
本実施形態では、このように傾きを推定し、推定した傾きの分だけずらしてヒストグラムを生成する。これにより、列として切り出した列領域または行として切り出した行領域に、余分な領域が含まれることなく、本来の画像の列領域または行領域を正しく切り出すことができる。なお、文書画像が傾いている状態で、文書画像の垂直方向または水平方向に列または行が存在するものとして処理した場合は、作成したヒストグラムのランレングスが本来の列幅または行の高さより大きくなってしまい、結果として切り出した列領域または行領域に余分な領域が含まれてしまう。本実施形態では、傾きを推定することで、切り出した列領域または行領域に余分な領域が含まれることを回避することができる。
次に、文字候補、行・列領域、および文字領域の読み順への並び替えを行う。最後のデータ出力や文字の切り出しに備えて、ここまで取得したリストを読み順に並べ替えておく必要がある。図18は、縦書きの場合と横書きの場合の読み順の並べ替えを示すものである。図18では、数字が読み順を示している。図示するように、行・列に含まれる文字候補は、列の場合はパラメータy が小さい順、行の場合はパラメータx が小さい順に並べ替えておく。行・列領域のリストは、列の場合はパラメータx が大きい順、行の場合はパラメータy が小さい順に並べ替えておく。
文字領域リストは、まず画面全体の列面積(IR Layout::CHARV AREA )および行面積(IR Layout::CHARH AREA)を取得し、画面全体が縦書きの構成か横書きの構成か判定を行う。すなわち、IR Layout::CHARV AREA > IR Layout::CHARH AREA で縦書き、それ以外で横書きであると判断する。
この判断結果によって、縦書きと判断された場合には、領域のY 方向が重なる場合、パラメータx が大きい順、それ以外の場合にはパラメータy が小さい順に並べ替える。横書きと判断された場合には、領域のY 方向が重なる場合、パラメータx が小さい順、それ以外の場合にはパラメータy が小さい順に並べ替える。
(5)ルビの統合
これまでに取得された行・列の中にはルビに当たるものも含まれている。ルビを単独でリフローして表示してしまうと、意味が通らなくなってしまうため、ルビはルビをつける対象の文字矩形と統合を行う。
ルビの特徴として、ルビをつける対象の文字矩形から距離が近い、ルビは対象の文字矩形に対し、列幅または行の高さが小さいことである。この2つの特徴を利用してルビを統合する。図19にルビ統合の処理を示す。
ここでは、簡単のために縦書きの場合で説明する。この場合、ルビは文字の右側に付くことになる。いま、隣接する列の内、右側の列をCr、左側の列をCl としたとき、まず列間の距離l = Cr.x - (Cl.x + Cl.width)を計算する。この距離l が列幅Cl.width の半分以下である場合、十分距離が近いと判定する。さらに、列幅の比(Cr.Width / Cl.width )が0.5以下の場合に、列幅が隣接する列幅と比較して小さいと判定する。なお、ここで判定に用いた閾値(列幅の“半分”以下、列幅の比の“0.5”以下)は例示であって、これ以外の値を用いることとしてもよい。
この2つの判定により、ルビ列として判定された場合、ルビ列とY 方向で重なっている文字矩形をルビ列の右端まで拡張する。また、レンダリングの際の文字センタリングを容易にするため、ここで右端まで拡張した分と同じだけ左端も拡張する。
(6)文字の切り出し
日本語を構成する文字(漢字、ひらがな)は、1つ文字が1つの連結成分とはなっていないため、これまでの処理で得られた文字候補の矩形は、1つの文字が複数の矩形に分かれてしまうことが頻繁に起こる。そこで、1つの文字であると推定できる文字候補の矩形同士を統合し、さらにレンダリング時のリフロー配置を見易くするために改行の認識、文字間隔の整形を行う。
(a)文字矩形の統合
これまでの処理により、文字矩形は行・列に属し、行の場合、並び順はX方向の小さい順、矩形の高さは行の高さと等しくなっており、列の場合、並び順はY方向の小さい順、矩形の幅は列幅と等しくなっている(ルビと統合した矩形は除く)。すなわち、行の場合はY方向、列の場合はX方向での統合を考える必要はなく、並んでいる矩形を順に統合するかどうか判断すれば良いことになる。矩形の統合ルールとして日本語の文字の特徴、文字の幅と高さが同程度となることを利用した。
以降は簡単のため、列内の文字矩形統合(縦書き)について説明を行う。これは列毎に文字矩形の並び順の前後で矩形の統合を判断することで実現する。まず前後の矩形が一部重なる場合には無条件で統合を行う。矩形の重なりはS13のラベリング処理ですでに行っているが、例えば、”い”という文字は初期のラベリング結果では左の部分と右の部分が重なっていないが、列に属した段階で幅を列幅に更新しているため、新たに矩形が重なることが生じる。
次に前後の矩形が重なっていない場合には矩形を統合した場合の矩形高さheightn を以下の式より算出する。
いま、列幅をcolumn_width としたときに、以下の式を満たす場合に統合を行う。なお、以下の式の右辺の“1.0”は例示であって、これ以外の値を用いることとしてもよい。
また、前後の文字矩形がルビを統合した矩形だった場合には統合を行う。これはビューワ側での禁則の関係で、一連のルビが付いた文字は複数の文字からなっていていても、1つの矩形として切り出す。なお、ルビを統合した矩形かどうかは列幅と矩形の幅が異なることから判断することができる。
(b)改行の認識
リフロー表示部3のレンダリング部31でリフローを行う際に改行を把握していると、適切に改行を入れることができ、読み易さに寄与することができるため、段落の認識を行う。
行・列毎に文字の統合を行っていく際に、行・列に含まれている最後の文字矩形に到達した場合に改行が存在するかを認識する。簡単のため、縦書きについて説明すると、文字領域のY 方向下端と比較して、最後の文字矩形のY 方向下端、すなわち列のY 方向下端に距離がある場合に改行があると認識を行う。具体的には列幅のnd倍以上(例えば0.7 倍以上)の距離がある場合に改行があると考える。
さらに、改行があった後に次の文字列との間に大きな余白がある場合(例えば、見出しと本文の間など)にはもう1つ改行があると考えることとする。この場合、改行データを2回付加することとなる。大きな余白の定義は、次の列との距離が列幅のn倍(例えば1倍)よりも大きい余白とする。
(c)文字間隔の整形
ここまでの処理で得られた矩形は、文字に外接する矩形であるため、文字間の余白が削られてしまっている。このままレンダリング部31でリフローを行うと文字が詰まってしまう。そこで文字間の余白部分を連続する前後の文字矩形に配分する。余白は均等に存在するのではなく、前後の文字矩形の大きさによって変わるため、それを考慮して配分する。
図20は、文字間隔の整形方法の一例を示す図である。簡略化のために縦書き領域の場合に絞って説明する。ここで、並び順で前後する文字矩形について考える。いま、連続する矩形の高さheighti とheighti+1 の比がheighti : heighti+1 = A : Bだったとする。このとき文字矩形i と文字矩形i + 1 の余白を、逆比B : A で配分することにする。なお、横書きの場合には、同様に文字の幅width を利用すれば良い。
なお、列端(先頭、末尾)の文字矩形については、上記の余白の配分方法を用いることができない。そのため、図21に示すように、列端の文字の高さが小さい場合、余白の配分が行われず文字矩形の高さが小さいままであり、リフローを行う際にこの部分の文字間隔が極端に詰まってしまう。これを防止するため、列端の文字矩形の高さが所定値(例えば、列幅×0.8〜1.2程度)以下の場合、所定値まで文字矩形の高さ拡張する。なお、文字矩形の高さを所定値まで拡張する場合、先頭の文字矩形については、当該文字矩形の上端が文字領域からはみ出さないようにし、末尾の文字矩形については、当該文字矩形の下端が文字領域からはみ出さないようにする。
図22に、図表領域、文字矩形などの最終的な切り出し結果の一例を表示する。なお、文字列下の空欄の矩形は、改行を示す。
[S16:レイアウト変換]
これまでの文字や図表の情報の切り出し結果により、リフローデータを作成することができるが、対象とする画像のレイアウトによってはうまく機能しない場合がある。そこで、レイアウト変換部16は、読み手の読みやすさを考慮して、解析された結果が一定条件下の場合には読み込んだ画像のページ全体を図表領域にするなどの、解析したレイアウトの結果を変更する処理を行う。
(1)画像ページへの変換
一覧性が必要なページの場合や、取得したレイアウト解析結果が明らかに失敗している状況においては、無理やりリフローデータを生成するよりも、そのページは一枚の画像として表示した方が読み手の立場で考えると好ましい。具体的には下記のケースの場合、その読み込んだ画像を画像ページとしてページ全体を図表領域として、変換を行う。
(a)図表が主体のページ
処理対象として文字が主体の文書を想定しているため、ページ中の文字領域面積と比較して、図表領域面積が大きな場合(表紙など)には、図表の一覧性を確保するために画像ページとして変換を行う。
具体的にはレイアウト解析の過程で取得した各領域毎の面積(縦書き文字領域(CHARH AREA)、横書き文字領域(CHARV AREA)、図表領域(FIGURE AREA))を活用し、図表領域の面積が、文字領域の面積のn倍(例えば、1.5倍)より大きい場合に、図表が主体であると認識し、画像ページへ変換する。
なお、本実施形態では、文字領域の面積を示すCHARH AREA、CHARV AREA は、いわゆる文字領域の面積ではなく、例えば縦書きであれば、文字領域中の列部分の面積の総和であるものとする(空白部分は領域面積と考えない)が、勿論、空白部分を含めた文字領域そのものの面積を使用してもよい。
(b)目次ページ
目次ページは、一覧性が重要であること、また、文字に飾りが付いていることが多いため、正確に認識して切り出すことが難しい。そこで目次と認識できた場合には画像ページとして変換を行う。
目次の判定には、目次ページは本の前半に登場すること、見出しが連続するため、行間が広く空く(改行が2 回続く)こととなる。そこで、ページ番号i がi < 50 かつ、ページに存在する行・列数COL_NUM と、改行の数BR_NUM を計測し、以下の式を満たす場合に、目次ページとして認識し、画像ページへと変換する。なお、このページの判定に用いた閾値“50”、“0.7”は例示であって、これ以外の値を用いることとしてもよい。
(c)検出面積が極端に少ないページ
文字領域や図表領域として検出された領域が非常に少ないページ(例えば、章題だけが書いてあるページ)は一覧性が大事なことが多いため、画像ページへと変換する。具体的には、レイアウト解析により取得し各領域の面積の和(SUM_AREA = CHARH_AREA + CHARV_AREA + FIGURE_AREA)が、ページ全体の面積(PAGE AREA = X SIZE ・ Y SIZE)に対し、n%(例えば、5% )以下の場合には、画像ページへと変換する。
(2)ノンブル・柱の削除
リフローデータにした時点で紙書籍の”ページ”という概念がなくなるため、ページ番号が書かれているノンブル領域は必要のないデータとなる、また柱と呼ばれる章題などを書かれた領域についてもページ単位に付与されている情報であるため、リフローデータの生成には用いないことにする。
そこで、レイアウト解析後にノンブル・柱に相当するデータについては削除を行う。ノンブル・柱の認識は、文字領域の位置を用いて行うものとする。すなわち、所定の範囲(例えば、画像の上下の端から、画像の高さのn%(例えば、20%))以内に存在している文字領域は、ノンブルまたは柱であると認識する。また、前記所定の範囲に存在する文字領域であって、かつ、当該文字領域に含まれる行または列が所定値(例えば、1〜3)以下の場合、ノンブルまたは柱であると認識することとしてもよい。
また、前記所定の範囲に存在する文字領域であって、かつ、当該文字領域の横幅/画像の横幅が所定値以下の場合、ノンブルまたは柱であると認識することとしてもよい。
[S17:テンポラリ結果の出力]
S16の処理後に、レイアウト変換部16は、処理対象の画像の1ページ分の処理結果を記憶部18に出力する。なお、S20で最終的に出力するリフローデータは、S11で読み込んだ全てのページの画像と1 対1 に対応するものであるが、S17で一時的な結果を出力することで、読み込んだ画像の1 ページ目の画像ファイルから最終ページの画像ファイルまで逐次的に処理を行う必要がなくなるため、並列計算による処理速度の向上を実現することが可能になる。
以上説明したS12からS17の処理は、読み込んだ画像の各ページ毎に行う。そのため、未処理のページが存在する場合は(S18:NO)、S12に戻り以降の処理を行うとともに、全てのページの処理が終了した場合は(S18:YES)、S19に進む。
[S19:バーコード解析]
本の背表紙にはバーコードがついており、バーコードを認識することで本の識別子であるISBN コードを取得する。ISBN コードを取得できれば音楽CD のCDDB からメタデータが取得できるのと同様に本のメタデータを取得し、S11で読み込んだ画像のコンテンツの管理に役立てることができる。そこで、バーコード解析部17は、所定のページの画像の中のバーコードを検出し、検出したバーコードからコード種別を判別し、ISBN-13 もしくはISBN-10 の情報のみを取得する。本実施形態では、背表紙は基本的に最終ページに存在すると仮定し、最終ページのみこの処理を行うこととするが、最終ページだけでなく、例えば、最終ページから数ページ(10ページ以下程度)にこの処理を行うこととしてもよい。
なお、本実施形態では、バーコードの解析にZBar ライブラリを利用するものとする。ZBar ライブラリでは、ImageMagick を活用した画像の入出力を用意しているが、単純にグレースケール画像のメモリを渡すだけで動作可能であり、他の画像読み込みライブラリで代替が可能なため、すでにレイアウト解析のために読み込み済みの画像フォーマットを代わりに渡すことで処理を行う。
[S20:最終結果の出力]
S11で読み込んだ画像の全てのページに対し、文字情報および図表の切り出しが行われた後に、S17で出力したテンポラリ結果ファイルを統合し、1つのリフローデータとして記憶部18に出力する。本実施形態では、リフロー表示部3のレンダリング部31などのレンダリングエンジンで利用できるように、JSON 形式でリフローデータの出力を行う。JSON データは1 コンテンツに対し、1 つのJSONファイルとし、全てのページの解析結果を含んだものとして定義する。本実施形態では、高速化のために並列演算を行っており、逐次先頭からページ順に処理するわけではないため、各ページ毎の処理結果をテンポラリ結果としてS17で出力し、それを最後に統合することで最終JSON ファイルを作成する。
図23は、リフローデータの一例を示すものである。
リフローデータは、切り出した文字および図表のオブジェクト領域毎に設定される。具体的には、オブジェクト領域の種別と、読み込んだ画像のページIDと、オブジェクトの左上の座標(x,y)と、オブジェクト領域の幅、オブジェクトの高さなどを備える。オブジェクト領域の種別としては、例えば、0:文字、1:図表、2:改行などが考えられる。その他の種別として、改ページ、章区切り、縦書き文字、横書き文字などがあってもよい。また、オブジェクト領域の種別が改行の場合は、以降の要素を省略して出力する。なお、画像のページIDと、座標(x,y)は、読み込んだ画像のどのページのどの場所にオブジェクトがあるかを特定するために用いる。
読み込んだ画像のページ毎に、読み順で文字、改行を出力し、最後に図表領域の出力を行い、最後に全てのページを統合することで1つのリフローデータを生成し、記憶部18にする。
次に、読み込んだ画像(以下、元画像)と、生成したリフローデータとを用いたリフロー表示処理について説明する。
<リフロー表示処理>
図24は、スマートフォン、タブレット端末などに搭載されたリフロー表示部3が行う、リフロー表示処理のフローチャートである。
S21において、レンダリング部31は、リフローデータ生成処理で生成されたリフローデータと、元画像とを読み込む。なお、リフロー表示部3は、レイアウト解析部1の記憶部18に記憶された元画像およびリフローデータを、例えばネットワークなどを介して取得し、データ保存部2に格納する。
S22において、レンダリング部31は、読み込んだリフローデータのオブジェクトの集合を、所定の位置で区切った分冊を生成する。すなわち、オブジェクトの集合を、所定のオブジェクト数を基準として分割する。図25に示すように、分冊の作成には、2つの方法が考えられる。第1の方法は、所定のオブジェクト数でリフローデータを区切ることで、分冊を作成する。図25(a)に示す例では、1000オブジェクト毎にリフローデータを区切る。すなわち、1から1000までのオブジェクトは分冊1とし、1001から2000までのオブジェクトは分冊2とする。
第2の方法は、所定のオブジェクト数以降で、区切りのよいオブジェクトを検出した箇所で区切って、分冊を作成する。区切りのよいオブジェクトとしては、改行、図表などが考えられる。図25(b)に示す例では、1000オブジェクト以降で最初に区切りのよいオブジェクト(図示する例では改行)を検出した箇所で区切り、当該オブジェクトまでを分冊1とする。そして、分冊1の区切りの後から1000オブジェクト以降で最初に区切りのよいオブジェクト(図示する例では図表)を検出した箇所で区切り、当該オブジェクトまでを分冊2とする。
S23において、レンダリング部31は、ユーザの操作対象の分冊に含まれる各オブジェクトを、リフローデータを用いて元画像から切り出し、ディスプレイ32の表示領域(画面)の大きさに応じて生成した配置領域に、オブジェクトを順次、再配置する。そして、再配置領域をディスプレイの表示領域と等しいサイズに切り分けた(分割した)、リフローページを生成する。図26は、文字および図表の配置・配列イメージを示すものである。縦書きの場合、オブジェクトを配置する領域のサイズは、例えば高さを表示領域の高さと等しく、幅は無制限とする。この配置領域に分冊の全ての文字を配置した後、配置領域を表示領域の幅と等しい長さ毎に区切り、その1区切りを1つのリフローページとする。
本実施形態では、CSS3(http://www.w3.org/TR/jlreq/ja/)の多言語対応(CSS3 Writing Modes Module)を用いて、各文字のオブジェクトを所定の拡大率で日本語組版の要件に従って縦書きに配置するものとする。また、CSS2のdisplay:inline-block指定により、画像から切り出したオブジェクト領域を文字として取り扱うことができる。
なお、図24に示すように、オブジェクトの種別が改行の場合、無条件で改行し、以降のオブジェクトを次の列に改行する。また、CSS3の段組(CSS3 Multi-column Layout Module)を流用し、文章をリフローページ単位に分割する。また、図表のオブジェクトは、1行・列とし、拡大率は原則固定とする。但し、画面内に収まらない場合は、収まるサイズに拡大率を調整する。
S24において、レンダリング部31は、S23で配置した分冊の、ユーザが注目しているリフローページを、ディスプレイ32に表示する。
S25で、操作受付部33は、ユーザの操作(タッチパネルへのタッチなど)を受け付ける。ユーザ操作が、ページ捲りまたはジャンプなどのページ移動の操作の場合であって(S26:YES)、移動先のリフローページがS23で処理した分冊と同じ分冊内の場合は(S27:NO)、S23で生成されたリフローページの中の移動先のリフローページを表示する(S24)。移動先のリフローページが別の分冊内の場合は(S27:YES)、S23に進み、移動先の分冊に含まれる各オブジェクを配置した全てのリフローページを生成し、その後、ユーザ操作で指定された移動先のリフローページを表示する(S24)。
なお、ページ捲りの場合は、同じ分冊内の場合、現在表示しているリフローページの単純に1つ前または1つ後ろのリフローページを表示する。分冊の端を超えて、1つ前または1つ後に移動する場合は、S23で移動先の分冊のオブジェクトを全てリフローページに配置した後に、移動先のリフローページを表示する。
ジャンプ操作は、移動先のページを元画像のページ番号で指定する。移動先としては指定した元画像のページの最初のオブジェクトが含まれるリフローページを、移動先として表示する。移動先が、異なる分冊の場合は、S23で移動先の分冊のオブジェクトを全てリフローページに配置した後に、移動先のリフローページを表示する。
ユーザ操作が、拡大・縮小操作の場合(S28)、操作された拡大率に変更し(S29)、S23に進み、現在表示している分冊のオブジェクを変更後の拡大率で全てリフローページに再配置し、その後、操作前のリフローページの最初のオブジェクトが含まれる再配置後のリフローページを表示する(S24)。
ユーザ操作が、表示領域サイズの変更の場合(S30)、変更後の表示領域サイズに変更し(S31)、S23に進み、現在表示している分冊のオブジェクを変更後の表示領域サイズのリフローページで再配置し、その後、操作前のリフローページの最初のオブジェクトが含まれる再配置後のリフローページを表示する(S24)。表示領域サイズの変更には、例えば、ディスプレイ32の向きを縦長から横長に変更すること、ディスプレイ32の表示領域サイズを拡大したり、縮小することなどが考えられる。
なお、ユーザ操作として、リフローページの表示と元画像のページの表示との切り替え操作があってもよい。例えば、現在表示しているリフローページの最初のオブジェクトが含まれる元画像のページをディスプレイ32の表示領域に合わせて表示する、または、現在表示している元画像のページに含まれる最初のオブジェクトを含むリフローページを表示することが考えられる。
以上説明した本実施形態では、文書画像を構成する各文字および図表を囲う矩形座標で構成されるリフローデータを生成し、表示側でディスプレイサイズに合わせてリフローデータを用いて文字画像をリフローさせることで、様々なディスプレイサイズで快適な読書をユーザに提供することができる。
また、本実施形態では、読み込んだ画像の傾きを推定し、推定した傾きの分だけずらしてヒストグラムを生成する。これにより、列として切り出した列領域または行として切り出した行領域に、余分な領域が含まれることなく、本来の画像の列領域または行領域を正しく切り出すことができる。すなわち、画像として列領域または行領域から切り出した文字をリフローして表示した場合に、文字のがたつきが回避され、見栄えのよい、快適な読書をユーザに提供することができる。
また、本実施形態では、図表とそのキャプションとを統合し、1つの図表領域として扱うため、リフロー表示の際に図表とキャプションとが分離して表示されてしまうという問題を解消することができる。
また、本実施形態では、文字領域のX方向およびY方向のヒストグラムを作成することで、文字領域の縦書き・横書きを正しく判定することができる。
また、本実施形態では、連続する文字矩形の余白を、当該連続する文字矩形に配分することで、文字間隔を整形することができる。
また、本実施形態では、ルビとその対象とする文字とを統合し、1つの文字矩形として扱うため、リフロー表示の際にルビと対象とする文字とが分離して表示されてしまうという問題を解消することができる。
また、本実施形態では、読み込んだ画像の列領域または行領域における改行を認識することで、読み込んだ画像における改行部分をリフロー表示においても維持することができる。これにより、読み込んだ画像おける改行部分がリフロー表示において改行でなくなった場合の文字のがたつきの発生を回避することができる。
また、本実施形態では、生成したリフローデータを、所定のオブジェクト数で区切った分冊単位で、オブジェクトのリフローを行う。これにより、リフロー表示の際に、一度に多くのオブジェクトの処理を行わなくてすむため、処理時間、使用するメモリ量などのリソースを削減することができる。また、操作レスポンスの劣化を防止し、ユーザの利便性を向上することができる。
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
1 :レイアウト解析部
11:画像読み込み部
12:2値化処理部
13:ラベリング部
14:図表認識部
15:文字切り出し部
16:レイアウト変換部
17:バーコード解析部
18:記憶部
2 :データ保存部
3 :リフロー表示部
31:レンダリング部
32:ディスプレイ
33:操作受付部

Claims (8)

  1. コンピュータが行う画像再配置方法であって、
    読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出ステップと、
    前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定ステップと、
    前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得ステップと、を行うこと
    を特徴とする画像再配置方法。
  2. 請求項1に記載の画像再配置方法であって、
    前記領域抽出ステップは、前記文書画像から、図表が含まれる図表領域を抽出し、
    前記図表領域の周囲のキャプション候補領域に文字矩形が存在する場合、当該文字矩形をキャプションと判別し、前記キャプションを前記図表領域に統合するキャプション統合ステップを、さらに行うこと
    を特徴とする画像再配置方法。
  3. 請求項1または2に記載の画像再配置方法であって、
    前記文字領域のX方向およびY方向のヒストグラムを生成し、X方向の背景のヒストグラムの連続する長さの平均が、Y方向の背景のヒストグラムの連続する長さの平均より大きい場合、縦書きであると判別し、それ以外は横書きであると推定する文字方向推定ステップを、さらに行うこと
    を特徴とする画像再配置方法。
  4. 請求項1から3のいずれか一項に記載の画像再配置方法であって、
    隣接する行または列の間隔が、大きい方の行の高さまたは列の幅に対して所定の割合以下であって、隣接する行の高さまたは列の幅の比が所定の割合以下の場合は、高さが小さい方の行または幅が小さい方の列はルビであると判別し、前記ルビを対象とする文字矩形に統合するルビ統合ステップを、さらに行うこと
    を特徴とする画像再配置方法。
  5. 請求項1から4のいずれか一項に記載の画像再配置方法であって、
    連続する文字矩形の余白を、当該文字矩形に配分すること
    を特徴とする画像再配置方法。
  6. 請求項1から5のいずれか一項に記載の画像再配置方法であって、
    前記文書画像から切り出した文字矩形または図表領域のオブジェクトの集合を、所定のオブジェクト数を基準として分割する分割ステップと、
    分割した単位で、前記オブジェクトをディスプレイの表示領域の大きさに応じて生成した再配置領域に再配置する再配置ステップと、
    前記再配置領域を前記ディスプレイの表示領域に応じて分割したリフローページをディスプレイに表示する表示ステップと、を行うこと
    を特徴とする画像再配置方法。
  7. 画像再配置システムであって、
    読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出手段と、
    前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定手段と、
    前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得手段と、を備えること
    を特徴とする画像再配置システム。
  8. コンピュータが実行する画像再配置プログラムであって、
    前記コンピュータに、
    読み込んだ文書画像から、複数の文字矩形を含む文字領域を抽出する領域抽出ステップと、
    前記文字領域を所定数に分割し、各分割領域毎に前景のヒストグラムを生成し、各分割領域で作成されるヒストグラムの位置のずれを用いて、画像の傾きを推定する傾き推定ステップと、
    前記傾きの分だけ各文字矩形の位置をずらして、前記文字領域のヒストグラムを生成し、前記ヒストグラムの幅の行領域または列領域を抽出し、当該行領域または列領域に含まれる文字矩形の高さまたは幅を、前記行領域の高さまたは前記列領域の幅に合わせる行・列取得ステップと
    を実行させるための画像再配置プログラム。
JP2012231467A 2012-10-19 2012-10-19 画像再配置方法、画像再配置システム、および画像再配置プログラム Active JP6030915B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012231467A JP6030915B2 (ja) 2012-10-19 2012-10-19 画像再配置方法、画像再配置システム、および画像再配置プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012231467A JP6030915B2 (ja) 2012-10-19 2012-10-19 画像再配置方法、画像再配置システム、および画像再配置プログラム

Publications (2)

Publication Number Publication Date
JP2014085689A true JP2014085689A (ja) 2014-05-12
JP6030915B2 JP6030915B2 (ja) 2016-11-24

Family

ID=50788728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012231467A Active JP6030915B2 (ja) 2012-10-19 2012-10-19 画像再配置方法、画像再配置システム、および画像再配置プログラム

Country Status (1)

Country Link
JP (1) JP6030915B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108460384A (zh) * 2018-02-08 2018-08-28 南京晓庄学院 一种脱机手写体文本的字符切分方法
JP2018142286A (ja) * 2017-02-28 2018-09-13 シナノケンシ株式会社 電子図書製作用プログラム

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121658A (ja) * 1993-10-20 1995-05-12 Nippon Digital Kenkyusho:Kk 文字列検出方式
JPH08101886A (ja) * 1994-09-30 1996-04-16 Oki Electric Ind Co Ltd 文字認識装置
JPH08235307A (ja) * 1995-02-27 1996-09-13 Nec Corp 文字列検出装置
JPH1125213A (ja) * 1997-07-07 1999-01-29 Oki Electric Ind Co Ltd 行方向判定方法および行方向判定装置
JP2000295461A (ja) * 1999-04-09 2000-10-20 Sharp Corp 画像合成方法およびカラーファクシミリ装置
JP2003288334A (ja) * 2002-03-28 2003-10-10 Toshiba Corp 文書処理装置及び文書処理方法
JP2009531789A (ja) * 2006-03-29 2009-09-03 アマゾン・テクノロジーズ・インコーポレイテツド 種々のサイズのディスプレイ上にレンダリングするための画像に基づくリフロー可能なファイルの生成
JP2009289107A (ja) * 2008-05-30 2009-12-10 Toshiba Corp 情報処理装置
JP2012068858A (ja) * 2010-09-22 2012-04-05 Sharp Corp ページ数決定装置、ページ数決定方法、ページ数決定プログラム、及びコンピュータ読み取り可能な記録媒体

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121658A (ja) * 1993-10-20 1995-05-12 Nippon Digital Kenkyusho:Kk 文字列検出方式
JPH08101886A (ja) * 1994-09-30 1996-04-16 Oki Electric Ind Co Ltd 文字認識装置
JPH08235307A (ja) * 1995-02-27 1996-09-13 Nec Corp 文字列検出装置
JPH1125213A (ja) * 1997-07-07 1999-01-29 Oki Electric Ind Co Ltd 行方向判定方法および行方向判定装置
JP2000295461A (ja) * 1999-04-09 2000-10-20 Sharp Corp 画像合成方法およびカラーファクシミリ装置
JP2003288334A (ja) * 2002-03-28 2003-10-10 Toshiba Corp 文書処理装置及び文書処理方法
JP2009531789A (ja) * 2006-03-29 2009-09-03 アマゾン・テクノロジーズ・インコーポレイテツド 種々のサイズのディスプレイ上にレンダリングするための画像に基づくリフロー可能なファイルの生成
JP2009289107A (ja) * 2008-05-30 2009-12-10 Toshiba Corp 情報処理装置
JP2012068858A (ja) * 2010-09-22 2012-04-05 Sharp Corp ページ数決定装置、ページ数決定方法、ページ数決定プログラム、及びコンピュータ読み取り可能な記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018142286A (ja) * 2017-02-28 2018-09-13 シナノケンシ株式会社 電子図書製作用プログラム
CN108460384A (zh) * 2018-02-08 2018-08-28 南京晓庄学院 一种脱机手写体文本的字符切分方法
CN108460384B (zh) * 2018-02-08 2024-01-19 南京晓庄学院 一种脱机手写体文本的字符切分方法

Also Published As

Publication number Publication date
JP6030915B2 (ja) 2016-11-24

Similar Documents

Publication Publication Date Title
US9007405B1 (en) Column zoom
KR101334483B1 (ko) 문서를 디지털화하는 장치 및 방법과, 컴퓨터 판독가능 기록 매체
US8515176B1 (en) Identification of text-block frames
CN102289667B (zh) 对经历光学字符识别(ocr)过程的文本文档中出现的错误的用户纠正
EP2669847B1 (en) Document processing apparatus, document processing method and scanner
US8824798B2 (en) Information processing device, computer readable medium storing information processing program, and information processing method
JP5321109B2 (ja) 情報処理装置及び情報処理プログラム
US9734132B1 (en) Alignment and reflow of displayed character images
US8538154B2 (en) Image processing method and image processing apparatus for extracting heading region from image of document
JP2010123002A (ja) 文書画像レイアウト装置
JP2016181057A (ja) 画像処理装置、画像処理方法及び画像処理プログラム
US8526744B2 (en) Document processing apparatus and computer readable medium
JP5950700B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP6030915B2 (ja) 画像再配置方法、画像再配置システム、および画像再配置プログラム
JP5182902B2 (ja) 文書イメージ出力装置
JP2009251872A (ja) 情報処理装置及び情報処理プログラム
US10609249B2 (en) Scanner and scanning control program which outputs an original image and an extracted image in a single file
JP2008108114A (ja) 文書処理装置および文書処理方法
JP2013020477A (ja) 画像処理装置およびプログラム
JP6322086B2 (ja) 表示制御装置、表示装置、プログラム、記録媒体
JP7241506B2 (ja) 光学式文字認識結果の修正支援装置および修正支援用プログラム
JP5794154B2 (ja) 画像処理プログラム、画像処理方法、及び画像処理装置
JP4518212B2 (ja) 画像処理装置及びプログラム
JP4830763B2 (ja) 画像処理システムおよび画像処理プログラム
US8643651B2 (en) Type-setting method for a text image file

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160822

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: 20161004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161021

R150 Certificate of patent or registration of utility model

Ref document number: 6030915

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250