Skip to main content

Automatically convert a PDF into a fillable form

Project description

CommonForms

🪄 Automatically convert a PDF into a fillable form.

Pipeline

This repo contains three things:

  1. the pip-installable commonforms package, which has a CLI and API for converting PDFs into fillable forms
  2. the FFDNet-S and FFDNet-L models from the paper CommonForms: A Large, Diverse Dataset for Form Field Detection
  3. the preprocessing code for the CommonForms dataset, which is hosted on HuggingFace: https://huggingface.co/datasets/jbarrow/CommonForms

Installation

CommonForms can be installed with either uv or pip, feel free to choose your package manager flavor:

pip install commonforms

or

uv install commonforms

Once it's installed, you should be able to run the CLI command on ~any PDF.

CommonForms CLI

The simplest usage will run inference on your CPU using the default suggested settings:

commonforms <input.pdf> <output.pdf>
Input Output
Input PDF Output PDF

Command Line Arguments

Argument Type Default Description
input Path Required Path to the input PDF file
output Path Required Path to save the output PDF file
--model str FFDNet-L Model name (FFDNet-L/FFDNet-S) or path to custom .pt file
--keep-existing-fields flag False Keep existing form fields in the PDF
--use-signature-fields flag False Use signature fields instead of text fields for detected signatures
--device str cpu Device for inference (e.g., cpu, cuda, 0)
--image-size int 1600 Image size for inference
--confidence float 0.3 Confidence threshold for detection

CommonForms API

In addition to the CLI, you can use

from commonforms import prepare_form

prepare_form(
    "path/to/input.pdf",
    "path/to/output.pdf"
)

All of the above arguments are keyword arguments to the prepare_form function.

Dataset Prep

🚧 Code for dataset prep exists in the dataset folder.

Citation

If you use the tool, models, or code in an academic paper, please cite the CommonForms paper:

@misc{barrow2025commonforms,
  title        = {CommonForms: A Large, Diverse Dataset for Form Field Detection},
  author       = {Barrow, Joe},
  year         = {2025},
  eprint       = {2509.16506},
  archivePrefix= {arXiv},
  primaryClass = {cs.CV},
  doi          = {10.48550/arXiv.2509.16506},
  url          = {https://arxiv.org/abs/2509.16506}
}

If you use it in a non-academic setting, please reach out to the author (joseph.d.barrow [at] gmail.com)! I love to hear when people are using my work!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

commonforms-0.1.1.tar.gz (64.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

commonforms-0.1.1-py3-none-any.whl (64.9 MB view details)

Uploaded Python 3

File details

Details for the file commonforms-0.1.1.tar.gz.

File metadata

  • Download URL: commonforms-0.1.1.tar.gz
  • Upload date:
  • Size: 64.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.16

File hashes

Hashes for commonforms-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5e4d2d74c414a80c8ab58f65680c385c45a03178de6b0d802a71fd523576b030
MD5 ef0362ed4b69a45fa2522ed83f7ef084
BLAKE2b-256 05059daaddb70afaccb882c4a6b361f46750f4ef12fcee31f4e920d5bbf387b8

See more details on using hashes here.

File details

Details for the file commonforms-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for commonforms-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d5ae934f49b47d102c35ffb3c6994d53b91f5b9d94758131b3000dc713f9449
MD5 b909c577707c572ee3beb2d50fc0c4e0
BLAKE2b-256 412b5210ea5932432c72c69ec1ea3d623589a0cf0176f1e2993f3dbce57a79da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page