Python / Rust port of PaperBack
- Python 78.1%
- Rust 21.9%
These are local-only directories that shouldn't be in the repo. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| rust | ||
| src/mirustech/paperbak | ||
| tests | ||
| .gitignore | ||
| pyproject.toml | ||
| README.md | ||
| SPEC.md | ||
| uv.lock | ||
PaperBack - Python Port
A Python 3.12+ CLI tool for encoding files to high-density printable bitmaps and decoding scanned images back to files. Compatible with the original Windows PaperBack v1.10 format.
Installation
pip install mirustech-paperbak
Or from source:
git clone https://github.com/yourusername/paperbak.git
cd paperbak
pip install -e .
Usage
Encode a file to printable bitmap(s)
paperbak encode myfile.txt -o backup.png
paperbak encode important.zip --redundancy 8 --dpi 300
Decode scanned image(s) to restore a file
paperbak decode scan.png -o restored.txt
paperbak decode page1.png page2.png page3.png
Analyze a scanned image (debug)
paperbak analyze scan.png
Features
- Encodes any file to printable black-and-white bitmap images
- Uses Reed-Solomon error correction (can correct up to 16 byte errors per block)
- Configurable redundancy with XOR recovery blocks
- Supports bzip2 compression
- Handles rotated/skewed scans up to ±7 degrees
- Multi-page support for large files
Technical Details
- Block size: 32×32 dots = 128 bytes per block
- Useful data per block: 90 bytes
- Error correction: RS(255, 223) with 32 parity bytes
- Default redundancy: 5 data blocks per 1 recovery block
- Typical capacity at 200 DPI: ~500 KB per page
License
GPL-3.0-or-later (compatible with original PaperBack license)
Credits
Based on PaperBack v1.10 by Oleh Yuschuk.