PDFファイルの取り扱いは日常業務で避けては通れないものです。
しかし、その内容を抽出したり、編集したりする作業は予想以上に手間がかかります。
ここで登場するのがPyMuPDFです。
このライブラリは、PDF処理を高速かつ効率的に行うための強力なツールを提供します。
特にテキスト抽出に関しては、PyMuPDFの性能が光ります。
本記事では、PyMuPDFの基本から、実際にPDFファイルからテキストを抽出する方法までをわかりやすく解説します。
本記事の内容
- PyMuPDFとは?
- PyMuPDFのインストール
- PyMuPDFの動作確認
それでは、上記に沿って解説していきます。
PyMuPDFは、Python向けのライブラリです。
PDFファイルの操作に特化しています。
MuPDFの強力な機能をPythonから利用できるようにします。
これにより、PDFの読み込みや書き込み、そして内容の変更が手軽に行えます。
また、ページの追加や削除、テキストと画像の抽出、メタデータの編集なども可能です。
PDFの結合や分割の機能も備えています。
さらに、PDFページを画像ファイルとして保存することもでき、
文書のプレビュー生成やOCR処理の前段階として役立ちます。
PyMuPDFはその高速性で知られ、大量のPDF処理にも向いています。
また、サポートOSは以下となります。
- Windows
- Linux
- MacOS
つまり、OSは問わずに動くということです。
例えば、Windowsであれば次のようなdllが一緒にインストールされます。
「mupdfcpp64.dll」が、MuPDF本体ということです。
このdllをPythonから操作するために、PyMuPDFが必要になります。
PDFへの操作は、C++製プログラムで行うから高速なのでしょうね。
PyMuPDFのインストール
現時点(2024年2月25日)でのPyMuPDFの最新バージョンは、1.23.25です。
更新の頻度が、スゴイです。
それだけ活発なプロジェクトだと言えます。
このPyMuPDFのシステム要件は、Python 3.8以降ぐらいです。
必須の外部依存パッケージなどもありません。
オプションである以下を利用したければ、別途インストールは必要にはなります。
- fontTools
- pymupdf-fonts
- Tesseract-OCR
では、PyMuPDFのインストールを行いましょう。
実行するコマンドは、以下となります。
pip install PyMuPDF
おそらく、何もエラーなくインストールできるはずです。
PyMuPDFの動作確認
適当にPDFを用意しましょう。
今回は、経済産業省のサイトからPDFをダウンロードします。
PyMuPDFの動作確認を行うための基本的なサンプルコードを以下に示します。
このコードは、PDFファイルを開き、そのファイルのページ数を取得し、最初のページのテキストを抽出して表示します。
import fitz # PyMuPDFをインポート # PDFファイルを開く pdf_path = 'yachin_shien.pdf' # PDFファイルのパスを指定 doc = fitz.open(pdf_path) # ページ数を取得 page_count = len(doc) print(f"ページ数: {page_count}") # 最初のページのテキストを抽出 first_page = doc.load_page(0) # ページ番号は0から始まる text = first_page.get_text() print("最初のページのテキスト:") print(text) # ドキュメントを閉じる doc.close()
上記コードを実行した結果は、以下となります。
ページ数: 1 最初のページのテキスト: ≪テナント家賃の支払いを支援する制度について≫ ① 給付金 ○ 事業継続のための持続化給付金 【GW明け頃から支給開始】 → 詳細は中小企業庁HPまで (上限額)中堅・中小法人200万円、個人事業者100万円 ※ 2020年1~12月のうち、前年同月比で売上が50%以上減少している事業者の方が対象 ② 融資 ○ 実質無利子・無担保・元本返済の据置最大5年の融資 【①②は融資を開始済み。③は補正予算成立後速やかに融資を開始】 → 詳細は中小企業庁HPまで ① 日本政策金融公庫の新型コロナウイルス感染症特別貸付 上限3億6000万円(無利子上限1億3000万円、当初3年間(※1)) ※ 上記の上限は公庫の国民生活事業と中小企業事業を併用した場合 (生活衛生関係営業者向け) 〇 生活衛生関係営業新型コロナウイルス感染症特別貸付 上限6000万円(上記と併用可能)(無利子上限3000万円、当初3年間(※1)) ② 商工組合中央金庫の危機対応融資 上限3億円(無利子上限1億円、当初3年間(※1)) ③ 民間金融機関による無利子融資 各都道府県等の制度融資:無利子上限3000万円、当初3年間(※2) (※1)・・売上減少要件(個人事業主5%減、小規模事業者15%減、中規模事業者20%減) (※2)・・売上減少要件(個人事業主5%減、小・中規模事業者15%減) (参考)賃貸借契約の考え方 【法務省民事局】 〇 日本の民法の解釈では、賃料不払を理由に賃貸借契約を解除するには,賃貸人と賃借人の信頼関係が破壊されて いることが必要です。最終的には事案ごとの判断となりますが, 新型コロナウイルスの影響により3カ月程度の賃 料不払が生じても、不払の前後の状況等を踏まえ、信頼関係は破壊されておらず、契約解除(立ち退き請求)が認 められないケースも多いと考えられます。 国 ・日本政策金融公庫等 ・民間金融機関 テナント テナント オーナー 家賃支払 ①給付金 ②融資 以下の制度により給付を受け、又は融資を受けた金額は、 テナント家賃の支払いに充てることが可能です。ご活用ください。 〇 上記の他、新型コロナウイルス感染症対応地方創生臨時交付金等を活用して、地方自治体が 独自に事業者に協力金等を給付する場合、これも家賃支払いに充てることが可能です。最寄り の自治体にお問い合わせください。
テキスト抽出という点では、問題ありません。
ただ、見た目通りの順番でテキストが抽出されていません。
ページ冒頭にあるこの部分が、最後の方にテキスト抽出されています。
この部分が、少し気にはなりますね。