Python / Rust port of PaperBack
  • Python 78.1%
  • Rust 21.9%
Find a file
Joerg Ziefle 0678552986
Remove orig-src, .claude, .serena from tracking
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>
2025-12-21 00:10:05 +01:00
rust Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00
src/mirustech/paperbak Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00
tests Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00
.gitignore Remove orig-src, .claude, .serena from tracking 2025-12-21 00:10:05 +01:00
pyproject.toml Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00
README.md Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00
SPEC.md Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00
uv.lock Initial commit: paperbak QR code backup system 2025-12-21 00:08:24 +01:00

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.