Balloon a PDF print, classify callouts, and fill inspection sheets. Free, open source, fully offline.
- Click a callout to balloon it - automatically fills number/nominal/tolerance/fits/etc
- Works fully offline
- Handles dimensions, threads, GD&T, fits, surface finish, holes, and more
- Fills in tolerances automatically (ISO 2768, ISO 286 fits)
- Enter measurements in the program directly, including expressions for differential measurements
- Export inspection sheet and the ballooned PDF
- Flag out-of-tolerance results
- Custom trained region and symbol detector models included
- Can also leverage a VLM (requires internet to download model from Hugging Face)
- Linux, Windows, or macOS. Prebuilt binaries need no Python.
- From source: Python 3.10 to 3.12.
Download the binary for your OS from Releases. No Python needed.
- Windows: run
Bubbler.exe - Linux:
chmod +x Bubbler-x86_64.AppImage && ./Bubbler-x86_64.AppImage(may needlibfuse2) - macOS: open
Bubbler.app(unsigned, right-click then Open)
From source: see DEV.md.
Open a drawing, click to place bubbles.
You can measure in the program or externally.
Save exports the ballooned PDF and .xlsx inspection report sheet.
Feel free to fork this project or contribute a PR. Build and Windows packaging instructions are in the developer readme DEV.md.
This project is licensed under the GPLv3+
See LICENSE file for details.
Full license texts for all bundled and depended-on components are in the Third Party Licenses directory.
Bundled assets:
- Lucide - ISC License (portions derived from Feather, MIT) - Toolbar and ribbon icons, recolored at runtime into Qt icons
- Florence-2-base-ft - MIT License - Optional VLM callout reader (model weights)
- PaddleOCR-VL / PP-OCRv4 - Apache-2.0 License - Optional VLM/OCR callout readers (model weights)
Runtime dependencies (installed via pip, compiled into the binaries by Nuitka):
- PyMuPDF - AGPL-3.0 License (or commercial from Artifex) - PDF parsing, rendering, and text/word-box extraction
- PySide6 (Qt for Python) - LGPL-3.0 License - GUI framework. Qt ships several licenses Third Party Licenses/pyside6
- openpyxl - MIT License - Reading and writing the
.xlsxinspection sheet - NumPy - BSD-3-Clause License - Array and numerical operations
- ONNX Runtime - MIT License - Runs the detector and reader
.onnxmodels (CUDA / DirectML / CPU execution providers) - RapidOCR - Apache-2.0 License - OCR engine (ships its own ONNX models)
- PaddleOCR - Apache-2.0 License - PP-OCRv4 OCR engine and PaddleOCR-VL reader
- PaddlePaddle - Apache-2.0 License - Runtime backing the PaddleOCR readers
- tokenizers - Apache-2.0 License - Tokenizer for the Florence-2 reader
Training also uses
Ultralytics (AGPL-3.0),
PyTorch (BSD-3-Clause), onnx, onnxsim,
and pillow.
The detector models shipped under bubbler/models/ (gdt_symbols.onnx,
gdt_regions.onnx) are trained by InPoint Automation and released under the
project's GPLv3+.
This project was developed by InPoint Automation Sp. z o.o. https://inpointautomation.com/
See CHANGELOG.md for the full version history.

