form-filler について
form-fillerは、構造化データをPDFフォームに入力するPythonツールおよびコマンドラインプログラムです。フィールドの種類を検出し、入力キーを対応付けて、データファイルから複数のフォームを処理できます。
主な機能
- 01フォームフィールドの自動検出
- 02テキスト、チェックボックス、ドロップダウン、ラジオボタン対応
- 03JSON、CSV、辞書形式の入力
- 04データキーとフィールドの対応付け
- 05フォームの一括入力
- 06入力済みPDFのフラット化
- 07フィールド名と種類の一覧表示
活用シーン
- 01構造化データから申請用PDFに入力
- 02CSVデータで複数フォームを処理
- 03データ準備前にフォームの項目を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill form-fillerインストール後、Claude Code で/form-fillerを入力して読み込まれたか確認します。
同梱ファイルscripts/form_filler.pyscripts/requirements.txt
詳細
フォーム入力
構造化データを使用して、PDF フォームにプログラムで入力します。
機能
- フィールド検出:フォームフィールドを自動検出します
- 複数のフィールドタイプ:テキスト、チェックボックス、ドロップダウン、ラジオボタン
- データソース:JSON、CSV、辞書形式の入力
- 一括入力:データファイルから複数のフォームに入力します
- フィールドマッピング:データキーをフィールド名にマッピングします
- フラット化オプション:編集できない PDF に変換します
- フォーム情報:すべてのフィールドとそのタイプを一覧表示します
クイックスタート
from form_filler import FormFiller
filler = FormFiller()
# Load form
filler.load("application_form.pdf")
# Fill fields
filler.fill({
"name": "John Doe",
"email": "[email protected]",
"date": "2024-01-15",
"agree": True # Checkbox
})
# Save filled form
filler.save("filled_form.pdf")
CLI の使用方法
# Fill from JSON data
python form_filler.py --input form.pdf --data data.json --output filled.pdf
# List form fields
python form_filler.py --input form.pdf --list-fields
# Fill from CSV (batch)
python form_filler.py --input form.pdf --batch data.csv --output-dir filled/
# Flatten filled form
python form_filler.py --input form.pdf --data data.json --flatten --output filled.pdf
# With field mapping
python form_filler.py --input form.pdf --data data.json --mapping mapping.json -o filled.pdf
API リファレンス
FormFiller クラス
class FormFiller:
def __init__(self)
# Loading
def load(self, filepath: str) -> 'FormFiller'
# Field Operations
def list_fields(self) -> List[Dict]
def get_field_info(self, field_name: str) -> Dict
def get_field_value(self, field_name: str) -> Any
# Filling
def fill(self, data: Dict) -> 'FormFiller'
def fill_field(self, name: str, value: Any) -> 'FormFiller'
def fill_from_json(self, filepath: str) -> 'FormFiller'
def fill_from_csv_row(self, row: Dict) -> 'FormFiller'
# Field Mapping
def set_mapping(self, mapping: Dict[str, str]) -> 'FormFiller'
# Output
def save(self, filepath: str, flatten: bool = False) -> str
def flatten(self) -> 'FormFiller'
# Batch Processing
def batch_fill(self, input_form: str, data_file: str,
output_dir: str) -> List[str]
フィールドタイプ
テキストフィールド
filler.fill({
"first_name": "John",
"last_name": "Doe",
"address": "123 Main St"
})
チェックボックス
filler.fill({
"agree_terms": True,
"subscribe": False
})
ラジオボタン
filler.fill({
"gender": "male", # Value of selected option
"payment_method": "credit_card"
})
ドロップダウン
filler.fill({
"country": "USA",
"state": "California"
})
フィールドの検出
fields = filler.list_fields()
# Returns:
# [
# {"name": "first_name", "type": "text", "required": True},
# {"name": "agree_terms", "type": "checkbox", "value": False},
# {"name": "country", "type": "dropdown", "options": ["USA", "Canada", "UK"]}
# ]
フィールドマッピング
データキーをフォームフィールド名にマッピングします:
filler.set_mapping({
"fname": "first_name", # data key -> form field
"lname": "last_name",
"addr": "address_line_1"
})
filler.fill({
"fname": "John", # Uses mapping
"lname": "Doe"
})
一括入力
CSV から
# CSV format:
# first_name,last_name,email
# John,Doe,[email protected]
# Jane,Smith,[email protected]
filler.batch_fill(
input_form="application.pdf",
data_file="applicants.csv",
output_dir="filled_forms/"
)
# Creates: filled_forms/application_0.pdf, application_1.pdf, ...
JSON 配列から
# JSON format:
# [
# {"first_name": "John", "last_name": "Doe"},
# {"first_name": "Jane", "last_name": "Smith"}
# ]
filler.batch_fill(
input_form="form.pdf",
data_file="data.json",
output_dir="output/"
)
依存関係
- PyMuPDF>=1.23.0
- pillow>=10.0.0
- pandas>=2.0.0
コメント
Markdown 対応