見出し画像

Pythonを使ってPDFからテキスト抽出するには?

そもそもそのPDFはテキスト抽出に耐えうるものか?

一口にPDFといっても様々な経歴を辿って、そのPDFファイルの姿をしています。まずはそもそもPythonでデータ抽出できるPDFなのかどうかを見極めましょう。

スキャンした画像をPDF化したファイルからテキストを抽出したい...まずはOCRソフトウェアを利用しましょう。OCRを利用したあと、そのテキストを抽出する際、Pythonを利用できると思います。

表が含まれていて、テキストというよりは表データとして抽出したい...Tabulaなど、それ専用のソフトウェアを利用した方が、後々楽ちんです。

自分が作ったファイルではないが、WordやExcelで作成したらしきファイルからデータ抽出したい...最新ヴァージョンのWordやExcelでは、それらのアプリケーションで作成したPDFファイルを、再度編集可能な状態で読み込むことができるようです。もしかして、と思ったら念の為トライしてみてください。

以上に該当しなければ、適用可能性があると思います。市販されてる書籍の該当部分を紹介します。何が触れられているかのみご紹介しますので、ご興味がでたらぜひ書籍を手にとってみてください。

退屈なことはPythonにやらせよう――ノンプログラマーにもできる自動化処理プログラミング

画像1

PyPDFというパッケージを利用した書き方が紹介されています。目次から該当箇所を紹介しますとこんな感じです。

・13.1.1 PDFからテキストを抽出する
・13.1.2 PDFの暗号を解く
・13.1.3 PDFを作成する
  ・13.1.3.1 ページをコピーする
  ・13.1.3.2 ページを回転する
  ・13.1.3.3 ページを重ね合わせる
  ・13.1.3.4 PDFを暗号化する

13.2 プロジェクト:多数のPDFから指定したページを結合する
13.2.1 ステップ1:すべてのPDFファイルを探す
13.2.2 ステップ2:PDFを開く
13.2.3 ステップ3:ページを追加する
13.2.4 ステップ4:結果を保存する
13.2.5 類似プログラムのアイデア

公式サイトによると、以下の機能を取り揃えています。

・テキスト抽出
・メタ情報抽出
・ページごとの分割
・ページごとの合体
・切り抜き
・複数ページのPDFを1ページに
・PDFファイルの暗号化と復号化

テキスト抽出は、PDFに含まれるテキストデータがまるごと抽出されます。

スクリーンショット 2020-07-03 19.25.20

現場で使える!Python自然言語処理入門

画像2

Apache TikaというJavaで書かれたソフトウェアのPython APIを利用しています。

・2.1.4 PDF、Wordなどからの入手

内容はPDFファイルからの読み込みと表示確認程度となります。出力されるjsonの中で"content"の中に、PDFに含まれるテキストデータがまるごと抽出されます。

スクリーンショット 2020-07-03 19.26.55

テキストデータを抽出したあとは?

抽出したテキストデータは、文書構造を持っていません。まずは不要な要素を削除する必要があるでしょう。たとえば以下のようなものがありえます。

・ページ数表記
・注釈
・ヘッダの文書タイトル
・文章途中の不要な改行

見出しテキストも、平文のテキストと区別ができません。筆者もこれからトライするところですが、見出しテキストに段落番号がついていれば、それを利用してマークダウン形式に変換することも出来るかもしれません。



この記事が気に入ったらサポートをしてみませんか?