この記事では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 対象ファイル 出力先ファイル
エラーも出ずにうまく処理できたようです。
※今回使用したファイルは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
エラーも出ずにうまく処理できたようです。
中身を見たところ、スペース段落なしでびっちり書き込まれておりました!
#終わりに
自身で作成した人工知能プログラムで文章を学習させるため、他のサイトから参考にダウンロードした(もちろんサイト管理者から許可をいただいたもしくはダウンロード可能なサイトです。)PDFデータなどをテキストデータにして活用する際にこの方法を役立てられればと思います。
また、現場でPDFデータをテキストにしたいと思っている方がいらっしゃいましたらご参考までに試していただければと思います。