devmandan/syn10k-huawei-barcodes
Bodnár-Huawei Syn10k A mirror of the syn10k_plus_huawei barcode dataset from the Szeged group (Bodnár, Grósz, Tóth), repackaged as parquet with each image joined to its ground-truth mask in the same row. Released under CC BY 4.0, so this mirror is permitted with attribution. Configs config rows content with mask warp2014 10,000 synthetic warped barcode images 10,000 huawei 98 real photographs 98 Every image has its mask — the pairing was verified… See the full description on the dataset page: https://huggingface.co/datasets/devmandan/syn10k-huawei-barcodes.
Bodnár-Huawei Syn10k
A mirror of the syn10k_plus_huawei barcode dataset from the Szeged group (Bodnár, Grósz, Tóth), repackaged as parquet with each image joined to its ground-truth mask in the same row.
Released under CC BY 4.0, so this mirror is permitted with attribution.
Configs
Every image has its mask — the pairing was verified by stem, and zero images in either config are missing one.
Fields
Two notes on how to read this
The split name is a container, not a protocol. Both configs expose a single split called train because HuggingFace requires a split name — it does not encode the authors' intended train/test partition. warp2014 is synthetic and huawei is real photographs, which is the natural synthetic-train / real-test arrangement, but this mirror does not assert that the authors used it that way. Consult the source publication before reporting numbers as theirs.
This is a barcode dataset, not a QR-only one. It is included in a QR collection because it is standard in the barcode-localisation literature and is one of the few sets shipping pixel masks. Check the masks for what you need rather than assuming every symbol is a QR code.
Usage
from datasets import load_dataset
syn = load_dataset("devmandan/syn10k-huawei-barcodes", "warp2014", split="train")
real = load_dataset("devmandan/syn10k-huawei-barcodes", "huawei", split="train")
syn[0]["image"], syn[0]["mask"] # PIL images, alignedCitation
Original source: <https://www.inf.u-szeged.hu/~bodnaar/barcodedatabase/syn10kplus_huawei.zip>
@misc{bodnar_syn10k,
title = {Syn10k + Huawei barcode database},
author = {Bodn\'ar, P\'eter and Gr\'osz, Tam\'as and T\'oth, L\'aszl\'o},
note = {Synthetic and real barcode images with ground-truth masks},
url = {https://www.inf.u-szeged.hu/~bodnaar/barcode_database/}
}Licence: CC BY 4.0 — <https://creativecommons.org/licenses/by/4.0/> Please cite the authors above, not this mirror.
Derived ground truth (qr-decode-bench)
derived_gt/derived_gt.jsonl was ADDED to this repository on 2026-09-01; no existing file was modified (this section was appended to the card). It records, for each image whose payload this dataset does not publish and on which at least two independent QR decoders agreed, what every decoder of a panel decoded on that image — as sha256 digests of the payload bytes, with the payload text beside them only where no identifier detector fires on it — so that a benchmark can score a decoder against what the OTHER decoders established (per-image leave-one-out, quorum 2), never against its own output.
This is truth DERIVED by decoder consensus, not published by the dataset's authors; the benchmark that uses it marks it with †. Agreement between independent implementations is strong evidence, not proof of what a symbol encodes.
- derived at revision
b85ce5ce82d34f4515bf5c90b60d2b680defd401from the data files' recorded inventory (sha256fa6cf1fdb7d7c8d9d91962eb9b9fd02b8206c57c1c405ea26b893053bc2a2ac8); the data files are unchanged by this commit - panel: apple-vision (apple-vision macOS 14.3.1 VNDetectBarcodesRequest rev4), boofcv (boofcv 0.43.1 (PyBoof jar; java 22.0.1)), opencv (opencv 4.12.0 (QRCodeDetector)), opencv-aruco (opencv 4.12.0 (QRCodeDetectorAruco)), quirc (quirc 1.0 (vendored 927d680904dc)), wechat (wechat_qrcode (opencv-contrib 4.12.0; models 8ae41acb,cc49b8c9,e5d36889,e8acfc39)), zxing-cpp (zxing-cpp 3.1.1)
- images with derived truth: 6580 of 10098 examined (3518 without a quorum, 0 voided)
- payloads: 6516 established, 0 carried as text, 0 as digest only because an identifier detector fired, 6516 as digest only because the payload is the image's own id (image records are keyed by
sha256of the id) - format
qrb-derived-gt-peer/1: JSON lines — one header (rule, quorum, panel versions, yield, corroboration, privacy scan), one line per payload, one line per image
