Speech Bubble Density Estimator
Estimate and rank dialogue-heavy comic pages with configurable local contrast analysis and no OCR.
The problem it solves
Speech-Bubble Density Estimator [](https://github.com/loganpendragonmultiverse/speech-bubble-density-estimator/actions/workflows/ci.yml)
Who Speech Bubble Density Estimator is for
- Collectors and readers who need a conservative way to organize or inspect their own files.
- Users working with comics, images, dialogue density who want the documented v1.1.0 behavior.
- People who prefer an open-source release with visible limitations, source, and license terms.
Intended result
Estimate and rank dialogue-heavy comic pages with configurable local contrast analysis and no OCR.
This summary is reconciled from the current catalog and repository documentation.
Features in v1.1.0
Capabilities below come from the current project README and release documentation.
[](https://github.com/loganpendragonmultiverse/speech-bubble-density-estimator/actions/workflows/ci.yml)
Speech-Bubble Density Estimator scans local page images or a CBZ and measures blocks that combine a predominantly light background with dark high-contrast marks. The resulting review score helps locate pages that may be dialogue-heavy, balanced, or art-heavy without uploading images or running OCR.
Verified examples
Screenshots are shown only when the current README references a local source image. Otherwise, repository example files are linked directly.
Platforms and implementation
The public release claims only the cataloged platforms and technologies.
Supported platforms
- Windows
- macOS
- Linux
Built with
- Python
- Pillow
Quick start
The shortest documented path into the current release.
python -m pip install .
bubble-density pages/
bubble-density issue.cbz --format json --output density.json
bubble-density issue.cbz --margin-percent 5 --block-size 24 --smoothing-window 5PNG, JPEG, WebP, BMP, TIFF, and GIF pages are supported. Reports include image dimensions, candidate-block counts, density scores, and per-document class totals. CBZ paths, member counts, and uncompressed bytes are limited before decoding.
Version 1.1 adds configurable art/dialogue thresholds, optional page-margin exclusion, median and quartile statistics, ranked art-heavy/dialogue-heavy page lists, and a rolling density value that makes dialogue-heavy stretches easier to review. Use --art-threshold and --dialogue-threshold to calibrate a specific visual style.
This is a visual heuristic, not speech-bubble detection or accessibility certification. White artwork, captions, sound effects, dark balloons, unusual lettering, low contrast, color choices, and scanned paper can change the score. It does not recognize words, speakers, languages, panels, or reading order. Requires Python 3.10 or newer.
Part of the Logan Pendragon Forge open-source collection. Licensed under the [MIT License](LICENSE).
Current limitations
These boundaries are part of the product and prevent the page from implying unverified capability.
The current v1.1.0 release is bounded by the behavior documented in its README and changelog. It does not claim unsupported platforms, automatic interpretation, or results beyond the evidence it produces.
Privacy and licensing
Review the actual data boundary before using a tool with sensitive inputs.
Privacy and safety
No privacy behavior beyond the current repository documentation is claimed. Review the source, security policy, and input/output behavior before using sensitive material.
License and release
Speech Bubble Density Estimator is published under MIT. The current cataloged release is v1.1.0, published 2026-07-27.
Related projects
Related projects are selected deterministically from shared catalog tags, category, and implementation technologies—not popularity or paid placement.
Speech Bubble Density Estimator v1.1.0
Use the tagged release for downloads and release notes. Use the repository for source, issues, contribution guidance, security reporting, and complete documentation.
Page source: current Forge catalog plus README and CHANGELOG from the canonical local repository. Fingerprint: 9030d18d00b81af0.