mcpField
F
form-filler

form-filler

github.com/dkyazzentwatwaドキュメント12470 回インストール29 週間前に更新
リポジトリ

form-filler について

form-fillerは、構造化データをPDFフォームに入力するPythonツールおよびコマンドラインプログラムです。フィールドの種類を検出し、入力キーを対応付けて、データファイルから複数のフォームを処理できます。

主な機能

  1. 01フォームフィールドの自動検出
  2. 02テキスト、チェックボックス、ドロップダウン、ラジオボタン対応
  3. 03JSON、CSV、辞書形式の入力
  4. 04データキーとフィールドの対応付け
  5. 05フォームの一括入力
  6. 06入力済みPDFのフラット化
  7. 07フィールド名と種類の一覧表示

活用シーン

  1. 01構造化データから申請用PDFに入力
  2. 02CSVデータで複数フォームを処理
  3. 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

コメント