DEIM Forum 2019 E8-5

グラフの自動生成のための表の構造解析の一手法
山田

凌也†

太田

学†

高須

淳宏††

† 岡山大学大学院自然科学研究科 〒 700–8530 岡山市北区津島中 3–1–1†† 国立情報学研究所 〒 101—8430 東京都千代田区一ツ橋 2–1–2
E-mail: †yamada@de.cs.okayama-u.ac.jp, ohta@cs.okayama-u.ac.jp, ††takasu@nii.ac.jp
あらまし

学術論文において表は実験結果を表すのに頻繁に用いられる．しかし，表は正確な数値を読み解くには適しているが，数値の比較や変化を視覚的に読み取るには不向きである．そこで本稿では，グラフを自動生成するためにまず表の構造を解析する．表の構造解析では，表中の罫線は非常に重要であるが，罫線は必ずしも引かれているとは限らない．そこで本稿では引かれていない罫線を補完した上で表の構造を解析する手法を提案して評価する．
キーワード 表構造解析，グラフ自動生成，XML
提供されたデータセットの表の構造解析を行い，同コンペティ

1 はじめに近年，CiNii 1 や Google Scholar 2 等の学術論文データベースの充実により，膨大な数の論文を手軽に入手できるようになった．それゆえ，入手した論文の内容や実験結果を効率的に把握する必要があり，学術論文の自動要約やキーワード抽出などの研究が盛んに行われている．とりわけ，実験結果などの情報は表やグラフにまとめられている．
そのため，Kamola ら [1] は情報抽出の前処理として論文構成
要素の分析，分類を行った．論文構成要素の中でも，表は効率的かつ手軽に数値情報を示すことができ，Babatundera ら [2]

ションで提案されたセル間の隣接関係に基づく評価指標によって解析結果を評価した．
本稿の構成は次の通りである．まず，2 節で表の構造解析と論文中の情報の可視化に関する研究を紹介する．3 節では我々の提案する表の構造解析について説明する．次に 4 節で表の構
造解析とグラフの自動生成，それぞれについて評価実験を行い，実験結果について考察する．最後に 5 節でまとめる．

2 関連研究2. 1 表構造解析

や Weng ら [3] は学術論文から表を自動抽出する手法を提案しKieninger ら は 表 構 造 解 析 の た め に T-Recs [6] とた．また，実験結果を表現する方法としてグラフもしばしば用

T-Recs++ [7] というシステムを開発した．T-Recs は単語のいられる．グラフは表に比べて，数値の比較や変化を視覚的に

周囲の矩形領域を入力とし，表中のセルにあたるテキストブ

把握するのに適している．

ロックを出力するシステムである．彼らは単語をブロックにまそのため，我々は論文中の表の構造を解析し，それをグラフ

とめ列と見なし，この列ブロックを行へと分割，セルとするこ

へと自動変換する手法を提案している．表の罫線の引き方やとで表構造解析を行った．T-Recs++は T-Recs を拡張したシセルの構成など表の構造は著者によって異なる．特に，罫線はステムであり，T-Recs では適切に解析できなかった注文書や表の構造解析にあたって非常に重要な情報となるが，罫線を引請求書などの文章を対象としている．このシステムは T-Recs

くのか，それとも罫線でなくセルの配置によって行，列を表現の表構造解析をベースとして，さらに表の典型的な特徴を用いするのかはその論文の著者に任されている．そのため，我々はることによって表を解析する．T-Recs と比較して行の検出に罫線を用いずセルの配置と隣接するトークンの重心などからおいて再現率 0.96，適合率 0.86 であり，列の検出においては表の構造を解析，グラフ化する方法を提案し，102 件の表のう再現率 0.97，適合率 0.91 となった．

ち 97 件の表をグラフ化することに成功した [4]．しかし，空白Nurminen [5] は PDF 中の表検出とその構造解析のアルゴリのセルが存在する表に対応しておらず，セル間の距離が小さい

ズムを提案した．Nurminen は，エッジと呼ばれる補助線を表

セルを結合してしまうなどの問題があった．そこで，本稿で論中に引き，それを基にヘッダを発見することでヘッダとそれ以

文 PDF から罫線を抽出するとともに，Nurminen の提案した外に分割した．その後，それらの構造を別々に解析した．まず，

エッジ [5] を利用して書かれていない罫線を補完することによっ

Poppler PDF rending library 4 を利用し，PDF 中のテキストて表の構造を解析，グラフを自動生成する方法を提案する．実

データをテキストボックスとして抽出し，PDF 画像に対して験では International Conference on Document Analysis and

画像処理的に水平，垂直両方向の罫線を見つける．その後，同

Recognition (ICDAR) 2013 の Table Competition 3 において

一 Y 座標のテキストボックスが同じ行にあるとし，行中でテ
キストボックス間の距離を用いて，テキストボックスのマージ

1：https://scholar.google.co.jp/
2：http://ci.nii.ac.jp/
3：http://www.iapr.org/archives/icdar2013/

4：http://poppler.freedesktop.org/

を繰り返す．続いて，複数の行に対して，その左端，右端，中点が同一垂直線上にあればそれをエッジとして検出する．彼らはこのエッジと交わるような行を “column breaking row” と呼び，ヘッダの候補とした．ヘッダ候補以外については，各行中の空白領域を列の区切りと考えることで列の割り当てを行った．ヘッダ候補に対しては，その中から複数のアルゴリズムの投票によってヘッダを決定した．最後に，決定したヘッダを基に行，列をマージしていくことで最終的な表の構造を決定した．

ICDAR2013 の Table Competition において，彼らのシステム
は再現率が 0.94，適合率が 0.95，F 値が 0.95 となり，参加者
中，最高の結果であった．

Shingrov [8] らは単語の矩形領域を用い，表構造を再構成する手法を提案した．彼らの手法は 3 段階に分けられる．最初に，前処理として PDF からテキストチャンクと罫線を生成する．
次に，テキストチャンクをテキストブロックへと結合し，最後にテキストブロックを行，列に分割していくことでセルを構築
し，表の構造を解析した．用いるパラメータと分割手法を変えることによって，2 つのシステムを作った．彼らも評価のために

図 1: 論文 [12] の表と XML ファイルの一部

ICDAR2013 の Table Competition で提供されたデータセット
を用い，再現率が 0.92，適合率が 0.95，F 値が 0.94 となった．

本稿では，人手で論文 XML 中の表の範囲を求め，その範囲内

2. 2 論文中の情報の可視化の単語を表中のトークンとして抽出することによって表を抽出

平井ら [9], [10] は論文中の実験に関連のある論文構成要素を実験情報と呼び，これらの情報を論文から自動抽出した．彼らは論文 PDF を XML ファイルに変換し，XML ファイルから論文構
成要素を抽出した．その後ルールと Conditonal Random Feild(CRF) [11] によってそれぞれ実験情報を抽出した．NTCIR9 5の Spoken Document タスクの論文 10 件に対して評価実験を行い，論文構成要素に関するタグ付与実験は再現率，適合率，F値がいずれも 0.94 程度となった．実験情報抽出実験は, ルール
では再現率が 0.83，適合率が 0.73，F 値が 0.78 となり，CRF
では再現率が 0.66，適合率が 0.87，F 値が 0.74 となった．また
論文構成要素から表を抽出し，1 行ずつ処理することによってグラフを自動生成した．実験では NTCIR9 の Spoken Document
タスクの論文の実験情報の 27 件の表のグラフ化を試み，そのうち 18 件の表のグラフ化に成功した．

3 表構造解析する．しかし，この XML ファイル中には罫線の情報は含まれていないため，pdfminer.six 7 を利用して別途論文から罫線を抽出する．pdfminer.six は PDF から様々な情報を取り出すためのツールである PDFMiner を Python2，Python3 双方で使えるように拡張したものであり，罫線以外にも本文のフォントや図なども抽出できる．pdfminer.six で罫線を抽出できなかった
場合は論文画像をグレースケールへと変換し，opencv-python 8を用いて直線を検出し，それを罫線とする．
本稿では抽出した罫線に加えて，補助罫線を推定したうえでそれらに基づいて表の構造を解析する手法を提案する．まずXML ファイル中のトークンをマージしていくことでセルを生成する．セパレータがトークン間にあるかどうかを基準にマージするため，エッジを利用することで補助罫線を推定する．セルの生成後，そのセルが何行，何列目であるかの範囲を決定する．最後に，セルの過分割やその範囲の誤りが存在するため，ルールを用いてセルを結合，拡張し，表の構造を解析する．
本稿では表の構造解析にあたって，列の名前を表している行

本稿では，隣接するセルを分割する線分のうち実際に書かれを「ヘッダ行」，行の名前を表してる列を「ヘッダ列」，数値をているものを罫線，実際には書かれていないものを補助罫線と「データ」と呼ぶ．図 1 に論文 PDF を pdf2xml によって変換呼ぶ．また，これらをまとめてセパレータと呼ぶ．また，セルした XML ファイル中の表に対応する部分の一部を示す．図 1

はセパレータによって囲まれいていなければならないと定める．

中の表では，赤色で囲んでいる部分がヘッダ行，青色で囲んで学術論文から表を抽出するために，まず pdf2xml 6 を用いて論いる部分がヘッダ列である．

文 PDF を XML ファイルへと変換する．この XML ファイルに

また，図 2 のようにヘッダ行やヘッダ列にのみ罫線が引かれは，各単語がトークンとしてページの左上から右下に順に並べている表 9 に対応するために，罫線の検出と同時に罫線を延長られており，そのパラメータとして座標，フォント，フォントサ

した直線を補助罫線として追加する．

イズ，単語を囲む矩形領域の高さ，幅などが共に記されている．
7：https://github.com/pdfminer/pdfminer.six
5：http://research.nii.ac.jp/ntcir/ntcir-9/index-ja.html

8：https://opencv.org/

6：https://sourceforge.net/projects/pdf2xml/

9：http://www.tamirhassan.com/html/dataset.html

図 2: ヘッダ行にのみ垂直方向の罫線が引かれている表の例
図 4: 作成したエッジと作成したセルの例

エッジ作成の際には，そのエッジがどのトークンの左端，右端，重心の中点を使って作成されたのかを保持しておく．また，重心の中点を通るエッジはそのエッジを作るトークン上を通らないという制約条件を加え，もしトークン上にあればエッジの位置をそのトークンの近いほうの端へと移動させる．
図 3: 図 1 における “5.680” の矩形領域を拡張した例

続いて，水平方向に隣接するトークンをマージする．マージ
するのは 2 つのトークン間に罫線およびそれらの 2 つのトークンから作られたエッジがなく，トークン間の距離が一文字分以

3. 1 エッジによる補助罫線の推定とセルの生成
まず，トークンをマージしてセルを生成するために，各トー下の隣接する 2 つのトークンである．ただし，以下の条件にあクンに対して，その隣接トークンを検出する．本稿では，各てはまる隣接するトークンは間に罫線が引かれていない限り，トークンの矩形領域を上下左右に拡張し，その範囲中のトークマージする．

ンのうち最も近いところにあるトークンをそのトークンの隣接（ 1 ） 上付き，または下付きのトークンとその前のトークン

トークンとする．図 3 に図 1 の表中のトークン “0.5680” に対（ 2 ） “(” から “)” までのトークン

してその矩形領域を拡張した様子を示す．

（ 3 ） “,”，“:”，“=” とその前後のトークン

赤色の矩形が各トークンの矩形領域を表しており，青，灰，（ 4 ） “(” から始まるトークンとその直前の数値のトークン

黄，緑の範囲が “0.568” の矩形領域を上下左右に拡張した範（ 5 ） “...” から始まるトークンとその直前のトークン囲である．それぞれの範囲内で “0.568，

次に，水平方向にマージされたトークン間の水平方向のエッ“5.123 ，“2.216”，“7.574” が “0.568” の隣接トークンとなる．

ジを作成する．水平方向のエッジはトークンの上端，下端，垂本研究では，セパレータをセルの区切りとして隣接トーク

直方向に隣接する 2 つのトークンの重心の中点の y 座標が揃っンをマージしていくため，罫線に加えて補助罫線を推定する．

ている場所に作成する．この際，トークンの上端の y 座標は小Nurminen [5] は複数の行に対して行の左端，右端，中点のいず

数点以下切り捨て，下端は切り上げ，重心の中点は四捨五入す

れかが同一垂直線上に 4 つ以上あればそこにエッジと呼ばれる

る．水平方向のエッジを作成するためのトークンの最低数は，線を作成した．本稿ではこれを参考に XML ファイル中のトー上方向の拡張領域でなく右方向の拡張領域を用いて列数を求めクンに対してエッジを作成し，推定する補助罫線の候補とする．

ることで，垂直方向のエッジの閾値を求める際と同様に求める．

まず，隣接トークン間の垂直方向のエッジから作成する．垂また，同一セル内で垂直方向に 2 つの数値が並ぶことはないと直方向のエッジは複数のトークンの左端の x 座標が揃っている

仮定し，数値が垂直方向に隣接していればそれらの間にはエッ

場所，右端の x 座標が揃っている場所，隣接する 2 つのトー

ジがあるものとする．垂直方向の隣接するトークンにおいてもクンの重心の中点の x 座標が揃っている場所に作成する．垂直マージする．

に最も近い “5.116

方向のエッジの作成のために，まず表中のトークンの左端，右

水平方向に隣接する場合と同様に，トークン間に罫線かそれ

端，隣接するトークンの重心の中点の x 座標のリストを作成すらから作られたエッジなく，トークン間の距離が一文字以下のる．この際，各トークンの左端の x 座標は小数点以下を切り捨

垂直方向に隣接するトークンをマージする．エッジの閾値の決て，右端では切り上げ，重心の中点では四捨五入したものとす

め方が単純なため，過分割されるセルもあるが，それらのセる．それらのリスト中で値が同じ要素が一定数以上あれば，そルの結合については 3. 3 節で述べる．また，エッジによって過の x 座標を通るようにエッジを作成する．本稿では，垂直方向

分割されているトークンの中には，pdf2xml によってそれらののエッジ作成のためのトークンの最低数を次のように定める．

トークンが同一セル内のものであるとして，順に並べられてい（ 1 ） 各トークンの上方向の拡張領域中から同じ y 座標上にる場合もある．そのようなトークンはエッジが引かれているかあるトークンを取り除く（ 2 ） 領域中に残ったトークン数を求める

どうかに関わらず 1 つのトークンへとマージする．これについ（ 3 ） 各トークンで求めたトークン数のうち，最大のもの，
つまり一番下の行にあるトークンのものを行数としその 6 割 (小数点以下切り捨て) を最低数とする
ここでの行数とは表の行数ではなくテキストの行数を表す．

ても，3. 3 節で例を挙げて説明する．
図 4 に図 1 の表に対して作成したエッジとトークンをマージした結果を示す．
図 4 では，罫線を赤，マージ後のトークンを白色で示している．トークンの左端を通るエッジと上端を通るエッジは青色，

図 5: 整理を行ったエッジと罫線トークンの右端を通るエッジと下端を通るエッジは緑色，隣接する 2 つのトークンの重心の中点を通るエッジは垂直，水平ともにオレンジ色としている．図 1 の表では，垂直方向のエッジ作成の閾値は 4，水平方向のエッジ作成の閾値は 3 となり，それに基づいてエッジを作成した．図 3 のトークンと図 4の表を見比べると，“retrival” と “methods” や “-Compds” と“-Max” がマージされ，一つのトークンとなっていることが分

図 6: 過分割により右端に空白のセルができた表 [14] とその解かる．また “retrival methods” と “DCG1” の間のエッジはオ析結果

レンジ色，つまり隣接トークンの重心の中点を通るエッジであるが，“retrival methods” を囲む矩形領域の右端を通っている．これは，“retrival methods” と “DCG1” の重心の中点が“retrival methods” の内側であったため，“retrival methods”の右端までエッジを移動させたからである．以降では，マージ
後のトークンをセルとして扱う．

3. 2 セルの割り当て
ここでは 3. 1 節で生成したセルを表の行，列に割り当てる方
法について説明する．セルを行，列に割り当てるための前処理

図 7: エッジによってヘッダ行が過分割された表 [15] とその解析結果として，3. 1 節で作成したエッジを整理する．整理のルールは以下の通りである．

続いて，罫線または補助罫線であるセパレータに対して，そ（ 1 ） トークン間にエッジと罫線が混在している場合，罫線

れ自身が左や上から何番目のセパレータかを調べる．最後に，のみを残す（ 2 ） 右端 (下端)，隣接トークンの重心の中点，左端 (上端)各セルに対して上下左右にあるセパレータが何番目のものかをの順に並んでいればそれらを 1 つのエッジにまとめる（ 3 ） エッジ間が 1 文字分以内ならば，1 本にまとめる
また，2 番目のルールにおいて，エッジをまとめる際には，エッジ作成の際に使用したトークンの数を比較し，最も多くのトークンから作られたエッジを残す．トークンの数が同数の場
合には，重心の中点を通るエッジを残す．これらのエッジの長さは他のセルか水平方向の罫線にぶつかるまでとする．これにより，複数行，列にまたがるセル上に罫線が引かれる事を防ぐ．
また，図 4 で作成したエッジに加えて表を囲むセパレータは必ず存在するものとしてエッジを追加する．加えて，隣接する 2
つのトークン間に罫線もエッジもない場合は，その中点に表の端から端までエッジを追加する．図 4 に対して，エッジの整理を行った結果を図 5 に示す．
図 5 では，1 行目のセルと 2 行目のセル間のエッジはその間に罫線があるため罫線のみが残り，エッジは削除されている．
また，2 行目と 3 行目の間には下端，重心の中点，上端を通るエッジが存在したが，重心の中点を通るオレンジ色のエッジに統合されている．図 4 では表の左端にはエッジが引かれていな
いが，表を囲むエッジとして，追加されている．このように整理したエッジを補助罫線として扱う．

調べ，そのセルの行番号と列番号を同定する．

3. 3 セルの結合
3. 2 節において，セルを表中の行，列に割り当てた．しかし，エッジによる過分割などにより，そのままでは行，列が余分に作成される場合がある．図 6，図 7 にセルが過分割される表とそのセパレータを示す．どちらの図も上側が論文中の表，下側が構造を予測した表である．
図 6 の表では，本手法では “# of Correct” と “Answers” の間を通る余分なエッジが引かれる．しかし，pdf2xml によって変換された XML ファイル中において，これらのトークンは “#”，“of”，“Correct”，“Answers” の順で並んでおり，“# of Correct” と “Answers” の重心の x 座標は一致している．pdf2xml
は基本的に行ごとに単語をトークンへと変換するが，同一セル中のトークンであれば，このように順に並べて変換する場合もある．そのためこのような場合には，罫線が引かれていない限
り，マージを行いセルを生成する．
図 6 中の上下の表を見比べると，“#” と “of Items” の間に，補助罫線が引かれている他，“0.65” や “0.33” の右端を通る補助罫線が引かれている．予測した表では垂直方向のセパレータ

の数が 7 本，水平方向のセパレータの数が 8 本のため，この表

図 8 において “macro ave.” は 4 列目から 8 列目にまたがるは本来 7 行，4 列の表であるが 7 行，6 列の表と解析される．

セルである．しかし，その右にエッジを引くため，その範囲が誤った予測を修正するためにセルを結合する．

4 列目から 6 列目となっている．

本稿では，含まれるセルが全く同じ行，列は 1 つに結合する

また，セルを拡張するにあたって，そのセルが何揃えなのかこととする．また，この時，空白のセルは無視する．例えば，検出する．垂直方向の揃えは，セルの端が垂直方向に隣接する

図 6 では表を囲むエッジとして追加された “Accurate Rate” のセル間で一致するかどうかで判定する．左端のみ一致すれば左右端を通る補助罫線と “0.65” や “0.33” の右端を通る補助罫線

揃え，右端のみ一致すれば右揃え，それ以外は中央揃えとする．

が存在するため，“Accurate Rate” は 5 列目と 6 列目の 2 列に各セルを以下のル―ルに従って空白のセルを埋めるように拡

またがるセルとして解析される．また，6 列目では “Accurate

張する．拡張は右下のセルから左上のセルへ順に行う．各セル

Rate” の下には中身のあるセルは存在しないため，空白のセルについて，まず水平方向に拡張し，その後，垂直方向に拡張すが並んでいると解析する．つまり，5 列目のセルは “Accurate

る．ただし，罫線を超えたり，空白以外のセルを上書きする場

Rate”，“0.65”，“0.33”· · · となり，6 列目のセルは “Accurate

合はその手前で拡張をやめる．

Rate”，空白のセル，空白のセル · · · となる．空白のセルを無視すると，この 2 つの列に含まれるセルは同じであるといえる．
ゆえにこの 2 つの列を結合する．
次に，ヘッダ行，ヘッダ列とデータ部分それぞれに着目してセルを結合する．ヘッダ行とヘッダ列の判定は，それぞれ最上•右揃えの場合，ヘッダ行中の拡張するセルと同一列のセ•ルの左端まで拡張
左揃えの場合，ヘッダ行中の拡張するとセルと同一列の•セルの右端まで拡張
中央揃えの場合，そのセルの重心がその下の行の同範囲

段の行と最も左の列から探して初めて数値が出てきた行，列のにあるセルの重心と一致するように拡張
左揃え，右揃えにおいては拡張するセルがヘッダ行，ヘッダ

前までとする．図 6 では，1 行目がヘッダ行，1 列目がヘッダ

列のセルの場合，より上のヘッダ行，もしくは左のヘッダ列の列となる．

セルを用いて拡張する．

データ部分とは各行，列内のセルのうち，それぞれヘッダ

例えば，“macro ave” の左端と右端は垂直方向に隣接する列，ヘッダ行以外のセルの事である．例えば，“# of Correct“MAP” の左端，右端のどちらとも一致しないため中央揃えで

Answers” から始まる 4 列目では，ヘッダ行に当たる “# ofある．拡張前，このセルは 4 列目から 6 列目にまたがるセル

Correct Answers” の下のセルが全てデータ部分である．

であるため，同範囲のセルである二行目の “Actual F.” からまず，データに着目したセルの結合では，データ部分が同一“MAP” までのセルの重心と “macro ave” の重心を比較する．

な行，列は 1 つの行，列と考える．図 6 の 2 列目と 3 列目の“macro ave” の重心は “Actual F.” から “MAP” までの重心よ

セルは，それぞれ 2 列目が “# of”，“26”，“3”· · · ，3 列目がり右にずれているため，重心を一致させるためにその範囲を右“Items”，“26”，“3”· · · となる．これらの列のヘッダ行は “#へと拡張する．これを重心が一致するまで繰り返す．結果としof” と “Items” であり異なるが，それ以外のデータ部分はすべて “macro ave” は “MTWV” まで拡張されところで重心が一て同じセルである．データ部分が同じ行，列は同じ内容に対す

致し，拡張が終了する．これによって，“macro ave” は 4 列目

るデータを表していると考えられるため，これらを結合する．
ヘッダ行，ヘッダ列に着目したセルの結合においても，ヘッから 8 列目にまたがるセルとなり，適切に解析できる．図 9 に
図 8 の表に対してセルの拡張を行った結果を示す．

ダ行，ヘッダ列が同一の行，列を 1 つの行，列と考え, 結合す

続いて，左揃えのセルの拡張に対して拡張を考える表の例とる．また，ヘッダ行，ヘッダ列内で共通するセルがあれば，そ

そのセパレータを図 10 に示す．この表において赤線で囲んだ

れらのヘッダ行，ヘッダ列は 1 つの行，列とみなす．図 7 はこ

“V ↓” はその下のセルである “0.012” と左端のみが一致しての様な表の例である．ヘッダ行中で，“Total” と “Score” の間いるため，左揃えである．また，“V ↓” の右に隣接するセルはにエッジが引かれ別の行と判定されているため，ヘッダ行は 2

空白であるため，このセルは最大で右に一列だけ拡張すること行目まで，ヘッダ列は 1 列目だけである．ヘッダ行を見ると，1ができる．左揃えのため，上のルールに従い，ヘッダ行中の 4

行目は “Priority”，“Total”，“# of”，“# of”，“Accuracy” で列目のセルの右端まで拡張する．しかし，“V ↓” はヘッダ行にあり，2 行目は “Priority”，“Score”，“Correct”，“Incorrect”，

属するセルであるため，拡張にはそれよりも上に位置するヘッ“Accuracy” である．
この 2 行では，“Priority” と “Accuracy” は 2 行にまたがる
セルであり，2 行で共通しているセルといえる．そこで，この2 行を結合し，1 つの行と見なす．
3. 4 セルの拡張
エッジが多く引かれたために複数行，列にまたがるセルはそ

ダ行のセルである “Squared Posterior Bias” を用いる．結果として，“V ↓” は拡張しない．
ここで述べたルールは水平方向にセルを拡張するためのもの
であるが，垂直方向へのセルの拡張も以下に従い同様に行う．

•

下揃えの場合，ヘッダ列中の拡張するセルと同一行のセ•ルの下端まで拡張
上揃えの場合，ヘッダ列中の拡張するセルと同一行のセ•ルの上端まで拡張
中央揃えの場合，そのセルの重心が右隣の列の同範囲のの範囲が適切に割り当られない場合がある．図 8 に複数列にまたがるセルに適切な範囲を割り当てられない表の一部とそのセパレータを示す．

セルの重心と一致するように拡張

図 8: 複数列にまたがるセルの範囲が適切に推定できない表 [13] の例

図 9: 中央揃えのセルの拡張を行った表の例

図 10: 左揃えのセルの拡張を考える表の例 [16] とそのセパレー

図 11: 正解データの表と表構造解析を誤った表の比較 [17]タ
データセットを用いて評価実験を行う．このデータセットは，
垂直方向の揃えは，セルの上端と下端が水平方向に隣接するセル間で一致するかどうかで判断する．上端のみ一致すれば上揃え，下端のみ一致すれば下揃え，それ以外は中央揃えとする．
そのセルの上，または左にセルが存在しない場合は，全ての空
白のセルを埋めるようにセルを拡張する．
また，ある空白に対して周囲のセルからの拡張が複数行える
場合，我々が [4] で定義した, セルの拡張コストを使い，そのコ
ストが小さくなる方向にセルを拡張する．

4 評価実験

EU 政府と米国政府が発行したいくつかの分野の文章 PDF から以下の条件にあう表を収集したものである．

•

明確な矩形領域とセル構造を持っている•

上付き，下付き文字が含まれていない•

表の大きさが 1 ページ以内である

このデータセットには EU 政府の 27 文章の 76 の表，米国政府の 40 文章の 80 の表，計 67 の文章，156 の表が含まれている．

4. 1. 2 実 験 結 果
ICDAR2013 Table Competition を共催した Göbel らは，ICDAR2013 Table Competition のデータセットに対して，正解

3 節で述べた表構造解析と解析した表のグラフ化についてそ

データセットとそれを利用した評価ツールを提供した．Göbel

れぞれ評価実験を行う．解析した表のグラフ生成には [4] で提らは，表中のセルの隣接関係に着目して，表構造を評価した．

案したグラフ生成手法を用いた．このグラフ生成手法は，グラ

まず，表中の各セルに対して，そのテキストと上下左右に隣接

フ化対象判定，凡例とラベルの判定，グラフの種類の判定，スするセルを記録した隣接関係リストを作成した．

ケール調整，グラフ生成の順で解析した表をグラフへと変換

図 11 に，正解の表構造と解析を誤った表構造を示す．図 11

するものである．グラフの生成は Google Chart API を用い，の上が正解の表構造，下が解析を誤った表構造である．この図

Google Chrome で表示した．

において，黒い四角はセルの正しい隣接関係を表している．正解データの隣接関係リストと比較し，セルのテキスト，隣接す

4. 1 表構造解析の実験るセルが一致すれば正しい隣接関係であるとし，それ以外は誤4. 1. 1 データセット

りとする．ただし，空白のセルに対しては隣接関係を作成しな

表構造解析においては，ICDAR2013 Table Competition 3 のい．図 11 の下の表では，“Increase” の右や下のセルが空白のため，黒い四角がない．

3：http://www.iapr.org/archives/icdar2013/

これらを用いて次に示す式により再現率と適合率を算出し，

表 1: 表構造解析結果
データセット 表の数 Recall

EU

Precision F-Score

76

0.954

0.962

0.957

US

80

0.867

0.869

0.867

Total

156

0.910

0.916

0.912

図 12: 誤ったエッジを引いた表 [21]表 2: ICDAR2013 データセットにおける表構造解析結果
参加者

Recall Precision F-Score

Nurminen [5] (1st ranked)

0.941

0.952

0.946

提案手法

0.910

0.916

0.912

2nd ranked

0.640

0.614

0.627

3rd ranked

0.481

0.570

0.522

表 3: グラフの自動生成結果
グラフ化対象の表の数 グラフ化に成功した表の数

112(102)

可視化率

108(97) 0.964(0.95)

これを評価指標とする．

Recall =解析結果の正しい隣接関係数，
正解データのすべての隣接関係数

Precision =解析結果の正しい隣接関係数，
解析結果のすべての隣接関係数

表 1 に EU，米国それぞれのデータセットにおける表構造解
析の結果と 2 つのデータセット全体での表構造解析結果を示す．
また，ICDAR2013 の参加者の結果を表 2 に示す．本稿の表
構造解析手法の順位は 2 位相当であった．

4. 2 グラフ生成実験
4. 2. 1 データセット

図 13: 1 つのセルのみから構成される行が存在する表

4. 3 考察

ICDAR2013 におけるトップである Nurminen らの結果に劣ったのは主に次の 3 種類の原因による表構造解析の失敗によるものであると考える．

•

セルの端や重心の中点が揃ってしまい，本来引かれるべ•きでないエッジを引かれている
セル 1 つだけから構成される行が存在する•

セルの拡張の失敗

まず，誤ったエッジを引いた例を図 12 に示す．
図 12 では，1 行目の “Method” と “Used” の重心の中点

NTCIR9 論文集の IR for Spoken Documents (Spoken Doc)と，2 行目以下の “MINRES” から始まる列と “WLS” から始タスク [18] より 29 件，NTCIR12 論文集の real-world com-

まる列のセルの重心の中点が揃っている．オレンジ色のエッ

plex Question Answering (QA Lab-2) タスク [19] の論文から

ジは “Method” の右端を通っているがこれは，重心の中点が32 件，Spoken Query and Spoken Document retrieval (Spo-“Method” 上を通るため，エッジが移動したためである．このkenQuery & Doc-2) タスク [20] の論文から 17 件，Journal of

エッジにより “Method Used” が分割されるため，解析に失敗

Machine Learning Research Vol.18 12 より 57 件，計 135 件のした．このように重心の中点以外にも左端や右端が揃っている

実験情報に関する表をグラフ生成に使用する．そのうち，数値ために，引かれるべきでないエッジを引いてしまい，表の構造のない表を除くなどして [4] グラフ化対象となったのは，110 件

解析に失敗した表が存在した．

であった．

続いて，図 13 のようにセル 1 つのみから構成される行が存

4. 2. 2 実 験 結 果

在する表があった．省略しているが，“Actual” が属する行や評価指標として，次に示す可視化率を定義する．

“Projected” が属する行にはこのセル以外のセルが存在しない．

可視化率 =

グラフ化に成功した表の数
グラフ化対象の表の数

このように 1 つのセルのみから構成される行はそれ以降のデータを分類するのに用いられることが多い．例えばこの表は各年

表 3 にグラフ自動生成の結果を示す．表中の括弧内の数字の小中学校の入学人数をまとめたものであるが，“Actual” 以降

は [4] における結果である．グラフ化に失敗した 3 件の表に関では実際の入学人数がまとめられており，“Projected” 以降はしては，すべてグラフの構造解析に失敗したものである．グラ

予定人数がまとめられている．これらのセルのトークンは XML

フ化の成功判定は筆者が行った．

ファイル中ではその下の行の先頭，つまりどちらも “1996” のトークンの直前に位置している．3. 3 節で述べたように，XML
ファイル中で並んでおり，左揃え，右揃え，中央揃えのいずれ

12：http://www.jmlr.org/

かとなっていれば同一のセルと判定し，マージを行う．そのた

[3]

[4]

図 14: セルの拡張に失敗する表

め，これらのトークンはマージされてしまい，表の構造解析に失敗する．この解決のためには，セル 1 つのみから構成される[5]

行を別に処理することが必要である．
最後にセルの拡張の失敗である．図 14 にセルの拡張が失敗[6]する表の例を示す．1 行目の “Year” は 1 列目から 11 列目にまたがるセルであるが，セルの結合後時点ではその範囲は 6 列目のみである．“Year” の左右のセルが空白な上，中央揃えのた[7]

めそれ以下のセルの重心と一致するようにセルを拡張していく．
しかし，“Year” はすでに “2002” の重心と一致しているため，
これ以上拡張が行われない．これの解決には，現在の重心に基[8]づく拡張方法だけでなく，罫線情報なども利用した拡張方法の検討が必要である．

[9]

5 おわりに[10]

本稿では，学術論文の表からグラフを自動生成するための，表構造解析手法を提案した．まず，論文 PDF を pdf2xml を用[11]

いて，XML ファイルへと変換することに加え，PDFMiner.six
によって論文中の罫線を抽出した．抽出した罫線に加えて，エッジと呼ばれる線分を作成し，それを利用して表に引かれていな[12]

い罫線を推測することで表の構造解析を行った．ICDAR2013の Table Competition において提供された 156 の表に対して[13]

表の構造解析を行い，再現率，適合率，F 値がそれぞれ 0.910，

0.916，0.912 となった．これは，ICDAR2013 の参加者のトップの結果に迫るものであった．また，グラフの生成においては，[14]

構造解析した表に対して，Google Chart API を用いてグラフを生成した．グラフの生成については可視化率を定義し評価を[15]行った．実験では 112 件の表からグラフ生成を試み，[4] の結果
より 1 ポイント向上し，96.4%のグラフ化に成功した．

[16]

今後の課題として，表構造解析に失敗した表への対応が挙げられる．特に特殊な形式の表に対する処理や重心だけでなく罫[17]

線情報も利用したセル拡張方法の実装したい．

謝

辞

[18]

本研究の一部は，科学研究費補助金基盤研究 (C)(課題番号18K11989) および科学研究費補助金基盤研究 (B)(課題番号[19]

15H02789) の援助による．ここに記して深謝する．
[20]

文

献

[1] G. Kamola, et al., “Image-based Logical Document Structure Recognition”, Pattern Anal. Appl., Vol. 18，No. 3,pp.
651–655, 2015.
[2] F. F. Babatunde, B. A. Ojokoh, S. A. Oluwadare, “Automatic Table Recognition and Extraction from Heteroge-[21]

neous Documents”, Journal of Computer and Communications, Vol. 3, pp. 100–110, 2015.
Y. Wang, I. T. Phillips, R. M. Haralick, “Table structure understanding and its performance evaluation”, Pattern Recognition, Vol. 37, No. 7, pp. 1479–1497, 2004.
R. Yamada, M. Ohta, A. Takasu, “An Automatic Graph
Generation Method for Scholarly Papers Based on Table
Structure Analysis”, In Proceedings of the 10th International Conference on Management of Digital EcoSystems(MEDES 18), pp. 25-28, 2018.
A. Nurminen, Algorithmic extraction of data in tables in
PDF documents, Master’s thesis, Tampere University ofTechnology, Tampere, Finland, 2013.
T. G. Kieninger, “Table Structure Recognition Based On
Robust Block Segmentation”, Proceedings of SPIE - The
International Society for Optical Engineering, Vol. 3305, pp.
22–32, 1998.
T. G. Kieninger, A. Dengel, “Applying the T-Recs table
recognition system to the business letter domain”, Proceedings of Sixth International Conference on Document Analysis and Recognition, pp. 518–522, 2001.
A. Shigarov, A. Mikhailov, A. Altaev, “Configurable Table Structure Recognition in Untagged PDF Documents”,
Proceedings of the 2016 ACM Symposium on Document
Engineering(DocEng ’16), pp.119–122, 2016.
平井久貴，新妻弘崇，太田学，高須淳宏, “学術論文からの実験情報抽出とその可視化”, 情報処理学会研究報告， Vol. 162， No.
21， pp. 1-7， 2015．
平井久貴, “学術論文からの実験情報抽出とその可視化に関する研究”， 修士論文, 岡山大学大学院自然科学研究科電子情報シス
テム工学専攻， 2016．
J. D. Laﬀerty, A. McCallum, F. C. N. Pereira, “Conditional
Random Fields: Probabilistic Models for Segmenting andLabeling Sequence Data”, pp. 282–289, 2001.
M. Kobayashi, et al.，“NUL System at QA Lab-2 Task”,
Proceedings of the 12th NTCIR
Workshop Meeting, pp.
413–420, 2016.
N. Sawada, H. Nishizaki,“Evaluation of DNN-based
Phoneme Estimation Approach on the NTCIR-12 Spoken
Query & Doc-2 SQ-STD Subtask”, Proceedings of the 12th
NTCIR Workshop Meeting, pp. 211–216, 2016.
T. Chang, Y. Tsai, “ASEE: An Automated Question Answering System for World History Exams”, Proceedings ofthe 12th NTCIR Workshop Meeting, pp. 445–450, 2016.
D. Dua, et al., “CMUQA: Multiple-Choice Question Answering at NTCIR-12 QA Lab-2 Task”, Proceedings of the
12th NTCIR Workshop Meeting. pp. 451–455, 2016.
D. Durante, N. Mukherjee, R. C. Steorts, “Bayesian Learning of Dynamic Multilayer Networks”, Journal of Machine
Learning Research, Vol. 18, pp. 1414–1442, 2016.
M. Göbel, et al., “A Methodology for Evaluating Algorithms
for Table Understanding in PDF Documents”, Proceedingsof the 2012 ACM Symposium on Document Engineering,pp. 45–48, 2012.
T. Akiba, et al., “Overview of the IR for Spoken Documents
Task in NTCIR-9 Workshop”, Proceedings of the 9th NTCIR Workshop Meeting, pp. 223–235, 2011.
H. Shibuk, et al., “Overview of the NTCIR-12 QA Lab-2
Task ”, Proceedings of the 12th NTCIR Workshop Meeting. pp. 392–708, 2016.
T. Akiba, H. Nishizak, H. Nanjo, G. J. F. Jones, “Overview
of the NTCIR-12 SpokenQuery&Doc-2 Task”, Proceedingsof the 12th NTCIR Workshop Meeting. pp. 167–179, 2016.
T. Kaneko, T. Takigami, T. Akiba, “STD based on Hough
Transform and SDR using STD results: Experiments at
NTCIR-9 SpokenDoc”, Proceedings of NTCIR-9 Workshop
Meeting, pp. 264–270, 2011.