◾️はじめに
https://dk521123.hatenablog.com/entry/2025/10/03/141326
の続き。 今回は、pythonで、PDF -> TEXT を行う。
目次
【1】PyMuPDF 【2】PyMuPDF4LLM 【3】pdfminer.six
【1】PyMuPDF
* PDFの構造を検出し、データを抽出するツール
1)インストール
pip install PyMuPDF
2)サンプル
import fitz # PyMuPDF def extract_text_from_pdf(path): with fitz.open(path) as doc: text = "" for page in doc: text += page.get_text() return text if __name__ == "__main__": pdf_path = "test_files/sample.pdf" extracted_text = extract_text_from_pdf(pdf_path) print("Extracted Text from PDF:") print(extracted_text)
出力結果
会社名:株式会社テスト 職種:ソフトウェアエンジニア 勤務地:東京都渋谷区 給与:年収500万円〜700万円
【2】PyMuPDF4LLM
* PyMuPDFのLLM(Large Language Models;大規模言語モデル)
1)インストール
pip install pymupdf4llm
2)サンプル
import pymupdf4llm md_text_chunks = pymupdf4llm.to_markdown( doc="test_files/sample.pdf", page_chunks=True ) print(md_text_chunks)
出力結果
[{'metadata': {
'format': 'PDF 1.3', 'title': '', 'author': '', 'subject': '', 'keywords': '', 'creator': '',
'producer': '', 'creationDate': 'D:20251004090539Z',
'modDate': '', 'trapped': '', 'encryption': None, 'file_path': 'test_files/sample.pdf',
'page_count': 1, 'page': 1}, 'toc_items': [], 'tables': [], 'images': [], 'graphics': [],
'text': '職種:ソフトウェアエンジニア\n\n\n勤務地:東京都渋谷区\n\n\n
給与:年収500万円〜700万円\n\n\n', 'words': []}]
【3】pdfminer.six
* Pythonで書かれた強力なPDF解析ライブラリ
https://omomuki-tech.com/archives/1199
1)インストール
pip install pdfminer.six
2)サンプル
from pdfminer.high_level import extract_text # テキスト抽出 text = extract_text("test_files/sample.pdf") # 結果を表示 print("+++++++ Extracted Text using pdfminer +++++++") print(text) print("+++++++ Extracted Text using pdfminer +++++++")
出力結果
会社名:株式会社テスト 職種:ソフトウェアエンジニア 勤務地:東京都渋谷区 給与:年収500万円〜700万円
関連記事
Python ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/08/07/231242
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251
Python ~ PyFPDF ~
https://dk521123.hatenablog.com/entry/2023/07/19/001703
Python ~ 画像処理 / Pillow ~
https://dk521123.hatenablog.com/entry/2023/07/10/000000
Python 〜 Tesseract OCR 〜
https://dk521123.hatenablog.com/entry/2025/10/03/141326