This is an example note. Replace it with your own text or choose a file.
A photo can hold a single symbol or a whole page. Keep the sheet flat and evenly lit; if a symbol is not picked up, move closer.
How a symbol is built
Every module is white, black or magenta, so it carries one trit (1.585 bits) instead of one bit. Five modules form one symbol of GF(3⁵), the field the Reed–Solomon code works in, so a damaged module costs exactly one code symbol.
Magenta is a single process ink. The PDF asks for pure magenta and pure black, so no module depends on two inks landing in register.
- Finder patterns in all four corners, read as 1:1:3:1:1 runs from any angle. The top-left one has a magenta core, which fixes orientation and gives a colour reference. If one finder is destroyed, the other three and the alignment grid still locate the symbol.
- Alignment marks on a regular grid between the finders. After the first perspective fit, each mark is located again and the sampling grid is bent to follow curled or creased paper.
- Format word, stored twice: size and error-correction level, protected by its own RS(8,2) code.
- Data: interleaved Reed–Solomon blocks, whitened with a fixed mask so the three colours stay balanced.
Layers, from file to paper
| Layer | What it does |
|---|---|
| Container | File name, type, length and CRC-32, then the data compressed with DEFLATE (RFC 1951) when that makes it smaller. |
| Fountain code | The container is cut into K equal blocks. Symbols 1…K carry the blocks themselves; every further symbol carries a random linear mix over GF(256). Any K independent symbols rebuild the file, in any order. |
| Packet | 12 bytes of framing per symbol: document id, total length, packet number, CRC-32. |
| Reed–Solomon | Blocks of up to 242 symbols over GF(243), interleaved across the matrix. Levels L, M and H spend about 10%, 20% and 33% on parity. |
| Trit packing | 19 bits per 12 trits, 99.9% of the theoretical 1.585 bits per module. |
| Matrix | 31 × 31 to 151 × 151 modules in 16 sizes, with a one-module quiet zone on each side (two modules between neighbours on a sheet). |
Capacity per symbol
Bytes of packet per symbol at each error-correction level. Subtract 12 for the payload.
What the reader was tested against
These figures come from a synthetic camera (random rotation and tilt, 0.5–1.1 px blur, Bayer sensor mosaic, noise, uneven warm lighting, JPEG at quality 70–95), 60 frames per row at 79 × 79, level M. They are not field trials with real printers and phones.
| Camera pixels per module | Symbols read |
|---|---|
| 4 or more | 60 of 60 |
| 3.5 | 48 of 60 |
| 3 | 14 of 60 |