Installable package: python3.11 -m pip install zpe-ink.
Current release: 0.1.1 on PyPI.
Source: Zer0pa/ZPE-Ink.
python3.11 -m pip install zpe-inkFor full install, smoke, source, and developer commands, click here.
|
00 · ZPE-INK · STROKE PROTOCOL RESEARCH-READY · PyPI STALE
Stylus stroke codec · ZPE-Ink · PyPI zpe-ink 0.1.1 stale · github.com/Zer0pa/ZPE-Ink When a stylus draws, the mark carries more than its shape — it carries the pressure of the hand, the angle of the pen, the rhythm of how it moved. That information has always been in digital ink. It has never had a codec that kept it exactly. ZPE-Ink is a Python .zpink encoder that seals the full stroke — x, y, pressure, tilt, azimuth — and returns it with 0.00 px Hausdorff error on three public handwriting corpora. The hand's rhythm, kept. |
| Scope: tested handwriting corpora. Full stylus stroke replay includes x, y, pressure, tilt, and azimuth; PyPI remains stale. |
|
01 · THE GAP STORED, NOT KEPT
|
|
02 · MARKETS ADJACENT FORECASTS
Digital pen / handwriting market '30 · $5.3B
Digital pen '30 · $7.2B
Digital writing instruments '30 · $6.2B
E-learning content tools '30 · $38.1B
Handwriting recognition software est. $2.1B
Every stylus that captures a stroke moves through these markets; ZPE-Ink is the exact-geometry record underneath them.
|
|
03 · VALUE OF MARKET
$6.2B
2030 digital writing instruments; ZPE-Ink is the stroke record three public corpora proved exact.
|
04 · INSIGHT
|
|
05.1 · CURRENT TECH STORED AND FLATTENED
A stylus measures pressure and angle dozens of times a second, then a bitmap takes over and flattens the motion into pixels. The hand's rhythm exists in the device for a moment, then disappears into the file. |
05.2 · OUR TECH KEEP THE FULL STROKE
ZPE-Ink keeps the full stroke. It seals x, y, pressure, tilt, and azimuth into a CRC-framed .zpink packet and returns every coordinate unchanged — 0.00 px Hausdorff error on UJI, CROHME, and DigiLeTs. Zero-channel suppression raises CROHME mean compression from 1.52× to 1.76× when a device omits tilt. The hand's motion, intact. |
|
05.3 · BENCHMARKS PUBLIC CORPUS DATA
UJI1.61× · 1,364 samples
CROHME1.44× · 90 samples
Hausdorff0.00px
CRCPASSpublic corpus data
UJI 1.61× PASS
CROHME 1.44× PASS
DigiLeTs 1.09× PASS
Scope: UJI, CROHME, DigiLeTs, MathWriting, QuickDraw. IAM/UNIPEN skipped.
|
|
06 · MEASUREMENT CORPUS CHECK SUITE
|
06.1 · COMPARATIVE PERFORMANCE STROKE BYTES PER SAMPLE
.zpink UJI 1.61×
.zpink CROHME 1.44×
.zpink DigiLeTs 1.09×
gzip / zlib aggregate 3.33× / 3.73×
Same int32 (x, y, pressure, tilt, azimuth) buffer across every corpus. On the QuickDraw plus CROHME aggregate, .zpink compresses 3.82×, gzip 3.33×, zlib 3.73×. IAM is registration-limited; UNIPEN is host-unavailable.
|
|
07 · KEY METRICS MEASURED PUBLIC EVIDENCE
|
|
07.1 · UJI
1.61×
vs raw · 1,364 UJI samples
|
|
07.2 · CROHME
1.44×
ICFHR package · 90 CROHME samples
|
|
07.3 · DIGILETS
1.09×
real corpus · 180 DigiLeTs samples
|
|
07.4 · HAUSDORFF
0.00px
all measured corpora · exact roundtrip
|
|
07.5 · PYPI
v0.1.1
PyPI stale · next release closes the version skew
|
|
08 · STROKE FIDELITY ENCODE AND DECODE
|
|
08.1 · WHAT THE CODEC KEEPS ALL FIVE CHANNELS
Committed artifacts show bit-exact encode-decode on generated fixtures: int32 (x, y, pressure, tilt, azimuth) buffers seal into a CRC-framed .zpink packet and exit without coordinate change — 0.00 px Hausdorff error confirmed on UJI, CROHME, DigiLeTs, MathWriting, and QuickDraw. CRC rejects malformed payloads before decode. Zero-channel suppression raises CROHME mean compression from 1.52× to 1.76× without altering decoded strokes — a device that omits tilt or azimuth gets better compression, not worse. Non-Python runtime parity is not claimed beyond static bindings checked across PyO3, WASM, Swift, and C#. |
08.2 · HONEST BLOCKER
Honest Blocker ·
Three checks remain open: cutting the next release, passing the harder IAM and UNIPEN corpora (IAM is registration-limited, UNIPEN is host-unavailable), and proving a clean-room rebuild from spec. Today the PyPI package at 0.1.1 sits ahead of its bindings and runtime at 0.1.0 — a version skew the next release closes. |
|
09
|
09.1 · THE AMBITION
The aim is a stroke record that travels — from a tablet to a server to a researcher's workstation to another device entirely — without losing the pressure, the angle, or the rhythm that made the mark a particular person's. Handwriting becomes citable data, not a frozen picture of itself, across the platforms where pens actually write. |
|
09.2 · WHAT WORKS NOW
|
09.3 · WHAT'S STILL OPEN
|
|
09.4 · EDUCATION · NEAR-TERM (12–24 MO)
Student handwriting survives the upload An e-learning platform that stores a million pages of student maths working can keep the hand that wrote them — pressure, hesitation, retraced strokes — not a flattened image. A teacher reviewing late work sees the thinking, not the result.
|
|
09.5 · SIGNATURES · NEAR-TERM (12–24 MO)
A signature carries the hand A bank or notary capturing a signature on a tablet can archive the full stroke dynamics, not a glyph image. Forensic comparison stops being a visual judgment about pixels and becomes a measurable comparison of pressure curves and pen angles across signings.
|
|
09.6 · STYLUS PLATFORMS · MID-TERM (24–48 MO)
One stroke packet across devices A stylus drawing made on an iPad reaches a Windows tablet, a web canvas, and an Android phone without a conversion step that drops tilt or smooths pressure. The note-taking app stops choosing between portability and fidelity.
|
|
09.7 · RESEARCH ARCHIVES · MID-TERM (24–48 MO)
Handwriting corpora become jointly searchable UJI, CROHME, DigiLeTs, and any future corpus on the same exact-geometry codec can be queried as one. A handwriting researcher hunting for a specific letter formation stops running three retrieval pipelines and starts asking one question of one archive.
|
|
09.8 · ARCHIVE STANDARD · PARADIGM (48 MO+)
Pen computing acquires a common record Notes, signatures, sketches, maths, and annotations from any device resolve to the same kind of stroke record. A handwritten archive becomes a citable, retrievable substrate — the way text and code already are — instead of a folder of frozen images that lose the hand.
|
Installable package: python3.11 -m pip install zpe-ink.
Current release: 0.1.1 on PyPI.
Source: Zer0pa/ZPE-Ink.
python3.11 -m pip install zpe-inkImport smoke:
python3.11 - <<'PY'
import importlib.metadata as md
import zpe_ink
print("zpe-ink", md.version("zpe-ink"))
PYCLI smoke:
zpe-ink --help
zpe-ink-demo --help
zpe-ink-verify-roundtrip --helpInstall success only proves package acquisition/import. Product scope, stale PyPI state, platform limits, and blockers remain in the front-door sections below.
- Version skew exists: root manifest is 0.1.1 while code/native manifests still carry 0.1.0; align before publishing again.
Development install:
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e './code[dev]'
python -m pytest code/tests -q
python -m zpe_ink demo
python -m zpe_ink verify-roundtripPackage build:
python -m build