Two real store photographs, chosen for density and for products that look different
from each other, each with its own enrolled store:
demo-images/demo-image-1-mediya-dairy.jpg CC0 MEDIYA dairy case
21 products kept (13 price cards dropped), 16 recognised, all 14 products named
demo-images/demo-image-2-milk-case.jpg CC BY 2.0 supermarket milk case
56 detections, 49 recognised, all 13 products named
Both were enrolled the way a store would be: the products were read off a contact
sheet of the detections, their crops became the store's gallery (stock-mediya,
stock-milk150), and a head was trained on them. `build_store_from_shelf.py` is that
flow.
The filter came out of the first image. Every Japanese supermarket photo has the same
artifact: the detector boxes the shelf-edge price cards as products, because a card is
roughly the shape of a pack - 13 of 34 detections on image 1 were cards. Their text
separates them cleanly: a card's characters are 30-44% digits and it prints the
tax-excluded price (本体), while a product's are 3-19% digits. Cards are now dropped
before classification, and the count is reported as `price_cards_dropped` rather than
hidden.
demo-images/README.md records how to run both, what the demo shows, and the honest
caveat: both shelves are enrolled, so the recognition rate is in-distribution - what
the app does on a shelf it has been onboarded to, not on one it has never seen.
175 tests pass.
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
978 B
978 B
| 1 | SKU_ID | product_name | receipt_date | expiration_date | number_in | number_out | number_on | image_link | price |
|---|---|---|---|---|---|---|---|---|---|
| 2 | sku_k01 | 明治 おいしい牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 198 |
| 3 | sku_k02 | ゆうパック 優良牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 130 |
| 4 | sku_k03 | 酪農家限定 低温殺菌牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 248 |
| 5 | sku_k04 | 北海道牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 178 |
| 6 | sku_k05 | MEGMILK | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 158 |
| 7 | sku_k06 | 毎日牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 168 |
| 8 | sku_k07 | タカナシ 低温殺菌牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 258 |
| 9 | sku_k08 | タカナシ 殺菌低脂肪牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 198 |
| 10 | sku_k09 | 毎日骨太 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 148 |
| 11 | sku_k10 | カルシウム入り低脂肪乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 145 |
| 12 | sku_k11 | 無脂肪牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 138 |
| 13 | sku_k12 | 低脂肪牛乳 | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 120 |
| 14 | sku_k13 | ミルク | 2026-09-25 | 2026-10-15 | 48 | 20 | 28 | '' | 260 |