PDF4me Python SDK はじめる
の pdf4me パッケージ PyPI 公式の非同期 Python SDK のために PDF4me REST API変換、最適化、マージ、分割、スタンプ、電子署名、 OCRフォーム入力、抽出、バーコード、 ZUGFeRD 電子請求書、そして AI請求書、領収書、契約書、銀行取引明細書、税務書類、給与明細書などから文書を抽出する。
パッケージ情報
| 分野 | 価値 |
|---|---|
| パッケージ名 | pdf4me |
| 現在のバージョン | 1.0.2 (公開日:2026年9月14日) |
| ライセンス | MIT |
| Python サポート | >=3.11 (3.11、3.12、3.13、3.14でテスト済み) |
| 開発状況 | 生産/安定 |
| フレームワーク | AsyncIO |
| PyPI | pypi.org/project/pdf4me |
クライアントは内部的にはマイクロソフトによって生成されています Kiota 上に乗って httpx[http2]そのため、すべてのアクションは完全に型付けされ、型付けされた結果を返し、クライアントごとに1つの接続プールを再利用します。
前提条件
- Python バージョン3.11以降。
- A PDF4me アカウントと API 鍵。
pip(またはuv、poetryまたは、 PyPI-互換性のあるインストーラー)。
インストール
- pip
- uv
- Poetry
python -m pip install pdf4me
uv add pdf4me
poetry add pdf4me
インストール中 pdf4me 引き込む httpx[http2] そしてマイクロソフト Kiota ランタイムパッケージ(microsoft-kiota-abstractions、 microsoft-kiota-http(JSON、フォーム、テキスト、マルチパートシリアル化バックエンドを含む)。
認証する
設定する API 環境における鍵:
- Bash / Zsh
- PowerShell
- Windows CMD
export PDF4ME_API_KEY="your-api-key"
$env:PDF4ME_API_KEY = "your-api-key"
set PDF4ME_API_KEY=your-api-key
以下の例では、実行時にその変数からキーを読み取ります。また、それを直接渡すこともできます。 Pdf4meClient(api_key) シークレットマネージャーからロードすることを希望する場合は、 .env ファイル、または別のソース。
クイックスタート
最小限の有用なプログラム:クライアントを開き、1つのアクションを実行し、結果をディスクに書き込む。
import asyncio
import os
from pathlib import Path
from pdf4me import Pdf4meClient
from pdf4me.optimize import optimize
async def main() -> None:
api_key = os.environ.get("PDF4ME_API_KEY")
if not api_key:
raise SystemExit("Set PDF4ME_API_KEY before running this example.")
source = Path("input.pdf")
async with Pdf4meClient(api_key) as client:
result = await optimize(
client, source.read_bytes(), doc_name=source.name
)
Path("optimized.pdf").write_bytes(result)
print("Saved optimized.pdf")
if __name__ == "__main__":
asyncio.run(main())
注目すべき3つの点:
- 顧客一人につき、多数の電話がかかってくる。 の
async with Pdf4meClient(...)コンテキストは、httpx接続プール。内部のすべての呼び出しで同じクライアントを再利用します。mainアクションごとに1つずつ開くのではなく。 - アクションは自由関数であり、クライアントメソッドではありません。 各アクションをそのモジュールからインポートします(
from pdf4me.optimize import optimize、from pdf4me.pdf import get_pdf_metadata) そして、クライアントを最初の引数として渡します。これにより、インターフェースがフラットになり、エディタで使用されていないモジュールをツリーシェイキングできるようになります。 - 入力バイト数、出力バイト数。 ファイルを返すアクション
bytesメタデータを生成するアクションは、型付きデータクラスを返します。ディスク上にステージングは行われないため、ファイルシステムにアクセスすることなく、アクション間で結果をパイプで渡すことができます。
さらに2つのよくある電話
スタンプ PDF:
from pdf4me.edit import StampAlignX, stamp
stamped = await stamp(client, data, text="DRAFT", align_x=StampAlignX.Center)
Path("stamped.pdf").write_bytes(stamped)
読む PDF メタデータ:
from pdf4me.pdf import get_pdf_metadata
metadata = await get_pdf_metadata(client, data, doc_name="input.pdf")
print(metadata.page_count)
列挙型として渡されるすべての値(例: StampAlignX.Center) は型付き定数なので、 IDE 法的値を自動補完し、編集時にmypyまたはpyrightがタイプミスを検出します。
ボックスには何が同梱されているか(18モジュールにわたる106のアクション)
| モジュール | 行動 | インポート例 |
|---|---|---|
pdf4me.ai_document_extraction | 14 | from pdf4me.ai_document_extraction import extract_invoice_data |
pdf4me.barcode | 7 | from pdf4me.barcode import create_barcode, read_barcodes |
pdf4me.convert | 13 | from pdf4me.convert import html_to_pdf, url_to_pdf, word_to_pdf |
pdf4me.edit | 7 | from pdf4me.edit import stamp, add_page_number, add_html_header_footer |
pdf4me.excel | 1 | from pdf4me.excel import excel_to_pdf |
pdf4me.extract | 8 | from pdf4me.extract import extract_text, extract_attachments |
pdf4me.find_search | 2 | from pdf4me.find_search import find_and_replace_text |
pdf4me.forms | 2 | from pdf4me.forms import fill_pdf_form, get_form_fields |
pdf4me.generate | 6 | from pdf4me.generate import generate_document_single |
pdf4me.image | 13 | from pdf4me.image import resize_image, add_watermark_to_image |
pdf4me.merge_split | 5 | from pdf4me.merge_split import merge_pdfs, split_pdf_by_barcode |
pdf4me.optimize | 1 | from pdf4me.optimize import optimize |
pdf4me.organize | 5 | from pdf4me.organize import rotate_pdf, extract_pages |
pdf4me.pdf | 16 | from pdf4me.pdf import get_pdf_metadata, sign_pdf |
pdf4me.pdf4me | 1 | from pdf4me.pdf4me import ping |
pdf4me.security | 2 | from pdf4me.security import protect_document, unlock_pdf |
pdf4me.word | 2 | from pdf4me.word import add_tracked_changes |
pdf4me.zugferd | 1 | from pdf4me.zugferd import create_zugferd_invoice |
上記のインポートパスはモジュールサーフェスの例です。 PDF4me REST API 参照 各アクションの完全なパラメータリストとソースリポジトリについては、 pdf4me/ お使いのバージョンがエクスポートする正確なシンボル名に対応するパッケージツリー。
次はどこへ行く?
トラブルシューティング
ModuleNotFoundError: No module named 'pdf4me'。 パッケージは、スクリプトを実行しているインタープリタとは別のインタープリタにインストールされています。 python -m pip show pdf4me 同じ仮想環境内で。 pyenv または condaまず環境をアクティブ化してください。
SystemExit: Set PDF4ME_API_KEY before running this example. 環境変数はプロセスから見えません。シェルを再起動してください。 exportまたは、キーを直接渡します Pdf4meClient("your-api-key")Windowsでは、次の点に注意してください。 set CMD 内部ではセッション間で保持されません。 setx 永続的な価値のために。
httpx.HTTPStatusError: 401 Unauthorized。 の API キーは存在しますが拒否されました。 PDF4me ダッシュボード そしてもう一度試してください。
一定期間の非アクティブ状態の後、最初の呼び出しが遅い。 HTTP/2 キープアライブはアイドル時にリセットされます。 Pdf4meClient ファイルごとに新しいファイルを開くのではなく、バッチジョブの実行期間中ずっとファイルを開く。
asyncio.run() cannot be called from a running event loop。 あなたは中にいます Jupyter または既にイベントループを実行しているフレームワーク。 await main() ノートブックセルの最上位レベルで記述するか、フレームワーク独自の非同期エントリポイントでコードをラップします。