CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-4.0updated 20d agoView on Hugging Face
0likes252downloads
Dataset Card

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

configrowscontentwith mask
warp201410,000synthetic warped barcode images10,000
huawei98real photographs98

Every image has its mask — the pairing was verified by stem, and zero images in either config are missing one.

Fields

fieldnotes
imagethe picture (JPEG)
maskthe ground-truth mask (PNG)
file_name, stemoriginal filename and its stem
subsetwarp2014 or huawei
has_maskalways true in this build; kept so the schema stays honest if a future revision has gaps

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

python
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, aligned

Citation

Original source: <https://www.inf.u-szeged.hu/~bodnaar/barcodedatabase/syn10kplus_huawei.zip>

bibtex
@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 b85ce5ce82d34f4515bf5c90b60d2b680defd401 from the data files' recorded inventory (sha256 fa6cf1fdb7d7c8d9d91962eb9b9fd02b8206c57c1c405ea26b893053bc2a2ac8); 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 sha256 of 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