スキル

pdf:Python で PDF ファイルを扱う

ユーザーが PDF に言及したり PDF の作成を求めたりしたときに使う。まず pypdf でローカルファイルを読み取り専用で開きページ数を確認し、フォーム記入は FORMS.md に切り替える。

公式ソース · pdf

インストール

from pypdf import PdfReader, PdfWriter

誰向けか

ユーザーが .pdf ファイルに言及したとき、または PDF の作成を求めたときは、この pdf ガイドを使う。対象はテキスト/表の読み取りや抽出、結合、分割、回転、透かし、新規作成、フォーム記入、暗号化/復号、画像抽出、そしてスキャン原稿の OCR による検索である。特定のリーダーの代替ではなく、指名されていない商用サービスを代わりに選ぶ役でもない。

より適切な前提は、これらの基本操作を Python ライブラリとコマンドラインツールで行うつもりであること。資料は高度な機能、JavaScript ライブラリ、より細かい例は REFERENCE.md を見るよう書いてあるので、この入門を完全な手引きだと思わないこと。資料は利用可能なエージェント製品の一覧を出しておらず、Python と JavaScript を互いに排他的な唯一のランタイムと捉えてはいけない。公式ガイドページは

https://raw.githubusercontent.com/anthropics/skills/main/skills/pdf/SKILL.md

3 分で最初の試行を終える

推奨する最初の経路は、資料にある pypdf の読み取り例であり、別のインストーラを自作することではない。前提:このマシンにすでに Python があり、from pypdf import PdfReader, PdfWriter を実行できること。インポートに失敗したらインポートエラーで止め、PDF を書き換えない。

低リスクな最初の試行:すでに存在するローカルの document.pdf を用意する。ファイルがあることを確認してから、読み取り専用で開き、ページ数を印刷する:

from pypdf import PdfReader, PdfWriter
reader = PdfReader("document.pdf")
print(f"Pages: {len(reader.pages)}")

成功の合図:端末が Pages: に続けて数字を出すこと。これは読み取りであり、結合、暗号化、上書きではない。ファイルがなければオープン失敗で止め、指名されていない PDF を新規作成したりダウンロードしたりしない。PdfWriter は同じ行でインポートされるが、最初はディスク書き込みを呼ばない。

利用例

例 1:ローカル PDF のページ数を確認し、それを後続の抽出の起点にする。操作は上の PdfReader("document.pdf") と len(reader.pages) である。資料は読み取りとテキスト/表の抽出を能力として挙げているが、抜粋が完全に書いているのはページ数の印刷だけなので、最初の完了基準はページ数を得ることである。テキストも必要なら、同じページに戻って対応する呼び出しを探し、ページ数の出力を全文抽出済みと書いてはいけない。

例 2:PDF フォームを記入する必要がある。資料は次のように書く:If you need to fill out a PDF form, read FORMS.md and follow its instructions。したがってこの経路の最初の一歩は FORMS.md を開き、その手順に従うことであり、このページで記入フィールドや保存コマンドを発明することではない。完了基準は FORMS.md に従って始めたことであり、フォームが送信済みだと仮定することではない。本当の目標がスキャン原稿の OCR なら、資料は別に pip install pytesseract pdf2image と convert_from_path を出している。それは追加依存が必要な別経路であり、フォーム記入と一歩に混ぜない。

利用上の境界

基本操作は Python ライブラリとコマンドラインツール向けである。高度な内容、JavaScript、詳細な例は REFERENCE.md を指し、このページでは展開していない。OCR には pytesseract と pdf2image が必要で、先にページを画像に変換する。フォーム記入は必ず FORMS.md を通る。

資料はグラフィカルなインストーラパッケージもクライアント一覧も出していない。結合、分割、回転、透かし、暗号化、画像抽出は能力として名指しされているが、抜粋はそれらの完全なコマンドを出していないので、すでにコピー可能な手順として書いてはいけない。ディスク書き込み、暗号化、または元ファイルの上書きの前に、対象パスと副作用を確認してから実行する。