151 人が閲覧(直近 30 日) Python

PyMuPDF(fitz)とは|インストールから使い方・ライセンスまで解説【2026年版】

PyMuPDF(fitz)とは|インストールから使い方・ライセンスまで解説【2026年版】

PyMuPDFは、C言語で書かれたPDFエンジンMuPDFをPythonから呼び出すライブラリです。PDFのテキスト・表・画像の抽出、ページの画像化、結合や透かしなどの編集を1つのパッケージでこなし、開発元は米Artifex Softwareです。この記事では2026年10月時点の最新版1.28.2で全コードを実行し直し、出力をそのまま載せています。1.28.2では古い書き方のimport fitzに非推奨の警告が出るようになり、PyPIのfitzパッケージも無効化されました。古い解説記事のとおりに書くと動かない箇所があるので、その点から順に説明します。

まとめ:PyMuPDFの要点

  • インストールはpip install pymupdf。Python 3.10以上が必要で、3.9の環境では1.26.5までしか入らない。
  • コードはimport pymupdfで書く。import fitzは1.28.2で警告が出る旧名で、pip install fitzは、2026年8月に無効化された版が入るためエラーで終わる。
  • テキストはpage.get_text()、表はpage.find_tables()、画像化はpage.get_pixmap()、埋め込み画像はdoc.extract_image()で取り出せる。
  • 公的PDF(480ページ)の全文抽出は3.66秒で、同じ環境のpypdfの約3分の1、pdfplumberの約10分の1の時間だった。
  • ライセンスはAGPL-3.0とArtifex商用ライセンスのデュアル。自社アプリのソースをAGPLで公開せずに、配布する製品や社外向けのWebサービスに組み込むなら商用ライセンスが要る。価格は非公開で、個別見積もり。

PyMuPDFでできること|MuPDFをPythonから使うライブラリ

PyMuPDFの処理本体はC言語のMuPDFで、Pythonは呼び出し口です。C言語のエンジンで処理する構成が特徴です。後述のテキスト抽出比較ではpypdfやpdfplumberより短時間でしたが、処理内容やPDFによって差は変わります。公式の機能比較表によると、PDFに加えてXPS・EPUB・MOBI・FB2・CBZ・SVG・TXT・画像を開け、ページの描画(画像化)はすべての形式でできます。pypdfとpikepdfにはページ描画機能がありませんが、pdfplumberにはPage.to_image()による画像化機能があります。

主な用途は次の4つです。

  • 抽出:テキスト(座標・フォント付き)、表、埋め込み画像、目次、リンク、メタデータ
  • 変換:ページのPNG・SVG化、PDF以外の文書からPDFへの変換
  • 編集:ページの結合・削除・並べ替え、文字や画像の書き込み、注釈、墨消し(redaction)
  • OCR:文字情報を持たないスキャンPDFをTesseractで読む

PyMuPDF・PyMuPDF4LLM・PyMuPDF Proの違い

同じArtifexの製品に名前の似たものが3つあります。PyMuPDFが土台で、PyMuPDF4LLMはその上でPDFを見出しや表の構造を残したMarkdownに変換するパッケージ、PyMuPDF ProはWordやExcelなどOffice文書を扱えるようにする商用の拡張です。RAGやLLMに渡すためにPDFをMarkdownにしたいなら、PyMuPDF単体で組むよりPyMuPDF4LLMを使うほうが早く、手順はPyMuPDF4LLMの使い方|PDFをMarkdownに変換する手順と日本語PDFの注意点【1.28.2】にまとめています。

fitzとpymupdfの違い|import fitzは1.28.2で非推奨

PyMuPDFのモジュール名は長くfitzでした。パッケージ名(pymupdf)とimport名(fitz)が食い違うため、初めて使う人がつまずく原因になっていました。PyMuPDFの変更履歴では、1.24.3(2024年5月9日)で「モジュール名をpymupdfにした。fitzは後方互換のために引き続きサポートする」と記されています(公式FAQは1.24.0からimport pymupdfを推奨と記載)。

その互換も終わりに向かっています。1.28.2(2026年8月6日)の変更履歴には「旧fitzモジュールをimportしたときに警告を出す」とあり、実際に1.28.2でimport fitzを実行すると次の1行が出ます。

$ python -c "import fitz"
warning: The `fitz` API is deprecated and will be removed in future. Use `import pymupdf` instead.

「将来削除する」と明記されているので、新しく書くコードはimport pymupdfにしてください。既存コードの置き換えはimport fitzをimport pymupdfに、fitz.をpymupdf.に変えるだけで済みます。行数が多くてすぐに直せない場合は、import pymupdf as fitzと書けば残りのfitz.open()などはそのまま動き、警告も出ません(1.28.2で確認)。なお、GitHubの開発ブランチの変更履歴では、次の版でこの警告をPython標準のFutureWarningに切り替える予定です。

pip install fitzのエラーと復旧手順

「import fitzで使うのだから」とpip install fitzを実行するのは誤りです。PyPIのfitzはPyMuPDFとは無関係の別パッケージで、公式のインストール手順は最終リリースが2017年の保守されていないパッケージと説明しています。公式FAQも、両方を入れると共存できずNo module named 'frontend'などのエラーになると注意しています。

この混乱を終わらせるため、PyPIのfitzは2026年8月11日に版番号0.0.0の無効化パッケージへ置き換えられ、それ以前の版はPyPIから消えています。中身を確認すると、READMEに「このパッケージはPyMuPDFではない」と書かれ、インストール処理は意図的にエラーで終わる作りです。まだfitzを入れていない環境で実行すると、次のように失敗します。

$ pip install fitz
      ERROR: Package 'fitz' has been deactivated and cannot be installed.
      Please install 'pymupdf' instead.
ERROR: Failed to build 'fitz' when getting requirements to build wheel

このエラーが出たらpip install pymupdfを実行すれば解決します。2026年8月より前にfitzを入れてしまった環境では、pip uninstall fitzのあとにpip install --force-reinstall pymupdfで入れ直してください。

PyMuPDFのインストール|pip install pymupdfと動作要件

pip install pymupdf
python -c "import pymupdf; print(pymupdf.__version__)"
# 1.28.2

# 記事と同じ版で試す場合
python -m pip install "pymupdf==1.28.2"

PyPIの1.28.2はPython 3.10以上を要求します。MuPDFを組み込んだビルド済みのwheelが配布されているので、Cコンパイラは要りません。1.28.2のwheelがある環境は次のとおりです。

OS CPU 条件
Windows x64・x86・ARM64 ARM64は1.28.2で追加
macOS Apple Silicon・Intel Intelは10.15以上
Linux(glibc) x86_64・aarch64 glibc 2.28以上
Linux(musl) x86_64 Alpineなど
Pyodide WebAssembly ブラウザ内のPython

wheelは約24MB、インストール後のpymupdfフォルダは59MBでした(macOS・Python 3.12で計測)。

つまずきやすいのは次の2つです。

  • Python 3.9の環境では、エラーにならず古い1.26.5が入る。3.10以上を要求するようになったのは1.26.6(2025年11月5日)からで、pipは条件を満たす最後の版を黙って選ぶ。最新版のAPIが無いときはpymupdf.__version__を確認する。
  • glibcが2.28より古いLinux(CentOS 7など)ではwheelが使えず、88MBのソース一式からビルドが始まって失敗しやすい。公式のインストール手順も、古いLinuxではOSの更新、またはソースからのローカルビルドを案内している。

PDFからテキストを抽出する|get_textの使い方

以下のコードは、日本語の本文と罫線付きの表、リンク、画像、目次を入れた3ページの検証用PDF(sample.pdf)で実行した結果です。同じPDFは次のコードで作れるので、作業フォルダで先に実行してから各コードを試してください。

import pymupdf

doc = pymupdf.open()
for i in range(3):
    page = doc.new_page()                  # 既定はA4縦(595×842ポイント)
    page.insert_text((72, 72), f"第{i+1}章 請求書の確認", fontname="japan", fontsize=16)
    page.insert_text((72, 110), "合計金額は 12,345 円です。PyMuPDF で抽出します。",
                     fontname="japan", fontsize=11)
    if i == 0:                             # 1ページ目に罫線付きの表・リンク・画像
        rows = [["品目", "数量", "金額"], ["りんご", "3", "300"], ["みかん", "5", "500"]]
        for r, row in enumerate(rows):
            for c, val in enumerate(row):
                rect = pymupdf.Rect(72 + c*150, 150 + r*24, 222 + c*150, 174 + r*24)
                page.draw_rect(rect, color=(0, 0, 0), width=0.8)
                page.insert_text((rect.x0 + 6, rect.y1 - 7), val, fontname="japan", fontsize=10)
        page.insert_link({"kind": pymupdf.LINK_URI, "from": pymupdf.Rect(72, 260, 300, 275),
                          "uri": "https://pymupdf.readthedocs.io/"})
        page.insert_text((72, 272), "公式ドキュメントへのリンク", fontname="japan", fontsize=10)
        pix = pymupdf.Pixmap(pymupdf.csRGB, pymupdf.IRect(0, 0, 40, 40), False)
        pix.clear_with(200)
        page.insert_image(pymupdf.Rect(72, 300, 152, 380), pixmap=pix)
doc.set_toc([[1, "第1章", 1], [1, "第2章", 2], [2, "2.1 詳細", 2], [1, "第3章", 3]])
doc.set_metadata({"title": "検証用PDF", "author": "issoh"})
doc.save("sample.pdf")

PDFの読み込みとページ数・本文の取得

import pymupdf

doc = pymupdf.open("sample.pdf")
print(doc.page_count)            # ページ数
print(doc.metadata["title"])     # 文書のタイトル
page = doc[0]                    # 1ページ目(0始まり)
print(page.get_text())           # 本文をプレーンテキストで
doc.close()
3
検証用PDF
第1章 請求書の確認
合計金額は 12,345 円です。PyMuPDF で抽出します。
品目
数量
金額
りんご
3
300
...

表のセルは1行ずつばらばらに出ます。表の形を保ちたいときは後述のfind_tables()を使います。doc.metadataは辞書で、title・author・creationDate・producerなどのキーを持ちます。

get_textの出力形式とブロック・単語・フォント情報

get_text()は引数で出力の形式を変えられます。座標で並べ替えたり、文字の大きさで見出しを見分けたりするときに使います。

import pymupdf

with pymupdf.open("sample.pdf") as doc:
    page = doc[0]
    # 段落(ブロック)単位:(x0, y0, x1, y1, テキスト, ブロック番号, 種別)
    for b in page.get_text("blocks")[:2]:
        print([round(v) for v in b[:4]], b[4].strip())
    # 単語単位:(x0, y0, x1, y1, 単語, ブロック, 行, 単語番号)
    print(len(page.get_text("words")))
    # フォント名・サイズまで含む辞書形式
    d = page.get_text("dict")
    span = d["blocks"][0]["lines"][0]["spans"][0]
    print(span["font"], round(span["size"], 1), span["text"])
[72, 56, 232, 75] 第1章 請求書の確認
[72, 99, 424, 112] 合計金額は 12,345 円です。PyMuPDF で抽出します。
16
Gothic 16.0 第1章 請求書の確認

座標の単位はポイント(1/72インチ)で、原点はページの左上です。"words"は空白で単語を区切るため、空白の無い日本語の文は1語として数えられます。1文字ずつの座標が要るときは"rawdict"を指定します。

キーワードの位置検索とハイライト注釈

import pymupdf

with pymupdf.open("sample.pdf") as doc:
    for page in doc:
        for rect in page.search_for("合計金額"):
            print(page.number + 1, [round(v, 1) for v in rect])
            page.add_highlight_annot(rect)   # 見つけた箇所に黄色マーカー
    doc.save("highlighted.pdf")
1 [72.0, 99.0, 116.0, 112.2]
2 [72.0, 99.0, 116.0, 112.2]
3 [72.0, 99.0, 116.0, 112.2]

search_for()はヒットした範囲をRect(左上と右下の座標)のリストで返します。ASCII文字の大文字と小文字は区別しませんが、アクセント付き文字などにはこの規則が適用されません。

表を抽出する|find_tablesの使い方

import pymupdf

with pymupdf.open("sample.pdf") as doc:
    page = doc[0]
    tabs = page.find_tables()
    print(len(tabs.tables))
    for row in tabs[0].extract():
        print(row)
Consider using the pymupdf_layout package for a greatly improved page layout analysis.
1
['品目', '数量', '金額']
['りんご', '3', '300']
['みかん', '5', '500']

罫線付きの表は行と列を保ったまま取れました。find_tables()は1.23.0で追加されたメソッドです。tabs[0].to_pandas()を使えばpandasのDataFrameにもなります。1行目の英文は、レイアウト解析用の追加パッケージpymupdf_layoutが入っていないときに1.28.2が出す案内です。罫線の無い表が多いPDFでは、pymupdf_layoutを依存パッケージとして使うPyMuPDF4LLMでの変換も試す価値があります。PyMuPDF4LLM 1.28.2で罫線の無い表を変換した結果はPyMuPDF4LLMの使い方の記事で比べていますが、表の検出結果はPDFによって変わるので、対象の文書で確かめてから採用してください。

PDFページの画像化と埋め込み画像の抽出

import pymupdf

with pymupdf.open("sample.pdf") as doc:
    pix = doc[0].get_pixmap(dpi=150)     # 150dpiでラスタライズ
    pix.save("page1.png")
    print(pix.width, pix.height)
    svg = doc[0].get_svg_image()         # ベクター形式(SVG文字列)
    open("page1.svg", "w", encoding="utf-8").write(svg)
    # 埋め込み画像を元の形式のまま取り出す
    for xref, *_ in doc[0].get_images(full=True):
        img = doc.extract_image(xref)
        open(f"img_{xref}.{img['ext']}", "wb").write(img["image"])
        print(xref, img["ext"], img["width"], img["height"])
1240 1755
30 png 40 40

A4縦(595×842ポイント)を150dpiで描くと1240×1755ピクセルになります。解像度はdpiで指定するのが簡単です。get_pixmap()はページを丸ごと描画した画像、extract_image()はPDF内の画像オブジェクトを抽出します。元の画像形式は可能な場合に保持されますが、常に元ファイルと同じ形式やバイト列になるわけではありません。古い解説記事にあるget_svg_data()というメソッドは存在せず、SVGはget_svg_image()で出力します。

PDFの目次・リンク・メタデータの取得

import pymupdf

with pymupdf.open("sample.pdf") as doc:
    print(doc.get_toc())                  # [階層, 見出し, ページ番号]
    for link in doc[0].get_links():
        print(link["kind"], link.get("uri"))
[[1, '第1章', 1], [1, '第2章', 2], [2, '2.1 詳細', 2], [1, '第3章', 3]]
2 https://pymupdf.readthedocs.io/

get_toc()はしおり(アウトライン)を階層つきのリストで返し、ページ番号は1始まりです。doc.set_toc()に同じ形のリストを渡せば、しおりを書き込めます。リンクのkindは2が外部URL、1がPDF内の別ページへの移動を表します。

PDFを編集する|結合・ページ削除・透かしの書き込み

import pymupdf

a = pymupdf.open("sample.pdf")
b = pymupdf.open("highlighted.pdf")
a.insert_pdf(b, from_page=0, to_page=0)   # bの1ページ目をaの末尾へ
a.delete_page(1)                           # 2ページ目を削除
for page in a:                             # 全ページに日本語の透かし
    page.insert_text((400, 820), "社外秘", fontname="japan", fontsize=20,
                     color=(1, 0, 0), fill_opacity=0.3)
a.save("merged.pdf", garbage=3, deflate=True)
print(a.page_count)                        # 3

日本語を書き込むときはfontname="japan"を指定します。フォントファイルを用意しなくても書き込めますが、PDFに入るのはフォント名の参照だけで、フォント本体は埋め込まれません(merged.pdfをpage.get_fonts()で調べると、拡張子欄が埋め込みなしを表すn/aでした)。表示は閲覧ソフト側の日本語フォントに頼るので、社外に配るPDFではpage.insert_font(fontname="F0", fontfile="フォントファイルのパス")でフォントを埋め込み、fontname="F0"で書き込みます。ヒラギノ角ゴシックW3を丸ごと埋め込むと1ページで5.7MBになりましたが、保存前にdoc.subset_fonts()(既定の処理ではfontTools不要)で使った文字だけに絞ると135KBに収まりました。保存時のgarbage=3は公式APIリファレンスによると、未使用オブジェクトの削除・相互参照表の詰め直し・重複オブジェクトの統合までを行う指定で、deflate=Trueは圧縮です。どちらも結合や削除のあとにファイルサイズが膨らむのを防ぎます。

スキャンPDFをOCRで読む|Tesseract連携と日本語の注意点

スキャンPDFのうち、OCRによるテキスト層が付いていない画像だけのページでは、get_text()は空文字を返します。PyMuPDFはOCRエンジンTesseractをMuPDFの中に組み込んでいて、公式FAQによれば外部に必要なのは言語データ(tessdata)だけです。macOSならbrew install tesseract tesseract-lang、Ubuntuならapt install tesseract-ocr tesseract-ocr-jpnで日本語のデータが入ります。Tesseract本体の導入と設定はTesseract OCRの使い方|インストール・日本語設定・コマンドとPython/C#連携【5.5.3対応】で詳しく扱っています。

import pymupdf

# スキャンPDFを模して、1ページ目を画像だけのPDFにする
src = pymupdf.open("sample.pdf")
pix = src[0].get_pixmap(dpi=200)
scan = pymupdf.open()
p = scan.new_page(width=src[0].rect.width, height=src[0].rect.height)
p.insert_image(p.rect, pixmap=pix)
print(repr(p.get_text()[:20]))                       # 文字は取れない

tp = p.get_textpage_ocr(language="jpn", dpi=300, full=True)
print(p.get_text(textpage=tp)[:60])
''
第1草請求
書の確認
合計金額は12,
345
円です。PyMuPDF
で抽出
...

日本語を読ませるにはlanguage="jpn"が必須で、既定の英語のままでは日本語が化けます。上の結果でも「第1章」が「第1草」になり、行の途中で改行が入りました。OCRの結果は誤読を含む前提で、金額や日付などは元の画像と照合する工程を残してください。検証環境(Homebrew版Tesseract 5.5.3)では環境変数を設定しなくても言語データが見つかりましたが、公式のインストール手順はこの自動検出に頼らないよう勧めています。本番の環境ではtessdata引数か環境変数TESSDATA_PREFIXで場所を明示してください。請求書や申込書のように帳票の項目を大量に読み取る業務では、Tesseractの精度で足りないこともあります。その場合はAI-OCR導入支援のように、帳票向けのOCRサービスと組み合わせる構成も検討対象になります。

pypdf・pdfplumberとの速度比較|公的PDFで実測

速さの差を、日本語の公的PDF2本で測りました。対象は内閣府の事業継続ガイドライン(令和5年3月)と、金融庁の中小・地域金融機関向けの総合的な監督指針(令和8年10月版)で、2026年10月13日に取得しました。各ライブラリで全ページのテキストを抽出し、次のコードで5回ずつ測った中央値を比べています。

# 事前準備: python -m pip install pymupdf==1.28.2 pypdf==6.20.1 pdfplumber==0.11.10
# 実行例: python bench.py guideline202303.pdf
import sys, time, statistics
import pymupdf, pypdf, pdfplumber

path = sys.argv[1]

def by_pymupdf():
    with pymupdf.open(path) as d:
        return "".join(p.get_text() for p in d)

def by_pypdf():
    return "".join(p.extract_text() or "" for p in pypdf.PdfReader(path).pages)

def by_pdfplumber():
    with pdfplumber.open(path) as d:
        return "".join(p.extract_text() or "" for p in d.pages)

for name, fn in [("pymupdf", by_pymupdf), ("pypdf", by_pypdf), ("pdfplumber", by_pdfplumber)]:
    times = []
    for _ in range(5):
        t = time.perf_counter()
        fn()
        times.append(time.perf_counter() - t)
    print(name, round(statistics.median(times), 2))
対象PDF PyMuPDF 1.28.2 pypdf 6.20.1 pdfplumber 0.11.10
内閣府 事業継続ガイドライン(53ページ) 0.72秒 2.06秒 6.36秒
金融庁 中小・地域金融機関向け監督指針(480ページ) 3.66秒 9.65秒 38.69秒

計測環境はIntel Core i9-9880H・macOS・Python 3.12です。同じマシンで別の作業が動いていたため値は計測のたびに振れ、480ページのpdfplumberは別の回で23秒台、PyMuPDFは2秒台のこともありました。ただし3つの速さの順位は、どの回でも変わりませんでした。

抽出結果の中身も比べました。空白と改行を取り除いた文字列で比べると、pypdfの結果はPyMuPDFと2本とも完全に一致しました。pdfplumberは文字の種類と個数は一致したものの、並び順が一部で異なりました。どの結果が原本の読み順に正しいかまでは検証していないので、この比較は速度の比較として読んでください。

数千ページを毎日処理するバッチではこの差が積み上がるため、PyMuPDFを選ぶ理由になります。数ページの帳票を1日に数十件読む程度なら、どれを使っても数秒の差にしかなりません。その場合は次章のライセンス条件で選んでください。

PyMuPDFのライセンスと商用利用|AGPLと商用ライセンスの分かれ目

PyMuPDFはAGPL-3.0とArtifexの商用ライセンスのデュアルライセンスです。公式ドキュメントによると土台のMuPDFも同じ2本立てで、PyPIのライセンス欄にも「Dual Licensed – GNU AFFERO GPL 3.0 or Artifex Commercial License」とあります。AGPLを選べば無料ですが、条件を守れないときは商用ライセンスを買う、という二択です。商用利用そのものが禁止されているわけではありません。

AGPLのままで使える場面・使えない場面

AGPLは、GPLに「ネットワーク越しに使わせる場合」の条項を足したライセンスです。AGPL-3.0の第13条は、プログラムを改変し、その改変版をネットワーク越しに利用者へ使わせる場合に、利用者がソースコードを受け取れるようにすることを求めています。Artifexのライセンス説明はさらに踏み込み、サーバー型のアプリケーションやサービスの一部としてPyMuPDFを使うなら、利用者に自社アプリケーションのソースコード全体をAGPLで開示しなければならない、という立場を明示しています。これを前提に場面を分けると次のとおりです。

使い方 AGPLのままで 判断の根拠
社内PCでのバッチ処理・分析 使える 配布もネットワーク提供もしない
ソースを公開するOSS 使える AGPLで公開すれば条件を満たす
社員向けの社内Webアプリ 要確認 利用者は社員でもネットワーク提供に当たる
社外向けのSaaS・Webサービス 全ソースを開示するなら可 開示しないなら商用ライセンス
ソース非公開のパッケージ製品 商用ライセンス 配布時にソース開示が必要

AGPLで使う場合も、Artifexは作成・変更したPDFのメタデータにArtifexのオープンソース製品とAGPLの情報を残し、producer行(作成ソフトの記録)を保持することを推奨しています。「社内だけだから大丈夫」と決める前に、そのツールに社外の人がブラウザやAPIでアクセスする経路が無いかを確認してください。判断がつかない場合は法務部門に相談するか、Artifexに問い合わせるのが確実です。

商用ライセンスの種類と価格

Artifexのライセンス説明では、商用ライセンスは利用形態ごとに個別に組み立てるとしたうえで、代表的な2種類を挙げています。

  • OEM Distribution License:製品に組み込んで配布する場合。ソース開示は不要、配布本数を年1回報告、サポート付き。
  • Subscription License:同じくソース開示は不要で、配布本数の年次報告は社内利用だけなら要らない。サポート付き。

費用はどちらも「1コピーあたりの料金と四半期ごとの最低料金」という形で、金額は公開されていません。見積もりはArtifexの営業窓口への問い合わせになります。予算化の段階では、社外提供の有無と想定する配布本数・利用者数を先に整理しておくと話が早く進みます。

PyMuPDFを選ばない方がよい場面と代わりの候補

次の条件に当てはまるなら、PyMuPDF以外を選ぶほうが合理的です。

反対に、画像化・編集・OCRまで1つのライブラリで済ませたい場合や、大量のPDFを速く処理したい場合は、PyMuPDFが第一候補です。pypdfとpdfplumberはどちらもOCRの機能を持たず、pypdfはページの画像化もできません(pdfplumberはPage.to_image()でページを画像にできます)。

よくある質問(FAQ)

PyMuPDFの読み方は?

読み方の一例は「パイミューピーディーエフ」です。PyはPython、MuPDFは土台のPDFエンジンの名前です。

pip install fitzでインストールできますか?

できません。PyPIのfitzはPyMuPDFとは別のパッケージで、2026年8月11日に公開された0.0.0は、新規インストールを意図的に失敗させる無効化パッケージです。pip install pymupdfを実行してください。

PyMuPDFは無料で商用利用できますか?

AGPL-3.0の条件を守れば無料で商用利用できます。社内でのバッチ処理や、ソースを公開するOSSでの利用がこれに当たります。自社アプリのソースをAGPLで公開せずに、配布する製品や社外向けのWebサービスに組み込むなら、Artifexの商用ライセンスが必要です。

PyMuPDFの商用ライセンスの価格はいくらですか?

公開されていません。Artifexの説明では、1コピーあたりの料金に四半期ごとの最低料金を組み合わせた体系で、利用形態ごとに個別に見積もるとしています。

PyMuPDFの代わりになるライブラリは?

テキスト抽出だけならpypdf(BSD-3-Clause)とpdfplumber(MIT)が代表的で、どちらもライセンス上の制約が緩い反面、実測では約3〜11倍の時間がかかりました。Markdownへの変換が目的ならPyMuPDF4LLM・Docling・Markerが候補です。

関連記事

お気に入りに入れた記事の一覧

一創の公式 SNS

X では毎朝の新着記事と IT ニュースの速報を、YouTube・TikTok・Instagram・LinkedIn・Facebook では記事の解説動画を配信しています。

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.29 テックブログ ソニー生命の不正アクセス:38.5万件の対象確認と窓口、停止中の手続き
  2. 2026.10.31 テックブログ osinaの情報漏洩:約23万人の対象確認とSNS連携の解除、分析ツールへ渡すデータの絞り方
  3. 2026.10.31 テックブログ 松屋の不正アクセス:237万件の対象確認と窓口、漏れたパスワードの守り方
  4. 2026.11.01 テックブログ RAGTAGの情報漏洩:延べ約120万件の対象項目と会員の備え、侵入から検知まで11日の意味
  5. 2026.05.18 テックブログ マネーフォワードで連携できない・失敗するときの対処法|エラー別の原因と再連携のやり方

RELATED POSTS 関連記事

目次