社会人研究者が色々頑張るブログ

pythonで画像処理やパターン認識をやっていきます

pythonでPDFからテキストデータを抽出する

やりたいこと

論文サーベイ支援アプリを作成するに当たり,論文のPDFからテキストデータを抽出する必要があります. 今回は論文のPDFファイルからテキストデータを抽出する方法を実装します.

pdfminer.six

pdfminer.sixはPythonでPDFのテキストを抽出するライブラリです。
Welcome to pdfminer.six’s documentation! — pdfminer.six 20201018 documentation

pdfminer.sixはPDFの目次やタグなどの構造情報やテキスト、画像を抽出することが出来ます。

インストールはとても簡単でpipやcondaでインストールすることが出来ます。
condaの場合は、conda-forgeからインストールします。

conda install -c conda-forge pdfminer.six

ライブラリの使い方に関してはチュートリアル形式の公式ドキュメントが公開されています。
Tutorials — pdfminer.six 20201018 documentation

pdfからすべてのテキストを読み込むには、high_level apiのextract_textを使います。

from pdfminer.high_level import extract_text

text = extract_text("./test.pdf")
# 出力例
"■2 群(画像・音・言語)- 6 編(音響信号処理) \n\n2 章 音源分離 \n\n■概要■ \n\n電子情報通信学会『知識の森』 ...

https://www.ieice-hbkb.org/files/02/02gun_06hen_02.pdf

extract_textは改行等々も関係なく読み込む様な実装になっているので、改行コードで文章を分ける等々の処理をする事で使いやすくなると思います。

lines = text.split("\n")
# 出力例
■2 群(画像・音・言語)- 6 編(音響信号処理) 

2 章 音源分離 

■概要■ 

電子情報通信学会『知識の森』(http://www.ieice-hbkb.org/) 
2 群  -  6編  -  2章 

いい感じですね!

論文のPDFからワードクラウドサムネイルの作成

pdfからテキストを抽出できたので、前回遊んだワードクラウドと組み合わせてみました。
今回扱う論文は、ResNet[1]、Ghostnet[2]、Attention[3]、あとは全く読んだことの無い生物学の論文[4]です。

ResNet GhostNet Attention 猫の論文
f:id:nsr_9:20211029143117p:plain f:id:nsr_9:20211029172239p:plain f:id:nsr_9:20211029143138p:plain f:id:nsr_9:20211029143145p:plain

それぞれの論文の概要をざっくりと要約すると次のようになります。

論文名 ざっくり要約
ResNet CNNはモデルをDeepにする程学習が難しくなるが、Residual Moduleを用いる事でめっちゃDeepにしても学習が進むようになった
GhostNet 低計算量で様々な特長マップを生成できるGhostモジュールを用いる事で、モバイル機器に乗るようなCNNを実現した
Attention Attention(注意)の仕組みによりRNNやCNNより優れたシンプルな時系列変換アーキテクチャを提案。機械翻訳タスクに適用したらめっちゃ凄かった
猫の論文 イエネコの毛皮の模様の発生過程は完全にはわかっていなかったが、猫の皮膚の遺伝子を解析したらDkk4遺伝子コードが模様に影響を与えてる事がわかった
論文名 WordCloud パッと読み取れる内容
ResNet f:id:nsr_9:20211029171904p:plain DeepLearning系の論文。COCOとかImageNetが見えるから多分画像分類タスク
GhostNet f:id:nsr_9:20211029172415p:plain ResNetを改造して計算量を削減した系の論文
Attention f:id:nsr_9:20211029172009p:plain 時系列(Sequence)を扱うDeepLearning系の論文。モデルの構造に言及しているように見える
猫の論文 f:id:nsr_9:20211029172017p:plain Cellとかgenが見えるので猫の遺伝子系の論文

割と論文の内容を把握できそうな雰囲気がありますね。
猫の論文の様に完全な分野外だと単語の意味が分からないケースがあるかもしれませんが、それなりに知っている分野だと割とざっくり把握するのには使えそうな印象を持ちました。

まとめ

PDFの文字列を抽出し、ワードクラウドで表現してみました。
公開されている論文に適用してみた所、内容を類推できそうな結果が得られました。

[1]He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[2]Han, Kai, et al. "Ghostnet: More features from cheap operations." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
[3]Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems. 2017. [4]Kaelin, Christopher B., Kelly A. McGowan, and Gregory S. Barsh. "Developmental genetics of color pattern establishment in cats." Nature communications 12.1 (2021): 1-12.