🐈

python3 で利用可能な pdf からテキストを抽出するライブラリについて

2021/09/10に公開

今回確認したライブラリについて

以下ライブラリについて、pdf からテキスト抽出を行う際に利用することを想定して調べました。

  • PyPDF2
  • pdfminer.six
  • Apache Tika
  • PDFMiner

環境

  • macOS: 11.2.3
  • python: 3.9.4

requirements.txt

検証に利用したライブラリを freeze したファイルの中身です。

cffi==1.14.6
chardet==4.0.0
cryptography==3.4.8
pdfminer==20191125
pdfminer.six==20201018
pycparser==2.20
pycryptodome==3.10.1
PyPDF2==1.26.0
sortedcontainers==2.4.0

結論

pdfminer.six を利用するのが良い。

PyPDF2 は日本語に対応していない。

Apache Tika は java7+ が必要。

PDFMiner は非推奨で pdfminer.six の利用が案内されている。

PyPDF2

pip install PyPDF2

以下のように利用できる。
この例はテキストを抽出するサンプル。

import PyPDF2

FILE_PATH = './pdf/090564_hanrei.pdf'

if __name__ == '__main__':
    with open(FILE_PATH, mode='rb') as f:
        reader = PyPDF2.PdfFileReader(f)
        page = reader.getPage(1)
        print(page.extractText())

ドキュメントのリンク
https://pythonhosted.org/PyPDF2/index.html

この抽出だとテキストが文字化けしてしまった。
日本語には対応していない。

pdfminer.six

python2 用のライブラリらしい。

しかし、python3 でも利用できた。

pip install pdfminer.six
from pdfminer.high_level import extract_text

FILE_PATH = './pdf/090564_hanrei.pdf'

if __name__ == '__main__':
    text = extract_text(FILE_PATH)
    print(text)

実装も簡単で、読み込みも問題はなさそう。

ドキュメントのリンク
https://pdfminersix.readthedocs.io/en/latest/

github
https://github.com/pdfminer/pdfminer.six

Apache Tika

Java をダウンロードしないとならない。

ダウンロードページ
https://tika.apache.org/download.html

python で利用できるライブラリを他の人が作っている。
https://github.com/chrismattmann/tika-python

このライブラリの起動については java7+ が必要とのこと。

別言語を利用しなければならないため、検討することをやめます。

PDFMiner

pip install pdfminer

ドキュメントのページ
https://github.com/euske/pdfminer

Warning: As of 2020, PDFMiner is not actively maintained. The code still works, but this project is largely dormant. For the active project, check out its fork pdfminer.six.

google翻訳結果

2020年の時点で、PDFMinerは積極的に保守されていません。コードは引き続き機能しますが、このプロジェクトはほとんど休止しています。アクティブなプロジェクトについては、フォークpdfminer.sixを確認してください。

とのこと。

このライブラリは利用せずに pdfminer.six を利用するのが正解

Discussion