PythonのPyMuPDFを使ってPDFファイルからテキストを抽出する方法 | PythonでDX

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

PDFファイルはビジネスや学術研究で頻繁に使用されるファイル形式ですが、その内容を取得して編集したりしたいことがあるかと思います。

そんな時に有効なのがPythonのライブラリPyMuPDFです。

PyMuPDFを使用することで、PDFファイルから高速に文字列を抽出できますので、そのデータを自由に加工して使用することができます。

今回は、PythonのPyMuPDFライブラリを使用して、PDFファイルから簡単にテキストデータを抽出する方法を紹介します。

この記事でわかること
  • PythonライブラリPyMuPDFの概要
  • PDF操作自動化システムのテストで使えるサンプルファイルの入手先
  • PDFファイルからテキストデータを抽出するためのPythonコード
目次

PyMuPDFとは

PyMuPDFは、PDFファイルの操作に特化したPythonライブラリです。

このライブラリは、PDF、XPS、OpenXPS、CBZ、EPUBなどの多くのファイル形式に対応しています。

高速な処理速度と多機能性が特徴であり、テキストの抽出、ページの追加・削除、画像の挿入・抽出、ファイルの分割・結合など、多くのPDF操作が可能です。

また、注釈の追加やフォームフィールドの操作、さらにはPDFのレンダリングもサポートしています。

独自の検索機能も提供しており、特定のテキストや画像を効率よく見つけることができます。

このようにPyMuPDFは、PDF操作に関する幅広いニーズに対応しています。

作成したPythonコード

今回作成したPythonコードは、PyMuPDFライブラリを使用して、指定したPDFファイルからテキストデータを抽出します。各ページのテキストを順番に出力し、最後にPDFファイルを閉じます。

サンプルPDFファイルの入手

今回はデータ抽出の対象となるサンプルのPDFファイルとして、以下のPDFを扱うシステムの開発者向けサンプルファイルを公開されているサイトを使用します。

以下のページから150 kBの一番容量の小さいfile-sample_150kB.pdfというファイルをあらかじめダウンロードし、作成するPythonファイルと同じディレクトリに配置しておきます。

コード解説

  • pdf_file_path = "file-sample_150kB.pdf": 処理対象のPDFファイルのパスを指定します。
  • pdf_document = fitz.open(pdf_file_path): PDFファイルを開きます。
  • for page_number in range(len(pdf_document)):: PDFの各ページに対して処理を行います。
  • page = pdf_document.load_page(page_number): 指定したページ番号のページをロードします。
  • text = page.get_text(): ページからテキストを抽出します。
  • pdf_document.close(): PDFファイルを閉じます。これはリソースを解放するために重要です。

作成した全体のソースコード

import fitz  # PyMuPDF

# PDFファイルを開く
pdf_file_path = "file-sample_150kB.pdf"  # PDFファイルのパスを指定
pdf_document = fitz.open(pdf_file_path)  # PDFファイルを開く

# PDFの各ページからテキストを抽出
for page_number in range(len(pdf_document)):
    page = pdf_document.load_page(page_number)  # ページをロード
    text = page.get_text()  # ページからテキストを抽出
    print(f"Page {page_number + 1}:")
    print(text)  # テキストを出力

# PDFファイルを閉じる
pdf_document.close()

実行結果

先ほどのコードを実行した結果は以下の通りです。

指定したPDFファイルから、以下のように文字列データを抽出することができました。

Page 1:
Lorem ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Nunc ac faucibus odio.
Vestibulum neque massa, scelerisque sit amet ligula eu, congue molestie mi. Praesent ut
varius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor vitae odio interdum
condimentum.  Vivamus  dapibus  sodales  ex,  vitae  malesuada  ipsum  cursus
convallis. Maecenas sed egestas nulla, ac condimentum orci.  Mauris diam felis,
vulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus
nisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,
ac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet
tortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet
mauris tempus fringilla.
Maecenas mauris lectus, lobortis et purus mattis, blandit dictum tellus.

Maecenas non lorem quis tellus placerat varius.

Nulla facilisi.

Aenean congue fringilla justo ut aliquam.

Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum ante
sagittis.

Morbi viverra semper lorem nec molestie.

Maecenas tincidunt est efficitur ligula euismod, sit amet ornare est vulputate.
Row 1
Row 2
Row 3
Row 4
0
2
4
6
8
10
12
Column 1
Column 2
Column 3

Page 2:
In non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam
est ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat
et. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis
tristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque
scelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam
lobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,
ultricies ut purus. Ut facilisis et lacus eu cursus.
In eleifend velit vitae libero sollicitudin euismod. Fusce vitae vestibulum velit. Pellentesque
vulputate lectus quis pellentesque commodo. Aliquam erat volutpat. Vestibulum in egestas
velit. Pellentesque fermentum nisl vitae fringilla venenatis. Etiam id mauris vitae orci
maximus ultricies.
Cras fringilla ipsum magna, in fringilla dui commodo
a.
Lorem ipsum
Lorem ipsum
Lorem ipsum
1
In eleifend velit vitae libero sollicitudin euismod.
Lorem
2
Cras fringilla ipsum magna, in fringilla dui commodo
a.
Ipsum
3
Aliquam erat volutpat.
Lorem
4
Fusce vitae vestibulum velit.
Lorem
5
Etiam vehicula luctus fermentum.
Ipsum
Etiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.
Maecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,
pellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper
justo sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo
posuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut
et  pulvinar  nunc.  Pellentesque  fringilla  mollis  efficitur.  Nullam  venenatis  commodo
imperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem
sed turpis imperdiet eleifend sit amet id sapien.

Page 3:
Lorem ipsum dolor sit amet, consectetur adipiscing
elit.
Nunc ac faucibus odio. Vestibulum neque massa, scelerisque sit amet ligula eu, congue
molestie mi. Praesent ut varius sem. Nullam at porttitor arcu, nec lacinia nisi. Ut ac dolor
vitae odio interdum condimentum. Vivamus dapibus sodales ex, vitae malesuada ipsum
cursus convallis. Maecenas sed egestas nulla, ac condimentum orci. Mauris diam felis,
vulputate ac suscipit et, iaculis non est. Curabitur semper arcu ac ligula semper, nec luctus
nisl blandit. Integer lacinia ante ac libero lobortis imperdiet. Nullam mollis convallis ipsum,
ac accumsan nunc vehicula vitae. Nulla eget justo in felis tristique fringilla. Morbi sit amet
tortor quis risus auctor condimentum. Morbi in ullamcorper elit. Nulla iaculis tellus sit amet
mauris tempus fringilla.
Maecenas mauris lectus, lobortis et purus mattis, blandit
dictum tellus.
Maecenas non lorem quis tellus placerat varius. Nulla facilisi. Aenean congue fringilla justo
ut aliquam. Mauris id ex erat. Nunc vulputate neque vitae justo facilisis, non condimentum
ante sagittis. Morbi viverra semper lorem nec molestie. Maecenas tincidunt est efficitur
ligula euismod, sit amet ornare est vulputate.
In non mauris justo. Duis vehicula mi vel mi pretium, a viverra erat efficitur. Cras aliquam
est ac eros varius, id iaculis dui auctor. Duis pretium neque ligula, et pulvinar mi placerat
et. Nulla nec nunc sit amet nunc posuere vestibulum. Ut id neque eget tortor mattis
tristique. Donec ante est, blandit sit amet tristique vel, lacinia pulvinar arcu. Pellentesque
scelerisque fermentum erat, id posuere justo pulvinar ut. Cras id eros sed enim aliquam
lobortis. Sed lobortis nisl ut eros efficitur tincidunt. Cras justo mi, porttitor quis mattis vel,
ultricies ut purus. Ut facilisis et lacus eu cursus.
In eleifend velit vitae libero sollicitudin euismod.
Fusce vitae vestibulum velit. Pellentesque vulputate lectus quis pellentesque commodo.
Aliquam  erat volutpat.  Vestibulum  in  egestas  velit. Pellentesque  fermentum nisl  vitae
fringilla  venenatis.  Etiam  id  mauris  vitae  orci  maximus  ultricies.  Cras  fringilla  ipsum
magna, in fringilla dui commodo a.
Etiam vehicula luctus fermentum. In vel metus congue, pulvinar lectus vel, fermentum dui.
Maecenas ante orci, egestas ut aliquet sit amet, sagittis a magna. Aliquam ante quam,
pellentesque ut dignissim quis, laoreet eget est. Aliquam erat volutpat. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut ullamcorper
justo sapien, in cursus libero viverra eget. Vivamus auctor imperdiet urna, at pulvinar leo
posuere laoreet. Suspendisse neque nisl, fringilla at iaculis scelerisque, ornare vel dolor. Ut
et  pulvinar  nunc.  Pellentesque  fringilla  mollis  efficitur.  Nullam  venenatis  commodo
imperdiet. Morbi velit neque, semper quis lorem quis, efficitur dignissim ipsum. Ut ac lorem
sed turpis imperdiet eleifend sit amet id sapien.

Page 4:

プログラミングのスキルを活かすには

プログラミングのスキルを仕事に活かすには、フリーランスとして受けられる案件がおすすめです。

テックゲートフリーランスは、フリーランスエンジニアの案件紹介や契約交渉・債権管理などのサポートを行っているフリーランスエージェントです。

テックゲートフリーランスのココがおすすめ
  • リモートワーク可能な案件が50%以上
  • 週3〜4日の案件の豊富さ
  • 年収100万円アップのサポート

無料相談フォームからご登録いただくだけで、経験年数やスキルに合わせて案件をご紹介また、リモートワーク可能な案件や週3〜4日OKの案件も豊富に用意されています。

副業やフリーランスとして仕事を受けてみたいと考えている方には、テックゲートフリーランスが提供する多様なサポートが非常におすすめです。

無料で登録してみる!

まとめ

この記事では、PythonのPyMuPDFライブラリを用いてPDFファイルからテキストデータを抽出する方法を解説しました。

PyMuPDFは多機能かつ高速なライブラリであり、PDF操作に関する多くのニーズに対応しています。この知識を活かして、日々の業務効率化に役立ててみてください。

それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次