Pythonライブラリ「PyMuPDF」がすごい!テキスト抽出も画像抽出もこれ1つでOK!

Pythonライブラリ「PyMuPDF」がすごい! テキスト抽出も画像抽出もこれ1つでOK!

ジーズアカデミーに通っていたときから続けているプロジェクトの関係でPDF関連のライブラリを調査し続けていました。

Chat GPTのAPIにリクエストをぶん投げればいい話ではあるのですが、安いといえどもやっぱり料金のかかるものであり、PDFの分量がえげつないことになるとやっぱり料金が嵩んでしまうので、なんとかできないかなと思っていたのです。

そんな時に発見したのがPyMuPDFというPythonライブラリ。

今回はPyMuPDFについて書いてみたいと思います!

PythonのPyMuPDFライブラリについて

PyMuPDFはPythonのライブラリです。

PyMuPDFはPDF文書のデータ抽出や処理を行うのに便利なんですが、できることが非常に多い!

PDFファイルからのテキストや画像の抽出はもちろんのこと、PDFのページごとに画像を作成したり、PDF内にあるデータを操作したり、色々なことができます!

PyMuPDFライブラリを使ったテキスト抽出と画像抽出事例

ということで、早速PyMuPDFライブラリを使ったテキスト抽出と画像中湯つ事例をみてみます!

PyMuPDFライブラリのテストディレクトリ

適当なフォルダを作成し、データ抽出を行いたいPDFファイルとpythonファイルを用意します。

今回僕は、とある講義?用のために作成したPDFファイルを用いてみました。

こんな感じの内容です。

テキスト抽出用のPythonコード

それでは、テキスト抽出をしてみましょう!

import fitz
doc = fitz.open("test.pdf")
out = open("output.txt", "wb")

なんと、たったのこれだけです!output.txtに抽出したテキストを出力しています。

PyMuPDFを使ってテキストを抽出した結果

実際に抽出された中身を見ると、かなり抽出の精度が高い!気になるのは、見出し?あたりについている謎の記号程度だと思います。

Pythonのコードとしてもやっていることは非常にシンプルですね!

画像を抽出してみる

次に、画像を抽出してみたいと思います!

import fitz

index = 0
for page in doc:
    for img in page.get_images(full=True):
        if img[0] == None:
            continue

        index += 1 
        xref = img[0]
        img = doc.extract_image(xref)
        with open("img{}.png".format(index), "wb") as f:
            f.write(img["image"])

doc.close()

使っている文法もifやfor程度なので、非常に基本的なものですよね!

get_images関数によってページごとに掲載されている画像を取得することができるので、あとはそれをさらにfor文を使って画像抽出し、ダウンロードしているだけです!

ちなみに上のコードを実行すると、img1.pngのような数字のついたファイル名での画像が連番で作成され、ダウンロードされるようになっています!

しかも処理速度も速い!

まとめ

ということで、今回はPythonライブラリ「PyMuPDF」についてのブログを書かせていただきました!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする