このスキルは、ユーザーが「PDFを作成」「PDFからテキストを抽出」「PDFを結合」「PDFフォームに記入」「PDFを分割」「PDFからテーブルを抽出」「PDF OCR」「PDFを暗号化」「PDFメタデータを編集」などを要求した際に使用する。
/plugin marketplace add tadokoro-ryusuke/cc-plugins/plugin install ms-office-suite@cc-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/advanced-reference.mdreferences/forms.mdscripts/check_bounding_boxes.pyscripts/check_fillable_fields.pyscripts/convert_pdf_to_images.pyscripts/create_validation_image.pyscripts/extract_form_field_info.pyscripts/fill_fillable_fields.pyscripts/fill_pdf_form_with_annotations.pyPDFファイルの操作に必要なPythonライブラリとコマンドラインツールを提供する。
# コマンドラインツール
brew install poppler qpdf # macOS
apt-get install poppler-utils qpdf # Ubuntu/Debian
# Pythonライブラリ
pip install pypdf pdfplumber reportlab pdf2image pillow pytesseract
# レイアウトを保持してテキスト抽出
pdftotext -layout input.pdf output.txt
import pdfplumber
with pdfplumber.open("input.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
import pdfplumber
import pandas as pd
with pdfplumber.open("input.pdf") as pdf:
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
df = pd.DataFrame(table[1:], columns=table[0])
print(df)
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
# 日本語フォント登録(必要に応じて)
# pdfmetrics.registerFont(TTFont('IPAGothic', '/path/to/ipag.ttf'))
c = canvas.Canvas("output.pdf", pagesize=A4)
c.drawString(100, 750, "Hello, PDF!")
c.save()
qpdf --empty --pages input1.pdf input2.pdf -- merged.pdf
from pypdf import PdfWriter
writer = PdfWriter()
writer.append("input1.pdf")
writer.append("input2.pdf")
writer.write("merged.pdf")
# 各ページを個別ファイルに
qpdf input.pdf --split-pages output_%d.pdf
# 特定ページを抽出
qpdf input.pdf --pages . 1-3,5 -- output.pdf
pdfimages -j input.pdf output_prefix
from pdf2image import convert_from_path
import pytesseract
images = convert_from_path("scanned.pdf")
for i, image in enumerate(images):
text = pytesseract.image_to_string(image, lang='jpn') # 日本語
print(f"Page {i+1}:\n{text}")
PDFフォームの記入方法は references/forms.md を参照。2つのパスがある:
scripts/check_fillable_fields.py で確認後、scripts/fill_fillable_fields.py を使用scripts/fill_pdf_form_with_annotations.py でアノテーションとして追加references/advanced-reference.mdreferences/forms.md| 操作 | ツール/コマンド |
|---|---|
| テキスト抽出 | pdftotext, pdfplumber |
| テーブル抽出 | pdfplumber |
| PDF作成 | reportlab |
| 結合 | qpdf, pypdf |
| 分割 | qpdf |
| 画像抽出 | pdfimages |
| OCR | pytesseract + pdf2image |
| フォーム記入 | scripts/ 内のスクリプト |
| 暗号化/復号 | qpdf |
| メタデータ | pypdf |