# 論文のPDFデータからのBIF情報自動抽出に向けたツールの検討(第二弾) ## 1.目的 BIFに関わる情報を論文のデータから自動抽出するツールの開発を目指す。具体的には、論文中に記載されている図や表を主情報とし、それらの認識問題を解くということを通じて、BIFに関連する情報を取り出すことを目指す。 ## 2.ツールを構成する要素について 前章で述べたツールにおいて想定される全体的なフローは以下の通りである。 ```mermaid graph TD 論文データを準備する --> 図Figure.や表Tabel.を抜き出す 図Figure.や表Tabel.を抜き出す --> 図の認識を行い回路のグラフ構造を獲得する 図Figure.や表Tabel.を抜き出す  --> 表に記載されている単語情報を取り出す 表に記載されている単語情報を取り出す  --> その単語を補足するような情報を論文内から抽出する 図の認識を行い回路のグラフ構造を獲得する --> sCID及びrCIDの候補の獲得 その単語を補足するような情報を論文内から抽出する  --> Process?Function?の候補の獲得 ``` 特に現時点での優先順位の高い部分としては、下記のフローについてのデータの準備、技術の選定、実験などを行なっていく ```mermaid graph TD 図の認識を行い回路のグラフ構造を獲得する --> sCID及びrCIDの候補の獲得 ``` 次章以降で各作業で想定される使用技術について述べる。 ## 2.1 論文データを準備する 論文データはPDFであることを想定する。1980年代など古い論文のPDF形式の場合、後述するライブラリでは図や表の情報が抜き出せない場合があり得るが、その対応については今後の検討課題とする。 ## 2.2 図Figure.や表Table.を抜き出す 今回のツール中では、PDFFigure2.0、PyMyPDF、またはLayoutParserを利用した抽出を考えている。各種ツールの概要は以下に述べる。 ### 2.2.1 PDFFigure2.0 [PDFFigure2.0](https://ai2-website.s3.amazonaws.com/publications/pdf2.0.pdf)では論文中のFigureとその説明文、Tableを抜き出すためのライブラリとして開発されている。 ![](https://i.imgur.com/6HPuTu1.jpg) 参考) PDFFigure2.0で実際に抽出される情報を可視化したもの、画像はPDFFigureの[原文](https://ai2-website.s3.amazonaws.com/publications/pdf2.0.pdf)より引用 ### 2.2.2 PyMyPDF [PyMyPDF](https://pymupdf.readthedocs.io/en/latest/)では、PDFファイルを操作する各種ライブラリが充実していて、[How to Extract Images: PDF Documents](https://pymupdf.readthedocs.io/en/latest/recipes-images.html#how-to-extract-images-pdf-documents)あたりの情報を利用するとPDF中からの画像情報が抽出できると考えられる。 ### 2.2.3 LayoutParser [LayoutParser](https://github.com/Layout-Parser/layout-parser)は論文に限らずドキュメントから図や表、文章などの各要素を分けて抽出することができるライブラリで、PDFに限定したPDFFigure2.0やPyMyPDFに比べると、論文以外のフォーマットの文書にも適用できることから、PDFデータがなく、本文がWeb上に記載されている稀有なケースの論文にも適用できるメリットがある。 上記の3つのツールを試しつつ、後述する別の機能との連携を考えて利用するライブラリを選択する。 ## 2.3 図の認識を行い回路のグラフ構造を獲得する ### 2.3.1 課題 いくつかの図例を元に回路からの接続関係を抽出する時の課題を挙げる。 下記の図では、接続関係を出す上でシンプルな構造をしているが、それぞれ矢印の色や形に意味があるような構造を取っている。この場合、sCIDとrCIDを取り出す場合は ``` Sub.Nigra -> GO Sub.Nigra -> NO-GO Cortex -> Striatum GO -> Internal NO-GO -> External Internal -> Thalamus External -> Sub. Th. N. Sub. Th. N. -> Internal ``` となるが、InternalやGOなどの単語の意味付けはこの図周辺の文章から持ってこなければならない。 ![](https://i.imgur.com/cfs1vWB.png) http://charlesfrye.github.io/FoundationalNeuroscience//14/ より引用 下記の図では、同様に接続関係を出す上でシンプルな構造ではあるが、Direct pathやHyper-direct pathなど、同じ矢印ても接続されている部位によって意味が異なる場合がある。(この場合、どのような情報をやりとりしているか、についての情報を抜き出すことが難しい)sCIDとrCIDの一部を記述すると ``` Thal -> Str PN -> Cer Cer -> Thal PPN -> Cer ... ``` となるが、それぞれのI/Oがわかるだけではなく、どのような情報がやりとりされているかを記述する場合には、図の中にある矢印の形状や、近傍の単語情報も加味する必要が出てくる。 ![](https://i.imgur.com/3Fb55Zi.png) https://www.nature.com/articles/npjparkd201625 より引用 語句が略称でない場合もある。下図の右下はBIF状ではSNRに相当するものである。 ![](https://i.imgur.com/k2MwxP3.png) https://epomedicine.com/medical-students/basal-ganglia-pathways-simplified/ より引用 実際の脳部位の形状の一部を利用して描かれた図もある。こうした形状の場合、これまで紹介した図と比べて脳部位の記述が対象となるエリアの少し外側に記述されており、矢印との対応付けが先ほどまでの図よりも難しい。 ![](https://i.imgur.com/Tv1VvrM.png) https://www.intechopen.com/chapters/41745 より引用 実際の物理的な位置関係を維持した図を用いると、小さな部位が枠からはみ出た状態で記載されている場合もある。同時に、矢印の対応関係がかなり見にくい状態になりやすく、この図からsCIDとrCIDの対応関係を抜き出す難易度はかなり高いと考えられる。 ![](https://i.imgur.com/WA4nTI9.jpg) https://www.jneurosci.org/content/28/39/9840 より引用 各脳部位の神経細胞を模した図もある。今回の例では波線によって部位の区分けができているが、図によってはそういった親切な情報がない場合もあり、対応関係を神経細胞の形状によって記述している図も存在する。 ![](https://i.imgur.com/n9emaHZ.png) https://www.nature.com/articles/nature11856 より引用 ここまでの図例から課題をまとめると ``` 1. 図中から部位に関する単語情報を抜き出す際に、表記揺れが存在する 2. 対応関係の説明が図中ではなく文章で補足されていたり、図中の捕捉しにくい場所に表示される場合がある 3. 脳部位の物理的な位置関係に対応するように記述された図が存在する。その場合、部位の名称の記述や接続関係の抽出が難しくなる ``` これらが課題と考えており、上記の問題を解決できそうな構造を考える必要がある。 ### 2.3.2 Information Retrieval Systemを使ったソリューション案 一つはInformation Retrieval System(IRS)を採用した、データベース参照型のモデルを考えている。下図では自然言語処理の対話問題において、データベースからの情報を対話出力の補助に利用するアーキテクチャとなっている。同様のアーキテクチャデザインを導入することで、図中の脳部位やその接続の認識への手助けになることが期待される。 ![](https://i.imgur.com/XZ9Q7K9.png) https://www.deepmind.com/blog/language-modelling-at-scale-gopher-ethical-considerations-and-retrieval より引用 具体的には、以下のようなフローを考えている ```mermaid graph TD 画像データの準備 --> PddleOCRによる単語情報の抽出 画像データの準備  --> ArrowDetectionによる矢印の検出 PddleOCRによる単語情報の抽出 --> IRSによる接続候補の抽出 IRSによる接続候補の抽出 --> sCID及びrCIDの候補の獲得 ArrowDetectionによる矢印の検出 --> sCID及びrCIDの候補の獲得 ``` #### PaddleOCRによる単語情報の抽出 後述するIRSの活用のため、OCRによって画像データ中の単語情報を抜き出すことが求められる。 単語情報の抽出に利用できると考えている[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)は、学習済みモデルの商用利用は現在不可となっているが(Microsoftのライセンス関係のため)、 さまざまなシーンにおけるOCRを高精度で実現したライブラリであり、今回の単語抽出において役に立つと考えられる。 ![](https://i.imgur.com/mYB82ju.png) 参考)PaddleOCRの利用例、画像左側が実際の画像で、右側がPaddleOCRによって処理された際の情報。画像はPaddleOCRの[Githubページ](https://github.com/PaddlePaddle/PaddleOCR)より引用 #### IRSによる接続候補の抽出 PaddleOCRの応用によって抜き出された単語情報を、あらかじめDHBAのデータが登録されたRetrieval databaseと照合し、データベース上のProjectionsから接続先の候補を抽出することを考えている。その際に、表記揺れを考慮して、単語情報からデータベースとの照合は一致検索以外にも、類似検索を行うようにする。 #### Arrow Detectionによる矢印の検出 PaddleOCRではその単語が画像中のどの位置にあるかを記録することができるので、画像データ中の矢印を認識して合わせることで、接続候補で抽出された単語同士のつながりを検出することができると考えられる。 Arrow Detection(まだ分野としてはほとんど文献がないが)では、物体検出に準じたモデルを応用して矢印を検出する問題について取り組んでおり、今回はそのモデルの応用によって画像中の矢印の検出を行いたいと考えている。 ![](https://i.imgur.com/WMyuvgV.png) 参考)Arrow R-CNNによって手書きのフロー図から矢印を含むフロー図の構造を抽出するアイデア、画像は https://link.springer.com/content/pdf/10.1007/s10032-020-00361-1.pdf より引用 現状、Arrow型(矢印の形状のもの)を認識する問題は[Poisson-FOCuS](https://www.researchgate.net/figure/A-schematic-of-the-detection-system-with-the-arrow-thickness-corresponding-to-the_fig2_362429232)や[CBIR](https://link.springer.com/article/10.1007/s13042-016-0623-y)で行われているが、画像にあるような丸印の認識は学習済みモデルを使用しただけでは認識できないので、新規にモデルを作るなどの対策が必要となる。 例えば、以下の画像のように、矢印として表記しない表記方法についても考慮する必要があるが、この問題について現時点で解決するのは難しいと考えており、更なる対策・改良があると考えている。 ![](https://i.imgur.com/n9emaHZ.png) ## 3. 今後のアクション 1. 実装のスケジュールを決める 1.1. 特にデータ収集・実験のスケジュールについて3ヶ月目安の目処を立てる 3. 各種ライブラリの試走を行う(題材はHCDにトライアルしたことのある、[Parkinson’s disease as a system-level disorder](https://www.nature.com/articles/npjparkd201625.pdf)に対して行う) ## 付録:単語を捕捉した段落を抜き出す Circuit ID、あるいはsCID、rCIDに対応する単語を抜き出してから、それらの単語を説明する文章を論文中から抜き出すことを考える。今回の場合、[LayoutParser](https://github.com/Layout-Parser/layout-parser)のように論文をセクションごとに区切っておいて、[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)を利用してPDF中の文章をテキスト化し、単語に対応する文章を抜き出すことを考えている。抜き出したい情報としては ``` a. Process → 仮説/モデル論文, b. OutputのSemantics,→レビュー論文/教科書 c. Neural Activity→実験論文 ``` の3つを考えている。 (現時点では要約や必要な情報のみを抜き出す仕組みを作るのは難しいため、まずは抜き出した段落を全て列挙し、人手によって振り分けるようにしていく。) ![](https://i.imgur.com/VQ83rA4.png)