7
12

More than 5 years have passed since last update.

PDFデータをテキスト化する方法

Last updated at Posted at 2018-12-09

この記事ではWindows10にインストールしたAnacondaでPython3.6を使用しています。

本記事でやったこと

・PDFデータをテキストデータにする。

ツールのインストールとプログラム取得

1.pdfminer.sixをインストール

まずはpdfをテキストに変換するツールを下記コマンドにてダウンロードします。(Anacondaのコンソール上にて実行する)

pip install pdfminer.six

2.pdf2txtが下記フォルダに置かれるのでパスを覚えておく

環境変数に登録しておくと便利ですが、取り急ぎ今回はフルパス指定で使っていきます。

 C:\ProgramData\Anaconda3\Scripts\pdf2txt.py

さっそく実行させましたが、下記のようなエラーが発生しました。
※オプションの-oを加えることで出力ファイルを指定できます。

D:\s>python C:\ProgramData\Anaconda3\Scripts\pdf2txt.py -o test.txt test.pdf
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\Scripts\pdf2txt.py", line 136, in <module>
    if __name__ == '__main__': sys.exit(main())
  File "C:\ProgramData\Anaconda3\Scripts\pdf2txt.py", line 131, in main
    outfp = extract_text(**vars(A))
  File "C:\ProgramData\Anaconda3\Scripts\pdf2txt.py", line 63, in extract_text
    pdfminer.high_level.extract_text_to_fp(fp, **locals())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pdfminer\high_level.py", line 80, in extract_text_to_fp
    check_extractable=True):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pdfminer\pdfpage.py", line 132, in get_pages
    raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)
pdfminer.pdfdocument.PDFTextExtractionNotAllowed: Text extraction is not allowed: <_io.BufferedReader name='test.pdf'>

どうやらPDFには編集権限がついているものがあり、編集可能でないとツールが読み取らないようです。

3.PDFを編集可能にするソフトをダウンロード

qpdfというソフトを使用するとPDFに編集可能にできるようです。
※あくまで自己学習で行っていることなので不用意に他人のPDFファイルのロックを解除しないでください。

 qpdf-8.2.1-bin-msvc64.zip

解凍して任意の場所に置く 私は下記の場所に置きました。

 C:\ProgramData\Anaconda3\Scripts\qpdf-8.2.1-bin-msvc64\qpdf-8.2.1\bin\qpdf.exe

下記コマンドでPDFを編集可能にする。

対象PDFをqpdfにかけて編集可能にしてみます。

D:\s>C:\ProgramData\Anaconda3\Scripts\qpdf-8.2.1-bin-msvc64\qpdf-8.2.1\bin\qpdf.exe --decrypt 対象ファイル 出力先ファイル

image.png

エラーも出ずにうまく処理できたようです。
※今回使用したファイルはtest.pdfで編集可能にし、ファイル名はtest1.pdfとしました。

もしもこれでできない場合空白のパスワードがかかっているもしくは意図的にパスワードをかけているため下記を試してみて下さい。(実績なし)そう考えるとパスワードをかけずに編集不可にしているPDFは作者の意図せずPDF作成時に編集不可にしているのか意図的にやっているのかちょっとよくわからないですね。

 C:\ProgramData\Anaconda3\Scripts\qpdf-8.2.1-bin-msvc64\qpdf-8.2.1\bin\qpdf.exe --decrypt input.pdf --password='' output.pdf

PDFをTXTにする

下記コマンドで再度PDFデータをテキストにしてみます。

 python C:\ProgramData\Anaconda3\Scripts\pdf2txt.py -o test1.txt test1.pdf

image.png

エラーも出ずにうまく処理できたようです。

肝心のTXTファイルも作成されております。
image.png

中身を見たところ、スペース段落なしでびっちり書き込まれておりました!

image.png

終わりに

自身で作成した人工知能プログラムで文章を学習させるため、他のサイトから参考にダウンロードした(もちろんサイト管理者から許可をいただいたもしくはダウンロード可能なサイトです。)PDFデータなどをテキストデータにして活用する際にこの方法を役立てられればと思います。
また、現場でPDFデータをテキストにしたいと思っている方がいらっしゃいましたらご参考までに試していただければと思います。

7
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
12