From 48334ded8fa8c6988034a7c603ffc373c3c3b82d Mon Sep 17 00:00:00 2001 From: Rafhan Mazaya Fathurrahman Date: Tue, 14 Jul 2026 21:45:44 +0700 Subject: [PATCH] chore(backend): measure tiles+VL-evidence (zero net change, 79.7% holds) + add /probe-ocr debug endpoint 2026-07-15 re-run of the 79-image benchmark: the tiled full-res pass, VL text-line evidence, and VL SKU retry deployed at end of 2026-07-14 produce ZERO flips vs the 79.7% baseline (only img1's expiry pred changed to a lenient-parse garble). Detail dump: product_scan_detail_20260715.json. Probe endpoint POST :8120/probe-ocr (temporary, remove before production): OCRs a crop of a container-local image through arbitrary preprocessing recipes (scale/blur/close/CLAHE/threshold) and alternate readers - VL layout-parsing with/without layout detection, direct VLM chat on :8118, lazily-loaded PP-OCRv5 server det/rec. Probing the dot-matrix expiry crops of img2/img41 with every combination shows none of the stack's models can read these prints (VL tags them as pictures, VLM hallucinates, v5-server skips them) - the 21 expiry non-detections are a model capability ceiling, not a pipeline bug. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Gr6HH7JrdsXX8AARejQboM --- backend/config/classify_ocr_server.py | 145 ++ .../sources/product_accuracy_history.jsonl | 1 + .../sources/product_scan_detail_20260715.json | 1981 +++++++++++++++++ 3 files changed, 2127 insertions(+) create mode 100644 backend/sources/product_scan_detail_20260715.json diff --git a/backend/config/classify_ocr_server.py b/backend/config/classify_ocr_server.py index a2a309a..df7ee32 100644 --- a/backend/config/classify_ocr_server.py +++ b/backend/config/classify_ocr_server.py @@ -164,6 +164,19 @@ except Exception as e: class ScanRequest(BaseModel): image_base64: str +class ProbeRequest(BaseModel): + # Temporary debug endpoint input: container-local image path + crop box. + path: str + x0: int + y0: int + x1: int + y1: int + # Each recipe is a comma-separated op chain applied left to right, e.g. + # "s2,blur5" = upscale 2x then Gaussian-blur k=5. Ops: sN (scale xN, + # floats ok), blurN, closeN (morph close), clahe, gray, inv, thrN + # (adaptive threshold, block N). + recipes: list = ["none", "s2", "blur5", "s2,blur5"] + def clean_ocr_text(text: str) -> str: return re.sub(r'^[^\w\s./-]+|[^\w\s./-]+$', '', text).strip() @@ -481,6 +494,138 @@ def extract_product_name(text_lines, classified_name=None): return "Unknown Product" +@app.post("/probe-ocr") +async def probe_ocr(payload: ProbeRequest): + # Temporary debug endpoint: OCR a crop of a container-local image at + # several upscale factors (optionally CLAHE-enhanced) using the + # already-loaded GPU OCR model, and run the expiry cascade on each + # variant's lines. Lets us test enhancement recipes without loading a + # second model instance (GPU is full) - remove once tuning is done. + from PIL import ImageOps + import cv2 + img = ImageOps.exif_transpose(Image.open(payload.path)).convert("RGB") + crop = img.crop((payload.x0, payload.y0, payload.x1, payload.y1)) + out = {"image_size": img.size, "variants": {}} + + def apply_ops(arr, recipe): + for op in recipe.split(","): + op = op.strip().lower() + if not op or op == "none": + continue + if op.startswith("s"): + f = float(op[1:]) + arr = cv2.resize(arr, None, fx=f, fy=f, interpolation=cv2.INTER_LANCZOS4) + elif op.startswith("blur"): + k = int(op[4:]) | 1 + arr = cv2.GaussianBlur(arr, (k, k), 0) + elif op.startswith("close"): + k = int(op[5:]) + kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (k, k)) + arr = cv2.morphologyEx(arr, cv2.MORPH_CLOSE, kernel) + elif op == "clahe": + g = cv2.cvtColor(arr, cv2.COLOR_RGB2GRAY) if arr.ndim == 3 else arr + cl = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8, 8)).apply(g) + arr = cv2.cvtColor(cl, cv2.COLOR_GRAY2RGB) + elif op == "gray": + g = cv2.cvtColor(arr, cv2.COLOR_RGB2GRAY) if arr.ndim == 3 else arr + arr = cv2.cvtColor(g, cv2.COLOR_GRAY2RGB) + elif op == "inv": + arr = 255 - arr + elif op.startswith("thr"): + b = int(op[3:]) | 1 + g = cv2.cvtColor(arr, cv2.COLOR_RGB2GRAY) if arr.ndim == 3 else arr + t = cv2.adaptiveThreshold(g, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, + cv2.THRESH_BINARY, b, 10) + arr = cv2.cvtColor(t, cv2.COLOR_GRAY2RGB) + return arr + + def vl_read(arr, use_layout=True): + # Route the crop through the vLLM-backed VL pipeline instead of the + # local PP-OCR model. Returns text lines from its markdown output. + buffered = io.BytesIO() + Image.fromarray(arr).save(buffered, format="JPEG") + resp = requests.post( + os.environ.get("VL_PIPELINE_URL", "http://localhost:8090/layout-parsing"), + json={ + "file": base64.b64encode(buffered.getvalue()).decode("utf-8"), + "matchHistoryJob": False, + "useLayoutDetection": use_layout, + "fileType": 1, + "useDocUnwarping": False, + "useDocOrientationClassify": True, + }, + timeout=120, + ) + resp.raise_for_status() + data = resp.json() + results = data.get("result", {}).get("layoutParsingResults", []) + md = (results[0].get("markdown") or {}).get("text", "") if results else "" + return [ln.strip() for ln in md.splitlines() if ln.strip()] + + def vlm_read(arr): + # Ask the PaddleOCR-VL model on the vLLM genai server (:8118) to OCR + # the crop directly, skipping the pipeline's layout detection (which + # tags dot-matrix prints as pictures and refuses to read them). + buffered = io.BytesIO() + Image.fromarray(arr).save(buffered, format="JPEG") + b64 = base64.b64encode(buffered.getvalue()).decode("utf-8") + resp = requests.post( + os.environ.get("VLM_CHAT_URL", "http://paddleocr-vllm-server:8118/v1/chat/completions"), + json={ + "model": os.environ.get("VLM_MODEL", "PaddleOCR-VL-1.6-0.9B"), + "messages": [{ + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}}, + {"type": "text", "text": "OCR:"}, + ], + }], + "temperature": 0.0, + "max_tokens": 256, + }, + timeout=120, + ) + resp.raise_for_status() + content = resp.json()["choices"][0]["message"]["content"] or "" + return [ln.strip() for ln in content.splitlines() if ln.strip()] + + def v5s_ocr(): + # Lazily load the heavier PP-OCRv5 server det/rec pair (the main + # pipeline runs PP-OCRv6_medium). Cached on the app object so + # repeated probes don't reload weights. + if not hasattr(app.state, "v5s_ocr"): + app.state.v5s_ocr = PaddleOCR( + text_detection_model_name="PP-OCRv5_server_det", + text_recognition_model_name="PP-OCRv5_server_rec", + use_textline_orientation=True, + ) + return app.state.v5s_ocr + + base = np.array(crop) + readers = ("vl", "vlnl", "vlm", "v5s") + for recipe in payload.recipes: + try: + ops = [op.strip().lower() for op in recipe.split(",")] + reader = next((o for o in ops if o in readers), None) + arr = apply_ops(base.copy(), ",".join(o for o in ops if o not in readers)) + if reader == "vl": + lines = vl_read(arr, use_layout=True) + elif reader == "vlnl": + lines = vl_read(arr, use_layout=False) + elif reader == "vlm": + lines = vlm_read(arr) + elif reader == "v5s": + res = list(v5s_ocr().predict(arr)) + lines = res[0].get("rec_texts", []) if res else [] + else: + res = list(ocr.predict(arr)) + lines = res[0].get("rec_texts", []) if res else [] + d, _i, src = extract_expired_date(lines) + out["variants"][recipe] = {"size": [arr.shape[1], arr.shape[0]], "lines": lines, "date": d, "source": src} + except Exception as e: + out["variants"][recipe] = {"error": str(e)} + return out + @app.post("/classify-ocr") async def classify_ocr(payload: ScanRequest): try: diff --git a/backend/sources/product_accuracy_history.jsonl b/backend/sources/product_accuracy_history.jsonl index 2cbd382..239bb44 100644 --- a/backend/sources/product_accuracy_history.jsonl +++ b/backend/sources/product_accuracy_history.jsonl @@ -7,3 +7,4 @@ {"timestamp":"2026-07-14T08:45:37.890Z","commit":"19f1fac","imageCount":{"training":0,"validation":79},"failedImages":[],"fields":{"training":{"no_sku":{"correct":0,"total":0},"nama_item":{"correct":0,"total":0},"expiry_date":{"correct":0,"total":0}},"validation":{"no_sku":{"correct":58,"total":79},"nama_item":{"correct":58,"total":79},"expiry_date":{"correct":49,"total":79}}},"classification":{"training":{"methodCounts":{},"avgConfidence":0},"validation":{"methodCounts":{"dinov2_similarity":79},"avgConfidence":0.838914415504359}},"perImage":{"1 11110059.jpeg":66.66666666666666,"2 11140051.jpeg":66.66666666666666,"3 11620056.jpeg":100,"4 11650053.jpeg":100,"5 11660050.jpeg":0,"6 11710051.jpeg":66.66666666666666,"7 11818300.jpeg":0,"8 1195008A.jpeg":100,"9 11959937.jpeg":66.66666666666666,"10 12010111.jpeg":100,"11 12010115.jpeg":66.66666666666666,"12 12010117.jpeg":100,"13 12010119.jpeg":100,"14 12010121.jpeg":100,"15 12010127.jpeg":66.66666666666666,"16 12010509.jpeg":66.66666666666666,"17 12010515.jpeg":33.33333333333333,"18 12010519.jpeg":100,"19 12012202.jpeg":100,"20 12012501.jpeg":33.33333333333333,"21 12012503.jpeg":66.66666666666666,"22 12012505.jpeg":0,"23 12020102.jpeg":100,"24 12030102.jpeg":100,"25 12030403.jpeg":33.33333333333333,"26 12032502.jpeg":100,"27 12040101.jpeg":33.33333333333333,"28 12040102.jpeg":66.66666666666666,"29 12060103.jpeg":100,"30 12060402.jpeg":100,"31 12080101.jpeg":33.33333333333333,"32 12130102.jpeg":66.66666666666666,"33 12150201.jpeg":100,"34 12150501.jpeg":100,"35 12190103.jpeg":100,"36 12240103.jpeg":0,"37 13010111.jpeg":66.66666666666666,"38 13010116.jpeg":66.66666666666666,"39 13010118.jpeg":100,"40 13010120.jpeg":100,"41 13010122.jpeg":0,"42 13010123.jpeg":66.66666666666666,"43 13010125.jpeg":100,"44 13010518.jpeg":33.33333333333333,"45 13010524.jpeg":100,"46 13012206.jpeg":100,"47 13030501.jpeg":33.33333333333333,"48 13070506.jpeg":66.66666666666666,"49 13100512.jpeg":100,"50 15010101.jpeg":66.66666666666666,"51 15010102.jpeg":0,"52 15010107.jpeg":0,"53 15020101.jpeg":33.33333333333333,"54 15020102.jpeg":100,"55 15030101.jpeg":100,"56 15030102.jpeg":33.33333333333333,"57 16060113.jpeg":100,"58 16060114.jpeg":66.66666666666666,"59 17200109.jpeg":100,"60 17210106.jpeg":33.33333333333333,"61 17210107.jpeg":100,"62 17210108.jpeg":100,"63 17210109.jpeg":66.66666666666666,"64 20040101.jpeg":100,"65 20120102.jpeg":33.33333333333333,"66 20120105.jpeg":66.66666666666666,"67 20120115.jpeg":100,"68 20120116.jpeg":66.66666666666666,"69 21000123.jpeg":0,"70 21000126.jpeg":100,"71 21000130.jpeg":0,"72 21000137.jpeg":100,"73 21010101.jpeg":100,"74 21200107.jpeg":66.66666666666666,"75 12010801.jpeg":66.66666666666666,"76 12012504.jpeg":33.33333333333333,"77 12130504.jpeg":100,"78 13050101.jpeg":100,"79 15040102.jpeg":100}} {"timestamp":"2026-07-14T09:37:47.365Z","commit":"19f1fac","imageCount":{"training":0,"validation":76},"failedImages":["25 12030403.jpeg","40 13010120.jpeg","52 15010107.jpeg"],"fields":{"training":{"no_sku":{"correct":0,"total":0},"nama_item":{"correct":0,"total":0},"expiry_date":{"correct":0,"total":0}},"validation":{"no_sku":{"correct":67,"total":76},"nama_item":{"correct":67,"total":76},"expiry_date":{"correct":49,"total":76}}},"classification":{"training":{"methodCounts":{},"avgConfidence":0},"validation":{"methodCounts":{"dinov2_similarity":76},"avgConfidence":0.8405522272775048}},"perImage":{"1 11110059.jpeg":66.66666666666666,"2 11140051.jpeg":66.66666666666666,"3 11620056.jpeg":100,"4 11650053.jpeg":100,"5 11660050.jpeg":33.33333333333333,"6 11710051.jpeg":66.66666666666666,"7 11818300.jpeg":66.66666666666666,"8 1195008A.jpeg":100,"9 11959937.jpeg":66.66666666666666,"10 12010111.jpeg":100,"11 12010115.jpeg":66.66666666666666,"12 12010117.jpeg":100,"13 12010119.jpeg":100,"14 12010121.jpeg":100,"15 12010127.jpeg":66.66666666666666,"16 12010509.jpeg":66.66666666666666,"17 12010515.jpeg":100,"18 12010519.jpeg":100,"19 12012202.jpeg":100,"20 12012501.jpeg":100,"21 12012503.jpeg":66.66666666666666,"22 12012505.jpeg":66.66666666666666,"23 12020102.jpeg":100,"24 12030102.jpeg":100,"26 12032502.jpeg":100,"27 12040101.jpeg":33.33333333333333,"28 12040102.jpeg":66.66666666666666,"29 12060103.jpeg":100,"30 12060402.jpeg":100,"31 12080101.jpeg":100,"32 12130102.jpeg":66.66666666666666,"33 12150201.jpeg":100,"34 12150501.jpeg":100,"35 12190103.jpeg":100,"36 12240103.jpeg":0,"37 13010111.jpeg":66.66666666666666,"38 13010116.jpeg":100,"39 13010118.jpeg":100,"41 13010122.jpeg":66.66666666666666,"42 13010123.jpeg":66.66666666666666,"43 13010125.jpeg":100,"44 13010518.jpeg":33.33333333333333,"45 13010524.jpeg":100,"46 13012206.jpeg":100,"47 13030501.jpeg":33.33333333333333,"48 13070506.jpeg":66.66666666666666,"49 13100512.jpeg":100,"50 15010101.jpeg":66.66666666666666,"51 15010102.jpeg":66.66666666666666,"53 15020101.jpeg":33.33333333333333,"54 15020102.jpeg":100,"55 15030101.jpeg":100,"56 15030102.jpeg":33.33333333333333,"57 16060113.jpeg":100,"58 16060114.jpeg":66.66666666666666,"59 17200109.jpeg":100,"60 17210106.jpeg":33.33333333333333,"61 17210107.jpeg":100,"62 17210108.jpeg":100,"63 17210109.jpeg":66.66666666666666,"64 20040101.jpeg":100,"65 20120102.jpeg":33.33333333333333,"66 20120105.jpeg":66.66666666666666,"67 20120115.jpeg":100,"68 20120116.jpeg":66.66666666666666,"69 21000123.jpeg":66.66666666666666,"70 21000126.jpeg":100,"71 21000130.jpeg":66.66666666666666,"72 21000137.jpeg":100,"73 21010101.jpeg":100,"74 21200107.jpeg":66.66666666666666,"75 12010801.jpeg":66.66666666666666,"76 12012504.jpeg":100,"77 12130504.jpeg":100,"78 13050101.jpeg":100,"79 15040102.jpeg":100}} {"timestamp":"2026-07-14T09:56:01.573Z","commit":"19f1fac","imageCount":{"training":0,"validation":79},"failedImages":[],"fields":{"training":{"no_sku":{"correct":0,"total":0},"nama_item":{"correct":0,"total":0},"expiry_date":{"correct":0,"total":0}},"validation":{"no_sku":{"correct":69,"total":79},"nama_item":{"correct":69,"total":79},"expiry_date":{"correct":51,"total":79}}},"classification":{"training":{"methodCounts":{},"avgConfidence":0},"validation":{"methodCounts":{"dinov2_similarity":79},"avgConfidence":0.838914415504359}},"perImage":{"1 11110059.jpeg":66.66666666666666,"2 11140051.jpeg":66.66666666666666,"3 11620056.jpeg":100,"4 11650053.jpeg":100,"5 11660050.jpeg":33.33333333333333,"6 11710051.jpeg":66.66666666666666,"7 11818300.jpeg":66.66666666666666,"8 1195008A.jpeg":100,"9 11959937.jpeg":66.66666666666666,"10 12010111.jpeg":100,"11 12010115.jpeg":66.66666666666666,"12 12010117.jpeg":100,"13 12010119.jpeg":100,"14 12010121.jpeg":100,"15 12010127.jpeg":66.66666666666666,"16 12010509.jpeg":66.66666666666666,"17 12010515.jpeg":100,"18 12010519.jpeg":100,"19 12012202.jpeg":100,"20 12012501.jpeg":100,"21 12012503.jpeg":66.66666666666666,"22 12012505.jpeg":66.66666666666666,"23 12020102.jpeg":100,"24 12030102.jpeg":100,"25 12030403.jpeg":100,"26 12032502.jpeg":100,"27 12040101.jpeg":33.33333333333333,"28 12040102.jpeg":66.66666666666666,"29 12060103.jpeg":100,"30 12060402.jpeg":100,"31 12080101.jpeg":100,"32 12130102.jpeg":66.66666666666666,"33 12150201.jpeg":100,"34 12150501.jpeg":100,"35 12190103.jpeg":100,"36 12240103.jpeg":0,"37 13010111.jpeg":66.66666666666666,"38 13010116.jpeg":100,"39 13010118.jpeg":100,"40 13010120.jpeg":100,"41 13010122.jpeg":66.66666666666666,"42 13010123.jpeg":66.66666666666666,"43 13010125.jpeg":100,"44 13010518.jpeg":33.33333333333333,"45 13010524.jpeg":100,"46 13012206.jpeg":100,"47 13030501.jpeg":33.33333333333333,"48 13070506.jpeg":66.66666666666666,"49 13100512.jpeg":100,"50 15010101.jpeg":66.66666666666666,"51 15010102.jpeg":66.66666666666666,"52 15010107.jpeg":0,"53 15020101.jpeg":33.33333333333333,"54 15020102.jpeg":100,"55 15030101.jpeg":100,"56 15030102.jpeg":33.33333333333333,"57 16060113.jpeg":100,"58 16060114.jpeg":66.66666666666666,"59 17200109.jpeg":100,"60 17210106.jpeg":33.33333333333333,"61 17210107.jpeg":100,"62 17210108.jpeg":100,"63 17210109.jpeg":66.66666666666666,"64 20040101.jpeg":100,"65 20120102.jpeg":33.33333333333333,"66 20120105.jpeg":66.66666666666666,"67 20120115.jpeg":100,"68 20120116.jpeg":66.66666666666666,"69 21000123.jpeg":66.66666666666666,"70 21000126.jpeg":100,"71 21000130.jpeg":66.66666666666666,"72 21000137.jpeg":100,"73 21010101.jpeg":100,"74 21200107.jpeg":66.66666666666666,"75 12010801.jpeg":66.66666666666666,"76 12012504.jpeg":100,"77 12130504.jpeg":100,"78 13050101.jpeg":100,"79 15040102.jpeg":100}} +{"timestamp":"2026-07-14T13:29:14.802Z","commit":"e76ccb6","imageCount":{"training":0,"validation":79},"failedImages":[],"fields":{"training":{"no_sku":{"correct":0,"total":0},"nama_item":{"correct":0,"total":0},"expiry_date":{"correct":0,"total":0}},"validation":{"no_sku":{"correct":69,"total":79},"nama_item":{"correct":69,"total":79},"expiry_date":{"correct":51,"total":79}}},"classification":{"training":{"methodCounts":{},"avgConfidence":0},"validation":{"methodCounts":{"dinov2_similarity":79},"avgConfidence":0.838914415504359}},"perImage":{"1 11110059.jpeg":66.66666666666666,"2 11140051.jpeg":66.66666666666666,"3 11620056.jpeg":100,"4 11650053.jpeg":100,"5 11660050.jpeg":33.33333333333333,"6 11710051.jpeg":66.66666666666666,"7 11818300.jpeg":66.66666666666666,"8 1195008A.jpeg":100,"9 11959937.jpeg":66.66666666666666,"10 12010111.jpeg":100,"11 12010115.jpeg":66.66666666666666,"12 12010117.jpeg":100,"13 12010119.jpeg":100,"14 12010121.jpeg":100,"15 12010127.jpeg":66.66666666666666,"16 12010509.jpeg":66.66666666666666,"17 12010515.jpeg":100,"18 12010519.jpeg":100,"19 12012202.jpeg":100,"20 12012501.jpeg":100,"21 12012503.jpeg":66.66666666666666,"22 12012505.jpeg":66.66666666666666,"23 12020102.jpeg":100,"24 12030102.jpeg":100,"25 12030403.jpeg":100,"26 12032502.jpeg":100,"27 12040101.jpeg":33.33333333333333,"28 12040102.jpeg":66.66666666666666,"29 12060103.jpeg":100,"30 12060402.jpeg":100,"31 12080101.jpeg":100,"32 12130102.jpeg":66.66666666666666,"33 12150201.jpeg":100,"34 12150501.jpeg":100,"35 12190103.jpeg":100,"36 12240103.jpeg":0,"37 13010111.jpeg":66.66666666666666,"38 13010116.jpeg":100,"39 13010118.jpeg":100,"40 13010120.jpeg":100,"41 13010122.jpeg":66.66666666666666,"42 13010123.jpeg":66.66666666666666,"43 13010125.jpeg":100,"44 13010518.jpeg":33.33333333333333,"45 13010524.jpeg":100,"46 13012206.jpeg":100,"47 13030501.jpeg":33.33333333333333,"48 13070506.jpeg":66.66666666666666,"49 13100512.jpeg":100,"50 15010101.jpeg":66.66666666666666,"51 15010102.jpeg":66.66666666666666,"52 15010107.jpeg":0,"53 15020101.jpeg":33.33333333333333,"54 15020102.jpeg":100,"55 15030101.jpeg":100,"56 15030102.jpeg":33.33333333333333,"57 16060113.jpeg":100,"58 16060114.jpeg":66.66666666666666,"59 17200109.jpeg":100,"60 17210106.jpeg":33.33333333333333,"61 17210107.jpeg":100,"62 17210108.jpeg":100,"63 17210109.jpeg":66.66666666666666,"64 20040101.jpeg":100,"65 20120102.jpeg":33.33333333333333,"66 20120105.jpeg":66.66666666666666,"67 20120115.jpeg":100,"68 20120116.jpeg":66.66666666666666,"69 21000123.jpeg":66.66666666666666,"70 21000126.jpeg":100,"71 21000130.jpeg":66.66666666666666,"72 21000137.jpeg":100,"73 21010101.jpeg":100,"74 21200107.jpeg":66.66666666666666,"75 12010801.jpeg":66.66666666666666,"76 12012504.jpeg":100,"77 12130504.jpeg":100,"78 13050101.jpeg":100,"79 15040102.jpeg":100}} diff --git a/backend/sources/product_scan_detail_20260715.json b/backend/sources/product_scan_detail_20260715.json new file mode 100644 index 0000000..db6406c --- /dev/null +++ b/backend/sources/product_scan_detail_20260715.json @@ -0,0 +1,1981 @@ +{ + "timestamp": "2026-07-14T13:29:14.802Z", + "validation": [ + { + "filename": "1 11110059.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8752293586730957, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11110059", + "predicted": "11110059" + }, + { + "field": "nama_item", + "match": true, + "expected": "CEKER BERKUKU FROZEN PACK 1 KG(*)", + "predicted": "CEKER BERKUKU FROZEN PACK 1 KG(*)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "13/06/2027", + "predicted": "1/3/06" + } + ] + }, + { + "filename": "2 11140051.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8288753032684326, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11140051", + "predicted": "11140051" + }, + { + "field": "nama_item", + "match": true, + "expected": "AMPELA FROZEN PACK 1 KG(*)", + "predicted": "AMPELA FROZEN PACK 1 KG(*)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "26/11/2026", + "predicted": "" + } + ] + }, + { + "filename": "3 11620056.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8455654978752136, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11620056", + "predicted": "11620056" + }, + { + "field": "nama_item", + "match": true, + "expected": "SBL (FILLET PAHA) 1 KG(*)", + "predicted": "SBL (FILLET PAHA) 1 KG(*)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "27/02/2027", + "predicted": "27/02/2027" + } + ] + }, + { + "filename": "4 11650053.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8624468445777893, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11650053", + "predicted": "11650053" + }, + { + "field": "nama_item", + "match": true, + "expected": "PAHA ATAS 1 KG(*)", + "predicted": "PAHA ATAS 1 KG(*)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "26/02/2027", + "predicted": "26/02/2027" + } + ] + }, + { + "filename": "5 11660050.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8216159343719482, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "11660050", + "predicted": "11818300" + }, + { + "field": "nama_item", + "match": false, + "expected": "PAHA BAWAH (1 KG)(*)", + "predicted": "CP-BEBEK GORENG 400GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "22/06/2027", + "predicted": "22/06/2027" + } + ] + }, + { + "filename": "6 11710051.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7956198453903198, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11710051", + "predicted": "11710051" + }, + { + "field": "nama_item", + "match": true, + "expected": "DADA UTUH (1 KG)(*)", + "predicted": "DADA UTUH (1 KG)(*)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "09/05/2027", + "predicted": "" + } + ] + }, + { + "filename": "7 11818300.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7895687818527222, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11818300", + "predicted": "11818300" + }, + { + "field": "nama_item", + "match": true, + "expected": "CP-BEBEK GORENG 400GR/PAC", + "predicted": "CP-BEBEK GORENG 400GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "10/01/2027", + "predicted": "11/1/01" + } + ] + }, + { + "filename": "8 1195008A.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8913155794143677, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "1195008A", + "predicted": "1195008A" + }, + { + "field": "nama_item", + "match": true, + "expected": "RTC CHICKEN KALASAN 400 GR (PAC)", + "predicted": "RTC CHICKEN KALASAN 400 GR (PAC)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "9 11959937.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7903496026992798, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "11959937", + "predicted": "11959937" + }, + { + "field": "nama_item", + "match": true, + "expected": "SATE AYAM FRESHMART 360 GR (PAC)", + "predicted": "SATE AYAM FRESHMART 360 GR (PAC)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "29/11/2026", + "predicted": "" + } + ] + }, + { + "filename": "10 12010111.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9297064542770386, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010111", + "predicted": "12010111" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA CRISPY BUBBLE 400 GR/PAC", + "predicted": "FIESTA CRISPY BUBBLE 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "07/05/2027", + "predicted": "07/05/2027" + } + ] + }, + { + "filename": "11 12010115.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9401117563247681, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010115", + "predicted": "12010115" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA NUGGET ZOO 400 GR/PAC", + "predicted": "FIESTA NUGGET ZOO 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "01/12/2026", + "predicted": "00/22/26" + } + ] + }, + { + "filename": "12 12010117.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8705312013626099, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010117", + "predicted": "12010117" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA NUGGET HAPPY STAR 400 GR/PAC", + "predicted": "FIESTA NUGGET HAPPY STAR 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "27/08/2026", + "predicted": "27/08/2026" + } + ] + }, + { + "filename": "13 12010119.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8735395669937134, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010119", + "predicted": "12010119" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA NUGGET CHEESE 123 400 GR/PAC", + "predicted": "FIESTA NUGGET CHEESE 123 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "09/04/2027", + "predicted": "09/04/2027" + } + ] + }, + { + "filename": "14 12010121.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7974350452423096, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010121", + "predicted": "12010121" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA NUGGET PIZZABC 400 GR/PAC", + "predicted": "FIESTA NUGGET PIZZABC 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "12/11/2026", + "predicted": "12/11/2026" + } + ] + }, + { + "filename": "15 12010127.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7677727937698364, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010127", + "predicted": "12010127" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SPICY NUGGET 400 GR/PAC", + "predicted": "FIESTA SPICY NUGGET 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "09/12/2027", + "predicted": "" + } + ] + }, + { + "filename": "16 12010509.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9998968839645386, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010509", + "predicted": "12010509" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP CRUNCHY NUGGET 450 GR/PAC", + "predicted": "CHAMP CRUNCHY NUGGET 450 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "15/04/2027", + "predicted": "" + } + ] + }, + { + "filename": "17 12010515.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9032241106033325, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010515", + "predicted": "12010515" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP KOIN KOMBINASI 450 GR/PAC", + "predicted": "CHAMP KOIN KOMBINASI 450 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "15/04/2027", + "predicted": "15/04/2027" + } + ] + }, + { + "filename": "18 12010519.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8421372771263123, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010519", + "predicted": "12010519" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP NUGGET STICK 900 GR/PAC", + "predicted": "CHAMP NUGGET STICK 900 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "08/03/2027", + "predicted": "08/03/2027" + } + ] + }, + { + "filename": "19 12012202.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9508225321769714, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12012202", + "predicted": "12012202" + }, + { + "field": "nama_item", + "match": true, + "expected": "ASIMO NUGGET KOMBINASI 1 KG/PAC", + "predicted": "ASIMO NUGGET KOMBINASI 1 KG/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "13/05/2027", + "predicted": "13/05/2027" + } + ] + }, + { + "filename": "20 12012501.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8298306465148926, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12012501", + "predicted": "12012501" + }, + { + "field": "nama_item", + "match": true, + "expected": "AKUMO CHICKEN NAGET 250 GR", + "predicted": "AKUMO CHICKEN NAGET 250 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "21/05/2027", + "predicted": "21/05/2027" + } + ] + }, + { + "filename": "21 12012503.jpeg", + "method": "dinov2_similarity", + "confidence": 0.999868631362915, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12012503", + "predicted": "12012503" + }, + { + "field": "nama_item", + "match": true, + "expected": "AKUMO CHICKEN NUGGET 1000 GR", + "predicted": "AKUMO CHICKEN NUGGET 1000 GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "17/06/2027", + "predicted": "" + } + ] + }, + { + "filename": "22 12012505.jpeg", + "method": "dinov2_similarity", + "confidence": 0.6384565830230713, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12012505", + "predicted": "12012505" + }, + { + "field": "nama_item", + "match": true, + "expected": "AKUMO KOIN 400 GR/PAC", + "predicted": "AKUMO KOIN 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "16/11/2026", + "predicted": "" + } + ] + }, + { + "filename": "23 12020102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9301437139511108, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12020102", + "predicted": "12020102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SPICY WING 400 GR/PAC", + "predicted": "FIESTA SPICY WING 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "22/05/2027", + "predicted": "22/05/2027" + } + ] + }, + { + "filename": "24 12030102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8205966949462891, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12030102", + "predicted": "12030102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA STIKIE 200 GR/PAC", + "predicted": "FIESTA STIKIE 200 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "26/02/2027", + "predicted": "26/02/2027" + } + ] + }, + { + "filename": "25 12030403.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8069853782653809, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12030403", + "predicted": "12030403" + }, + { + "field": "nama_item", + "match": true, + "expected": "GOLDEN FIESTA STIKIE W/ SWEET CHILLI SAUCE 500GR", + "predicted": "GOLDEN FIESTA STIKIE W/ SWEET CHILLI SAUCE 500GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "07/04/2027", + "predicted": "07/04/2027" + } + ] + }, + { + "filename": "26 12032502.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8524149656295776, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12032502", + "predicted": "12032502" + }, + { + "field": "nama_item", + "match": true, + "expected": "AKUMO CHICKEN STIK 500 GR", + "predicted": "AKUMO CHICKEN STIK 500 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "09/03/2027", + "predicted": "09/03/2027" + } + ] + }, + { + "filename": "27 12040101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7459875345230103, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "12040101", + "predicted": "12080101" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA SCHNITZEL 400 GR/PAC", + "predicted": "FIESTA SPICY CHICK 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "09/10/2026", + "predicted": "09/10/2026" + } + ] + }, + { + "filename": "28 12040102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.848473846912384, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12040102", + "predicted": "12040102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA CRISPY BUBBLE KATSU 400 GR/PAC", + "predicted": "FIESTA CRISPY BUBBLE KATSU 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "12/04/2027", + "predicted": "" + } + ] + }, + { + "filename": "29 12060103.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8533232808113098, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12060103", + "predicted": "12060103" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA KARAGE 200 GR/PAC", + "predicted": "FIESTA KARAGE 200 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "30 12060402.jpeg", + "method": "dinov2_similarity", + "confidence": 0.999951958656311, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12060402", + "predicted": "12060402" + }, + { + "field": "nama_item", + "match": true, + "expected": "GOLDEN FIESTA KARAGE CHILI SAUCE 500GR", + "predicted": "GOLDEN FIESTA KARAGE CHILI SAUCE 500GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "15/05/2027", + "predicted": "15/05/2027" + } + ] + }, + { + "filename": "31 12080101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7615386247634888, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12080101", + "predicted": "12080101" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SPICY CHICK 400 GR/PAC", + "predicted": "FIESTA SPICY CHICK 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "26/04/2027", + "predicted": "26/04/2027" + } + ] + }, + { + "filename": "32 12130102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7541385889053345, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12130102", + "predicted": "12130102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA CRISPY BURGER 360 GR (NEW)", + "predicted": "FIESTA CRISPY BURGER 360 GR (NEW)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "27/04/2027", + "predicted": "09/06/2027" + } + ] + }, + { + "filename": "33 12150201.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8645867705345154, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12150201", + "predicted": "12150201" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA DS CRISPY CRUNCH 300 GR/PAC", + "predicted": "FIESTA DS CRISPY CRUNCH 300 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "03/06/2027", + "predicted": "03/06/2027" + } + ] + }, + { + "filename": "34 12150501.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8812623620033264, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12150501", + "predicted": "12150501" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP CRUNCHY HOTZZ 300 GR/PAC", + "predicted": "CHAMP CRUNCHY HOTZZ 300 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "35 12190103.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9166464805603027, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12190103", + "predicted": "12190103" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA DELISTRIPE 400 GR/PAC", + "predicted": "FIESTA DELISTRIPE 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "07/04/2027", + "predicted": "07/04/2027" + } + ] + }, + { + "filename": "36 12240103.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7846307754516602, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "12240103", + "predicted": "12010111" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA YAKINIKU R/BITES 400 GR/PAC", + "predicted": "FIESTA CRISPY BUBBLE 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "07/05/2027", + "predicted": "" + } + ] + }, + { + "filename": "37 13010111.jpeg", + "method": "dinov2_similarity", + "confidence": 0.863309383392334, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010111", + "predicted": "13010111" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SOSIS BRATWURST 300 GR", + "predicted": "FIESTA SOSIS BRATWURST 300 GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "25/03/2027", + "predicted": "" + } + ] + }, + { + "filename": "38 13010116.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7706930637359619, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010116", + "predicted": "13010116" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SSG ORIGINAL 300 GR", + "predicted": "FIESTA SSG ORIGINAL 300 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "23/06/2027", + "predicted": "23/06/2027" + } + ] + }, + { + "filename": "39 13010118.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8780494928359985, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010118", + "predicted": "13010118" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTG SSG 65 GR/PAC", + "predicted": "FIESTA RTG SSG 65 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "40 13010120.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8322341442108154, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010120", + "predicted": "13010120" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTG C/CHEESY MELTS 65 GR/PAC", + "predicted": "FIESTA RTG C/CHEESY MELTS 65 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "41 13010122.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8008815050125122, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010122", + "predicted": "13010122" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTG SAUSAGE WITH HOT LAVA 60G", + "predicted": "FIESTA RTG SAUSAGE WITH HOT LAVA 60G" + }, + { + "field": "expiry_date", + "match": false, + "expected": "29/10/2026", + "predicted": "20/10/2026" + } + ] + }, + { + "filename": "42 13010123.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8824314475059509, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010123", + "predicted": "13010123" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTG SAUSAGE WITH CHEESE LAVA 60G", + "predicted": "FIESTA RTG SAUSAGE WITH CHEESE LAVA 60G" + }, + { + "field": "expiry_date", + "match": false, + "expected": "25/10/2026", + "predicted": "" + } + ] + }, + { + "filename": "43 13010125.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8968596458435059, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010125", + "predicted": "13010125" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTG SAUSAGE WITH MENTAI LAVA 60GR", + "predicted": "FIESTA RTG SAUSAGE WITH MENTAI LAVA 60GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "05/11/2026", + "predicted": "05/11/2026" + } + ] + }, + { + "filename": "44 13010518.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8431056141853333, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "13010518", + "predicted": "13010524" + }, + { + "field": "nama_item", + "match": false, + "expected": "CHAMP SSG JUMBO BAKAR 500 GR/PAC", + "predicted": "CHAMP SSG JUMBO BAKAR 500 GR/PAC (NEW)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "45 13010524.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8275675177574158, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13010524", + "predicted": "13010524" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP SSG JUMBO BAKAR 500 GR/PAC (NEW)", + "predicted": "CHAMP SSG JUMBO BAKAR 500 GR/PAC (NEW)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "46 13012206.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8859499096870422, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13012206", + "predicted": "13012206" + }, + { + "field": "nama_item", + "match": true, + "expected": "ASIMO SOSIS AYAM KOMBINASI 500 GR", + "predicted": "ASIMO SOSIS AYAM KOMBINASI 500 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "15/03/2027", + "predicted": "15/03/2027" + } + ] + }, + { + "filename": "47 13030501.jpeg", + "method": "dinov2_similarity", + "confidence": 0.699230432510376, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "13030501", + "predicted": "1195008A" + }, + { + "field": "nama_item", + "match": false, + "expected": "CHAMP CHICK MEATBALL 200 GR", + "predicted": "RTC CHICKEN KALASAN 400 GR (PAC)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "48 13070506.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8415263891220093, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13070506", + "predicted": "13070506" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP FRANKFURTER SSG 375GR", + "predicted": "CHAMP FRANKFURTER SSG 375GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "13/03/2027", + "predicted": "" + } + ] + }, + { + "filename": "49 13100512.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7575868368148804, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13100512", + "predicted": "13100512" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP CHICK SSG S/SANTAP ORIG 546GR (CAN)", + "predicted": "CHAMP CHICK SSG S/SANTAP ORIG 546GR (CAN)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "50 15010101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7570759654045105, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "15010101", + "predicted": "15010101" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SHOESTRING 500 GR", + "predicted": "FIESTA SHOESTRING 500 GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "04/06/2027", + "predicted": "" + } + ] + }, + { + "filename": "51 15010102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.771751880645752, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "15010102", + "predicted": "15010102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SHOESTRING 1000 GR", + "predicted": "FIESTA SHOESTRING 1000 GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "05/03/2027", + "predicted": "" + } + ] + }, + { + "filename": "52 15010107.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7530500292778015, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "15010107", + "predicted": "15020101" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA FRENCH F SHOESTRING INSTITUSI 2KG", + "predicted": "FIESTA STRAIGHT CUT 500 GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "17/06/2027", + "predicted": "" + } + ] + }, + { + "filename": "53 15020101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7173986434936523, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "15020101", + "predicted": "12010115" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA STRAIGHT CUT 500 GR", + "predicted": "FIESTA NUGGET ZOO 400 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "19/06/2027", + "predicted": "19/06/2027" + } + ] + }, + { + "filename": "54 15020102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.760880172252655, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "15020102", + "predicted": "15020102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA STRAIGHT CUT 1000 GR", + "predicted": "FIESTA STRAIGHT CUT 1000 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "18/05/2027", + "predicted": "18/05/2027" + } + ] + }, + { + "filename": "55 15030101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7551426887512207, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "15030101", + "predicted": "15030101" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA CRINKLE CUT 500 GR", + "predicted": "FIESTA CRINKLE CUT 500 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "56 15030102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8040192723274231, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "15030102", + "predicted": "11140051" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA CRINKLE CUT 1000 GR", + "predicted": "AMPELA FROZEN PACK 1 KG(*)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "07/04/2027", + "predicted": "07/04/2027" + } + ] + }, + { + "filename": "57 16060113.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7159013748168945, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "16060113", + "predicted": "16060113" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA CHICK SIOMAY 180GR (NEW)", + "predicted": "FIESTA CHICK SIOMAY 180GR (NEW)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "24/02/2027", + "predicted": "24/02/2027" + } + ] + }, + { + "filename": "58 16060114.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8917540311813354, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "16060114", + "predicted": "16060114" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA GYOZA 180 GR (NEW)", + "predicted": "FIESTA GYOZA 180 GR (NEW)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "18/05/2027", + "predicted": "" + } + ] + }, + { + "filename": "59 17200109.jpeg", + "method": "dinov2_similarity", + "confidence": 0.873604953289032, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "17200109", + "predicted": "17200109" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTS C/TERIYAKI 300GR/PAC", + "predicted": "FIESTA RTS C/TERIYAKI 300GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "60 17210106.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8634250164031982, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "17210106", + "predicted": "17200109" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA RTS B/YAKINIKU 300GR/PAC", + "predicted": "FIESTA RTS C/TERIYAKI 300GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "19/05/2027", + "predicted": "19/05/2027" + } + ] + }, + { + "filename": "61 17210107.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8372858762741089, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "17210107", + "predicted": "17210107" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTS B/RENDANG 300GR/PAC", + "predicted": "FIESTA RTS B/RENDANG 300GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "23/06/2027", + "predicted": "23/06/2027" + } + ] + }, + { + "filename": "62 17210108.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8416426181793213, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "17210108", + "predicted": "17210108" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTS B/BLACKPEPPER 300GR/PAC", + "predicted": "FIESTA RTS B/BLACKPEPPER 300GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "09/05/2027", + "predicted": "09/05/2027" + } + ] + }, + { + "filename": "63 17210109.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7651224732398987, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "17210109", + "predicted": "17210109" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RTS B/BULGOGI 300GR/PAC", + "predicted": "FIESTA RTS B/BULGOGI 300GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "18/05/2027", + "predicted": "" + } + ] + }, + { + "filename": "64 20040101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.875791072845459, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "20040101", + "predicted": "20040101" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RAMEN BEKU 570 GR/PAC", + "predicted": "FIESTA RAMEN BEKU 570 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "23/06/2026", + "predicted": "23/06/2026" + } + ] + }, + { + "filename": "65 20120102.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7215185761451721, + "checks": [ + { + "field": "no_sku", + "match": false, + "expected": "20120102", + "predicted": "11818300" + }, + { + "field": "nama_item", + "match": false, + "expected": "FIESTA T/B AYAM GORENG 80 GR", + "predicted": "CP-BEBEK GORENG 400GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "66 20120105.jpeg", + "method": "dinov2_similarity", + "confidence": 0.6464561820030212, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "20120105", + "predicted": "20120105" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA T/B SERBAGUNA  80 GR", + "predicted": "FIESTA T/B SERBAGUNA  80 GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "09/03/2027", + "predicted": "" + } + ] + }, + { + "filename": "67 20120115.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8510814309120178, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "20120115", + "predicted": "20120115" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RACIK AYAM GORENG 20 GR/PAC", + "predicted": "FIESTA RACIK AYAM GORENG 20 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "68 20120116.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9159002304077148, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "20120116", + "predicted": "20120116" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RACIK NASI GORENG 20 GR/PAC", + "predicted": "FIESTA RACIK NASI GORENG 20 GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "13/10/2026", + "predicted": "" + } + ] + }, + { + "filename": "69 21000123.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7544333934783936, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "21000123", + "predicted": "21000123" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA RICE W/GEPREK CHICKEN 320GR/PAC", + "predicted": "FIESTA RICE W/GEPREK CHICKEN 320GR/PAC" + }, + { + "field": "expiry_date", + "match": false, + "expected": "30/04/2027", + "predicted": "" + } + ] + }, + { + "filename": "70 21000126.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7837727069854736, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "21000126", + "predicted": "21000126" + }, + { + "field": "nama_item", + "match": true, + "expected": "NEW FIESTA CHICK RENDANG W RICE 320GR (PAC)", + "predicted": "NEW FIESTA CHICK RENDANG W RICE 320GR (PAC)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "16/04/2027", + "predicted": "16/04/2027" + } + ] + }, + { + "filename": "71 21000130.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7513917088508606, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "21000130", + "predicted": "21000130" + }, + { + "field": "nama_item", + "match": true, + "expected": "NEW FIESTA RICE W/C CHEESE BULDAK 320GR (PAC)", + "predicted": "NEW FIESTA RICE W/C CHEESE BULDAK 320GR (PAC)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "09/04/2027", + "predicted": "04/05/2026" + } + ] + }, + { + "filename": "72 21000137.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8192744255065918, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "21000137", + "predicted": "21000137" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA HAINAMESE CHICKEN RICE 320GR (PAC)", + "predicted": "FIESTA HAINAMESE CHICKEN RICE 320GR (PAC)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "12/02/2027", + "predicted": "12/02/2027" + } + ] + }, + { + "filename": "73 21010101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.8803786039352417, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "21010101", + "predicted": "21010101" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA TRUFFLE GYUDON 320 GR/PAC", + "predicted": "FIESTA TRUFFLE GYUDON 320 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "18/03/2027", + "predicted": "18/03/2027" + } + ] + }, + { + "filename": "74 21200107.jpeg", + "method": "dinov2_similarity", + "confidence": 0.7222207188606262, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "21200107", + "predicted": "21200107" + }, + { + "field": "nama_item", + "match": true, + "expected": "NEW FIESTA SPAGHETTI CARBONARA 300GR (PAC)", + "predicted": "NEW FIESTA SPAGHETTI CARBONARA 300GR (PAC)" + }, + { + "field": "expiry_date", + "match": false, + "expected": "20/05/2027", + "predicted": "" + } + ] + }, + { + "filename": "75 12010801.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9999999403953552, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12010801", + "predicted": "12010801" + }, + { + "field": "nama_item", + "match": true, + "expected": "OKEY NUGGET 500GR", + "predicted": "OKEY NUGGET 500GR" + }, + { + "field": "expiry_date", + "match": false, + "expected": "02/12/2027", + "predicted": "02/02/2027" + } + ] + }, + { + "filename": "76 12012504.jpeg", + "method": "dinov2_similarity", + "confidence": 1, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12012504", + "predicted": "12012504" + }, + { + "field": "nama_item", + "match": true, + "expected": "AKUMO COIN 200 GR/PAC", + "predicted": "AKUMO COIN 200 GR/PAC" + }, + { + "field": "expiry_date", + "match": true, + "expected": "05/03/2027", + "predicted": "05/03/2027" + } + ] + }, + { + "filename": "77 12130504.jpeg", + "method": "dinov2_similarity", + "confidence": 1, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "12130504", + "predicted": "12130504" + }, + { + "field": "nama_item", + "match": true, + "expected": "CHAMP BURGER 315 GR (NEW)", + "predicted": "CHAMP BURGER 315 GR (NEW)" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "78 13050101.jpeg", + "method": "dinov2_similarity", + "confidence": 0.9999382495880127, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "13050101", + "predicted": "13050101" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA SCB 250 GR", + "predicted": "FIESTA SCB 250 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + }, + { + "filename": "79 15040102.jpeg", + "method": "dinov2_similarity", + "confidence": 1, + "checks": [ + { + "field": "no_sku", + "match": true, + "expected": "15040102", + "predicted": "15040102" + }, + { + "field": "nama_item", + "match": true, + "expected": "FIESTA BATTER COATED 1000 GR", + "predicted": "FIESTA BATTER COATED 1000 GR" + }, + { + "field": "expiry_date", + "match": true, + "expected": "", + "predicted": "" + } + ] + } + ], + "failed": [] +} \ No newline at end of file