今回はPDFから文章を取り出すPythonプログラムを作成したので紹介します。以前、PDFファイルをgrep検索するプログラムを作成しましたが、これを改変したものです。

準備

PDFを操作するPythonライブラリであるPDFMinerをインストールします。

使い方

実行すると以下のようなGUIが立ち上がります。

Openボタンを押すと、ファイル選択ダイアログが開くので、PDFファイルを選択して「開く」ボタンを押してください。

今回は以下のファイルを使わせてもらいました。
文部科学省の概要(パンフレット)令和元年12月発行

しばらくするとテキストエリアにPDFから抜き出した文章が表示されます。

ソースコード

ソースコードの説明

process_filesメソッドは「Open」ボタンと関連付けられているので、ボタンを押すとこの関数が実行されます。この中でask_input_filenameメソッドが呼び出され、ファイルを選択するダイアログを開いています。選択されたファイル名をprocess_files_pdfメソッドに渡し、PDFからテキスト情報を取り出し、テキストエリアに出力しています。

98~124行目にあるprocess_files_pdfメソッドでPDFファイルを開き、PDFMinerを使ってPDFに含まれる文字列を取り出しています。

PDFResourceManagerはPDFファイルに含まれるテキストや画像などのコンテンツを管理するクラスです。またLAParamsはPDFファイルのレイアウトパラメータを保持するクラスです。ここでは縦書きにも対応するようにdetect_verticalをTrueにしています。TextConverterはPDFファイルに含まれるテキストを取り出す機能をもったクラスです。第二引数にテキストを出力するStringIO変数を渡しています。PDFPageInterpreterはPDFページオブジェクトを解析するクラスです。

PDFPageクラスのget_pagesメソッドを使って、PDFファイルからページごとの個別情報を取得します。そのページ情報からPDFPageInterpreterクラスのオブジェクトによってテキスト情報を取り出しています。

どうでしたでしょうか。誰かのお役に立てば幸いです。