📙

PyMuPDF (PDFtoText) メモ

2024/09/16に公開

参考記事の PyMuPDF[1] というツールを利用して、テキスト抽出した時のメモです。

1. PDFのツリー構造

このツールはPDFをこのようなツリー構造[2]に変換し、データ抽出可能がです。

<page>
    <text block>
        <line>
            <span>
                <char>
    <image block>
        <img>

2. PDFの種類による構造の違い

PDF構造の理解を深めるためにこちらのコード(Google Colab)を準備しました。
folder_path のパスの変更、ダウンロードしたPDFを指定のフォルダに格納して実行してみてください。

https://github.com/ystknsh/samples/blob/main/sample_pdftotext.ipynb

PDF の種類により実行結果が異なることが分かります。
特に論文3 は画像ファイル等からPDF化していると考えられます。

論文1: block が1行毎になっている
論文2: block が段落毎になっている
論文3: PyMuPDF ではテキストデータを抽出できない

3. PDFの構造を取得できたら

get_text("text")get_text("blocks") などでテキストがどのような形で保存されているかを確認します。

例えば、ヘッダーに学会誌名や論文タイトル、フッターにはページ番号などが記述されています。
これらを取り除くには、get_text("blocks")を利用して、最初と最後のblock を読み飛ばす方法があります。

しかし、学会誌によってこれらの書式は若干異なるので注意が必要です。

4. 参考論文

論文1 - 産業・労働分野に求められるマインドフルネスプログラムの検討
https://www.jstage.jst.go.jp/article/jjm/7/1/7_71_5/_pdf/-char/ja

論文2 - 国立科学博物館所蔵ヤマイヌ剥製標本はニホンオオカミ Canis lupus hodophilax か?
https://www.jstage.jst.go.jp/article/bnmnszool/50/1/50_33/_pdf/-char/ja

論文3 - 2眼立体視型網膜投影ディスプレイ
https://www.jstage.jst.go.jp/article/sanjigen/8/0/8_103/_pdf/-char/ja

5. 参考記事

脚注
  1. https://pymupdf.readthedocs.io/ja/latest/index.html ↩︎

  2. https://pymupdf.readthedocs.io/ja/latest/app1.html#general-structure-of-a-textpage ↩︎

GitHubで編集を提案

Discussion