30 beceri: foto ↔ fiyat kanıtı30 skills: photo ↔ price evidence

Fiyat DB 2.1 · 2756 foto kontrol edildi · kaynaklarlaPrice DB 2.1 · 2756 photos checked · with sources

İki sorunu düzelttik: (1) eski ekran görüntüleri kategori sayfasının ortasından kırpılmıştı; (2) bazı parça fotoları fiyatıyla eşleşmiyordu. 30 beceri: 25 uygulandı, 2 ölçüldü/not edildi, 3 planlandı.We fixed two problems: (1) the old screenshots were crops from the middle of category pages; (2) some part photos did not match their price. 30 skills: 25 applied, 2 measured / noted, 3 planned.

Ne değiştiWhat changed

  1. 1Kaydın kendi sayfasını çek, kategori sayfasını değilCapture the record’s own page, not a category pageUygulandıApplied

    Eski görüntüler kategori sayfasının ortasından kırpılmıştı ve DB’de olmayan “Pazarlık” ilanlarını gösteriyordu. Yeni kartlar her DB satırının kendi ilan sayfasını açar.The old shots were crops from the middle of category pages and showed “Pazarlık” cards that are not in the DB. The new cards open each DB row’s own listing page.

    📄 W3C PROV-O — provenance: an entity is linked to the activity and source that generated it ↗

  2. 2Sayfanın üstünü, adres çubuğu ve zamanla çekShoot the top of the page with URL bar and timeUygulandıApplied

    Görüntü 1280×900, sayfa en üstte: site başlığı, ilan başlığı, fotoğraf ve fiyat görünür; üstte tam URL ve UTC saat.Screenshot 1280×900 at the top of the page: site header, listing title, photo and price visible; full URL and UTC time on top.

    📄 OSINT Academy — Preserving digital evidence: full page with URL bar and timestamp ↗

  3. 3Her dosyanın SHA-256 özetiSHA-256 hash of every artefactUygulandıApplied

    Her PNG, kart ve sayfa HTML’i için SHA-256 manifest.json’a yazılır; sonradan değiştirilirse anlaşılır.Every PNG, card and page HTML gets a SHA-256 in manifest.json, so later edits are detectable.

    📄 Web archiving screenshots — URL, UTC time, SHA-256, viewport, HTTP status ↗

  4. 4Pikselin yanında DOM’u da saklaKeep the rendered DOM next to the pixelsUygulandıApplied

    Ekran görüntüsü tek başına yapıyı kanıtlamaz; işlenmiş HTML’in özeti de saklanır.A screenshot alone does not prove structure; a hash of the rendered HTML is stored too.

    📄 ISO/IEC 27037 web evidence acquisition guide (rendered DOM + screenshot) ↗

  5. 5İddia ile kanıt yan yanaClaim and evidence side by sideUygulandıApplied

    Kartın solunda canlı ilan, sağında bizim satırımız: foto, DB fiyatı, canlı fiyat, yıllar ve ✓/✗ kontroller.Left: the live listing; right: our row — photo, DB price, live price, years and ✓/✗ checks.

    📄 NN/g — UX guidelines for e-commerce product pages (name, image, price together) ↗

  6. 6WARC arşivi (ISO 28500)WARC archive (ISO 28500)PlanlandıPlanned

    Kanıtların tam yeniden oynatılabilir kopyası için WARC; bugün PNG+HTML özeti yeterli görüldü.WARC for fully replayable copies; PNG + HTML hash is used for now.

    📄 ISO 28500:2017 WARC — explained in site2pdf legal archiving guide ↗

  7. 7Güvenilir zaman damgası (RFC 3161)Trusted timestamp (RFC 3161)PlanlandıPlanned

    Saat bilgisi bugün sunucu saatinden; mahkeme düzeyi için bağımsız zaman damgası gerekir.Time comes from the server clock today; court-grade use needs an independent timestamp.

    📄 RFC 3161 — Time-Stamp Protocol (IETF) ↗

  8. 8Görsel fiyatı değil, yapılandırılmış veriyi okuRead structured data, not the visual priceUygulandıApplied

    İlan sayfasındaki schema.org Product/Offer (ld+json) fiyatı ve para birimi okunur ve DB fiyatıyla karşılaştırılır.The schema.org Product/Offer (ld+json) price and currency on the listing page are read and compared with the DB price.

    📄 schema.org — Offer ↗

  9. 9Uyumluluk yılları ilandanFit years from the listing itselfUygulandıApplied

    isAccessoryOrSparePartFor alanı (ör. “Fiat Egea 2020 - 2024”) okunur; 76 satırın tahmini yılı ilan yılıyla değişti.The isAccessoryOrSparePartFor field (e.g. “Fiat Egea 2020 - 2024”) is read; 76 rows had their guessed years replaced by listing years.

    📄 schema.org — isAccessoryOrSparePartFor ↗

  10. 10Stok durumu: satılanı çıkarAvailability: drop sold itemsUygulandıApplied

    schema.org availability okunur; kapanmış/satılmış ilanlar işaretlenir (1 / 500).schema.org availability is read; closed / sold listings are flagged (1 / 500).

    📄 schema.org — ItemAvailability ↗

  11. 11Rastgele örnek + Wilson güven aralığıRandom sample + Wilson intervalUygulandıApplied

    500 rastgele satır canlı kontrol edildi: fiyat eşleşmesi %99.8 (GA %98.9–99.96), foto ilana ait %99.8.500 random rows were checked live: price match 99.8% (CI 98.9–99.96%), photo belongs to the listing 99.8%.

    📄 Wilson 1927 — Probable inference, the law of succession, and statistical inference (JASA) ↗

  12. 12Tazelik: kontrol tarihi her satırdaFreshness: verification date on every rowUygulandıApplied

    Kontrol edilen satırlara price_verified tarihi eklendi; ilanlar değiştikçe yeniden tarama sırası buna göre.Checked rows carry a price_verified date; re-crawl order follows it as listings change.

    📄 Cho & Garcia-Molina 2003 — Effective page refresh policies for web crawlers (ACM TODS) ↗

  13. 13robots.txt + nazik hızrobots.txt + polite rateUygulandıApplied

    /ilan/ yolu izinli; istekler 1,5 sn arayla, tek tek. Görseller CDN’den, sayfa başına bir kez.The /ilan/ path is allowed; requests 1.5 s apart, one at a time. Images come from the CDN, once each.

    📄 RFC 9309 — Robots Exclusion Protocol ↗

  14. 14Algısal özet (pHash) ile tekrar eden fotoPerceptual hash (pHash) for reused photosUygulandıApplied

    256 bitlik DCT özeti; 16 foto çifti farklı ilanlarda aynı. Bunların 4 tanesi farklı parçalar için aynı foto → gizlendi.256-bit DCT hash; 16 photo pairs are the same across different listings. 4 of them use one photo for different parts → hidden.

    📄 Zauner 2010 — Implementation and benchmarking of perceptual image hash functions ↗

  15. 15Ürün fotosu için eşik ayarıThreshold tuned for product photosUygulandıApplied

    Beyaz zeminli ürün fotolarında gevşek eşik yanlış eşleşme verir; 255 bitte ≤12 farklı bit kullanıldı (gözle kontrol edildi).On white-background product photos a loose threshold gives false matches; ≤12 differing bits out of 255 is used (checked by eye).

    📄 SimilarImageFinder — pHash hash_size 16, Hamming threshold guidance ↗

  16. 16Aynı foto çok ilanda = stok/genel fotoSame photo on many listings = stock photoUygulandıApplied

    Bir satıcının ikiz modellere (Fiorino/Nemo, Sandero/Logan…) aynı fotoyu koyması “paylaşılan foto” olarak işaretlenir; galeride yalnız bir kez gösterilir.A seller reusing one photo for twin models (Fiorino/Nemo, Sandero/Logan…) is marked “shared photo” and shown only once in the gallery.

    📄 idealo/imagededup — finding exact and near duplicates in an image collection (hashing + CNN) ↗

  17. 17Katmanlı tekrar aramaLayered duplicate searchUygulandıApplied

    Önce dosya anahtarı, sonra pHash, sonra CLIP vektör benzerliği (kosinüs ≥0,97) ile yakın kopyalar.File key first, then pHash, then CLIP-vector similarity (cosine ≥0.97) for near-duplicates.

    📄 vecstore — Duplicate image detection: hashes vs embeddings ↗

  18. 18Özet mi, vektör mü?Hash or embedding?Ölçüldü / notMeasured / noted

    Yayın: özetler birebir kopyada iyi, yakın kopyada zayıf; vektörler daha iyi. İkisi birlikte kullanıldı.Paper: hashes are good for exact copies and weak for near-copies; embeddings do better. Both are used.

    📄 MDPI Electronics 15(7):1493 — perceptual hashing vs deep embeddings for product images ↗

  19. 19CLIP sıfır-atış: foto parçayı gösteriyor mu?CLIP zero-shot: does the photo show the part?UygulandıApplied

    Tüm 2756 foto CLIP ViT-B/32 (int8 ONNX, CPU) ile puanlandı. Bulgu: 165 px küçük resimde parçalar zor ayrılıyor; büyük (570 px) resme geçildi.All 2756 photos were scored with CLIP ViT-B/32 (int8 ONNX, CPU). Finding: on 165 px thumbnails parts are hard to tell apart, so the 570 px images were used.

    📄 Radford et al. 2021 — Learning transferable visual models from natural language supervision (CLIP) ↗

  20. 20İstem şablonları ve toplulukPrompt templates and ensemblingUygulandıApplied

    Her sınıf için 3 şablon (“a photo of…”, “a used … for sale”, “a close-up photo of…”) ortalandı.Three templates per class (“a photo of…”, “a used … for sale”, “a close-up photo of…”) are averaged.

    📄 CLIP paper §3.1.4 — prompt engineering and ensembling (+3.5 points on ImageNet) ↗

  21. 21Kapsam dışı sınıflar: bütün araç, logo, yığınOut-of-scope classes: whole car, logo, pileUygulandıApplied

    Parça istemlerinin yanına “bütün araç”, “elektronik modül/anahtar”, “çok parça yığını”, “telefon ekran görüntüsü”, “bulanık” istemleri eklendi.“Whole car”, “electronic module / switch”, “pile of parts”, “phone screenshot” and “blurry” prompts were added next to the part prompts.

    📄 Esmaeilpour et al. 2022 — Zero-shot out-of-distribution detection based on CLIP (ZOC) ↗

  22. 22Güvenli öğrenme ile etiket hatası bulmaConfident learning to find label errorsUygulandıApplied

    CLIP vektörleri üzerinde katman dışı (5-kat) doğrusal sınıflandırıcı: belirtilen parçanın olasılığı çok düşükse şüpheli. Doğruluk üst-1 %82.3.Out-of-fold (5-fold) linear probe on CLIP vectors: if the stated part gets a very low probability the photo is suspect. Top-1 accuracy 82.3%.

    📄 Northcutt, Jiang & Chuang 2021 — Confident learning: estimating uncertainty in dataset labels (JAIR) ↗

  23. 23E-ticarette görsel-metin uyumsuzluğuImage-text mismatch in e-commerceUygulandıApplied

    Satıcı fotosu ile ilan metni (parça) uyuşmazlığı ayrı bir hata türü olarak ölçülüyor.A mismatch between the seller photo and the listing text (part) is measured as its own error type.

    📄 Shin et al. 2022 — e-CLIP: Large-scale vision-language representation learning in e-commerce (NAVER) ↗

  24. 24CPU’da kuantize ONNXQuantised ONNX on CPUUygulandıApplied

    GPU yok: 89 MB int8 görüntü modeli + 64 MB metin modeli, onnxruntime ile 2 CPU’da tüm fotolar dakikalar içinde.No GPU: 89 MB int8 vision + 64 MB text model with onnxruntime score all photos on 2 CPUs in minutes.

    📄 Xenova/clip-vit-base-patch32 ONNX weights (Hugging Face) ↗

  25. 25Eşiği elle etiketli örnekle ayarla, sonra yeni örnekte doğrulaTune on hand labels, then validate on a fresh sampleUygulandıApplied

    Eşik 431 elle etiketli fotoyla seçildi, ardından ayrı 48 fotoda doğrulandı: kesinlik %60.0, kalan kötü oran %2.3.The threshold was chosen on 431 hand-labelled photos, then validated on a separate 48: precision 60.0%, remaining bad rate 2.3%.

    📄 Saito & Rehmsmeier 2015 — Precision-recall plot is more informative than ROC on imbalanced data (PLOS ONE) ↗

  26. 26Emin değilsen “incele” bandıAn “uncertain → review” bandUygulandıApplied

    Kesin kötü → gizle; şüpheli → galeride kullanma ama tabloda göster; temiz → göster.Sure bad → hide; suspect → not used in the gallery but kept in the table; clean → shown.

    📄 Geifman & El-Yaniv 2019 — SelectiveNet: a deep neural network with an integrated reject option ↗

  27. 27Kısayol öğrenmeye dikkatBeware of shortcut learningÖlçüldü / notMeasured / noted

    Logo/telefon numarası basılmış fotolar CLIP’i “yazı” sınıfına çekiyor; bu yüzden “logo” tek başına kötü sayılmadı.Photos stamped with a logo / phone number pull CLIP towards “text”; so “logo” alone is not treated as bad.

    📄 Geirhos et al. 2020 — Shortcut learning in deep neural networks ↗

  28. 28Galeride yalnız doğrulanmış, sorguya özgü fotoGallery shows only verified, query-specific photosUygulandıApplied

    Web galerisi ve Telegram albümü artık yalnız “ok” fotoları kullanıyor; 96 foto gizlendi, 160 foto “incele”.The web gallery and Telegram album now use only “ok” photos; 96 photos hidden, 160 marked “review”.

    📄 NN/g — 6 tips for product photos on listing pages (“specific” photos) ↗

  29. 29Her fiyatın yanında kaynak ve kontrol tarihiSource and check date next to each priceUygulandıApplied

    Tabloda ✓ = fiyat canlı ilanda aynı (tarihli); 📷✗ = foto gizlendi, nedeni üzerine gelince.In the table ✓ = price matches the live listing (dated); 📷✗ = photo hidden, reason on hover.

    📄 Gebru et al. 2018 — Datasheets for datasets ↗

  30. 30CLIP + DINOv2 topluluğuCLIP + DINOv2 ensemblePlanlandıPlanned

    2 GB RAM’de ikinci model sığmadı; GPU ile ince taneli parça ayrımı için planlandı.A second model did not fit in 2 GB RAM; planned for finer part recognition with a GPU.

    📄 Exploring fine-grained retail product discrimination with zero-shot object classification using VLMs (arXiv 2409.14963) ↗

Kod: cekicin-ai/v8 (verify.py, photo_check.py, probe.py, badtype.py, evidence.py, apply_v8.py). Fiyat DB 2.1 · API 1.10.0.Code: cekicin-ai/v8 (verify.py, photo_check.py, probe.py, badtype.py, evidence.py, apply_v8.py). Price DB 2.1 · API 1.10.0.