Müşterilerin gerçekten gönderdiği ruhsat fotoğraflarında, kırk bine yakın okumayla ölçüldü. Fotoğraf girer, (E) şase numarası çıkar; tek bir API isteği, ortalama 2,9 saniye.
// ruhsat.jpg → (E) şase no { "vin": "W0LPD6EC4G8042117", "confidence": 0.97, "doubtful": [], "tail8": "G8042117", "ms": 2740 }
Müşteriniz telefonda okur, operatörünüz yazar. On yedi hane, hepsi birbirine benzeyen harf ve rakam. Aşağıdaki numarayı yazmayı deneyin; saat sizin.
Yapıştırmak saymıyor: müşteriniz telefonda okurken o seçenek yok.
Belgenin geri kalanı işimize yaramıyor, o yüzden hiç dokunmuyoruz. Fotoğraf gelir, şase satırı kesilir, okumaya yalnız o şerit gider. Ad, adres ve plaka hiçbir yere gönderilmez.
Fotoğrafı gönderirsiniz, şase numarasını ve ne kadar emin olduğumuzu alırsınız. epc.vin API hesabınız varsa anahtar da aynı.
using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", $"Bearer {key}"); using var form = new MultipartFormDataContent(); form.Add(new StreamContent(File.OpenRead(path)), "photo", "ruhsat.jpg"); var res = await http.PostAsync( "https://api.epc.vin/v1/vin-photo", form); var read = await res.Content.ReadFromJsonAsync<VinRead>(); Console.WriteLine(read.Vin); // W0LPD6EC4G8042117 record VinRead(string Vin, double Confidence, int[] Doubtful, string Tail8, int Ms);
import { openAsBlob } from "node:fs"; const form = new FormData(); form.append("photo", await openAsBlob(path), "ruhsat.jpg"); const res = await fetch("https://api.epc.vin/v1/vin-photo", { method: "POST", headers: { Authorization: `Bearer ${key}` }, body: form, }); const read = await res.json(); console.log(read.vin); // W0LPD6EC4G8042117
import os, requests key = os.environ["EPC_KEY"] with open("ruhsat.jpg", "rb") as photo: res = requests.post( "https://api.epc.vin/v1/vin-photo", headers={"Authorization": f"Bearer {key}"}, files={"photo": ("ruhsat.jpg", photo, "image/jpeg")}, timeout=30, ) read = res.json() print(read["vin"]) # W0LPD6EC4G8042117
$key = getenv('EPC_KEY'); $ch = curl_init('https://api.epc.vin/v1/vin-photo'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer $key"], CURLOPT_POSTFIELDS => [ 'photo' => new CURLFile('ruhsat.jpg', 'image/jpeg'), ], ]); $read = json_decode(curl_exec($ch), true); echo $read['vin']; // W0LPD6EC4G8042117
use Illuminate\Support\Facades\Http; $read = Http::withToken(config('services.epc.key')) ->attach('photo', file_get_contents($path), 'ruhsat.jpg') ->post('https://api.epc.vin/v1/vin-photo') ->json(); echo $read['vin']; // W0LPD6EC4G8042117
Şüpheli bir hane varsa doubtful onun sırasını verir. Böylece kullanıcınıza hangi haneyi onaylatacağınızı bilirsiniz.
En pahalı hata, yanlış bir şase numarasını doğru gibi vermek. O yüzden okuma şüpheliyse numara yine geliyor, ama şüpheli hanelerin sırası ayrıca bildiriliyor. Onayı kullanıcınıza siz soruyorsunuz.
Ölçüm, müşterilerin gerçekten gönderdiği ruhsat fotoğraflarıyla yapıldı: kırk dört ayrı yapılandırma, kırk bine yakın okuma. Doğru cevapları birbirinden bağımsız okuyucuların birebir anlaşmasıyla koyduk; anlaşamadıklarını tek tek elle okuduk.
WhatsApp'tan gelen ruhsat fotoğrafı doğrudan araç sorgusuna dönüşüyor. Telefonda müşteriye şase okutmak bitiyor.
Poliçede ve hasar dosyasında şase numarası fotoğraftan geliyor, kimse elle girmiyor.
Alım sırasında tek fotoğrafla şase numarası kayda geçiyor, plakadan değil belgenin kendisinden.
Araç teslim ve iade formlarında şase doğrulaması saniyeye iniyor.
Ayda kaç ruhsat okutacağınızı söyleyin, size bir fiyat ve bir deneme anahtarı çıkaralım. En sağlıklısı, kendi fotoğraflarınızdan yüz tanesiyle ölçüp sonucu birlikte görmek.
ruhsat@epc.vin