PRESSMEDDELANDE •  tisdag 25 mars 2025

Ny OCR-teknik ökar annonsens kvalité avsevärt

mcparken är ett varumärke med en ambition att bli nummer ett för hela motorcykel- och snöskotermarknaden i såväl Sverige som Norden för både privatpersoner och företag med teknik och tjänster i framkant för att öka digitaliseringen och sänka kostnader för hela branschen. I en utmanande tid startade mcparken bara några veckor före pandemin och motorcykelmässan i Göteborg 2020. Det började med en annons och en besökare. Därifrån har resan varit minst sagt utmanande med såväl pandemier, stigande räntor, krig och oroligheter. Då det finns konkurrenter på marknaden som är väldigt starka, bestämde vi oss tidigt att det här blir inte lätt, och kommer ta tid, lång tid. Idag har det gått fyra år, tusentals timmar har producerat såväl tjänster som digitalt innehåll och vi har nu ett erkänt varumärke, 54.000 annonser har skapat och drygt 45 miljoner besök har hittat till mcparken vilket innebär era varumärken, annonser och tjänster.

Manuellt arbete

En av grundstenarna till ökade besök är och har varit att vi ger detaljerad information om vad lån kostar, information om motorcykeln och inte minst registreringsnummer där det går att få fram för att behålla användaren så länge som möjligt på er annons. I och med registreringsnummer kan vi med vår sponsor biluppgifter.se fylla på våra annonser med information som km/h, vikt, däckdimension, sitthöjd, växlar och mycket mer. Men det har krävt manuellt arbete att titta igenom alla annonser efter en registreringsskylt, manuellt knappa in den i systemet och hämta ut informationen. De 6.000 första annonserna skrevs också in helt manuellt.

Provade ny teknik

I takt med att vi fick med flera handlare så har mängden annonser ökat och ökat vilket gör att det inte räcker med en timma per dag att göra detta manuella arbetet. Det var då vi byggde den första motorn för att hämta in annonserna automatiskt. Varje månad så läses det in hundratals annonser både från företag och privatpersoner, men att få registreringsnummer var lika omfattande. Vi har länge funderat på en lösning men inte hittat något fram tills hösten 2024. Då kom vi i kontakt med en produkt och tjänst som heter Plate Recognizer. Ett företag som har specialiserat sig på tjänster att kunna läsa av nummerplåtsinformation både snabbt och träffsäkert.

Framgångsrika tester

Vi tecknade upp ett konto och började använda oss av tjänsten för att se hur bar och träffsäker den var. Tjänsten kördes i bakgrunden och uppdaterade inte någon information, bara samlade antalet träffar på registreringsnummer för att sedan manuellt tittas igenom. Till min förvåning var det nästan 95% av de nummerplåtar som syntes på någon bild - kunde också läsa av rätt information! 

Implementerat i produktion

Efter några månaders test valde vi att implementera det i produktion och sedan i december har systemet för varje annons som läggs ut, sökt nummerplåt och när vi är säkra på att det är ett registreringsnummer (genom kontrollrutiner för att validera registreringnummer) så skickas informationen till biluppgifter.se för att hämta ut fordonsinformationen. I detta skede så uppdateras annonsen med ytterligare information. Det är därför det är så fördelaktigt att en mc-handlare tar någon av bilderna relativt rakt bakifrån för att kunna läsas av. Här kan jag berätta att tjänsten är väldigt duktig på att läsa av relativt avancerade vinkar ibland. Det som oftast missas på är om det är för starkt ljus i närheten av nummerplåten, men det är väldigt sällan det sker.

Det vi önskar framöver är att de annonsörer som lägger upp 10-15 bilder så vet man inte vilken bild som är registreringsnummer. Så vi börjar med att skicka in bild efter bild. När vi får en träff så avbryter vi och hämtar informationen, sen går vi till nästa annons. Här skulle det vara önskvärt att annonsören sorterade bild med registreringsnummer bland de första för att snabba upp processen och minska antalet anrop.

Effekt och värde

I och med denna fantastiskt stabila och effektiva tjänst så kan vi tillföra mervärde på våra annonser såväl för den som vill kontakta försäkringsbolag för att räkna ut premie samt att få all information samlad på en sida för kunden, något som vi verkligen har fokuserat mycket på. Kunden ska inte behöva lämna annonsen utan se det som behövs för att kunna visa sitt intresse att köpa fordonet.

Sponsor

Nu när motorcykelsäsongen börjar ta fart så ökar också antalet annonser och bilder. Testkontot tog slut och därför är vi Vi är mycket tacksamma och stolta att presentera vår sponsor från Budapest, https://platerecognizer.com som erbjuder detta fantastiska system som vilken tjänst eller företag kan implementera själva som en tjänst eller en del av en produkt som ett företag eller startup vill ta fram och utveckla. Ett gratiskonto är väldigt generöst, 2500 anrop per månad erbjuds. Vi tackar så mycket för att vi har fått stöd och hjälp samt support vid testning av detta system. Även om vi hade kunnat klara det själv så är det tryggt att veta att det finns mängder med kunskap runt denna tjänst.

OCR-teknik

För den som vill veta hur ett anrop ser ut så är det väldigt enkelt. Du skickar en bild till en adress och får tillbaka två svar. Dels ett förslag på registreringsnummer samt ett trolighetsvärde på att detta är ett registreringsnummer. Svårare än så är det inte. Här kommer en exempelkod för att visa hur tjänsten fungerar. Om du är intresserad och funderar på att bygga tjänster likt denna och vill kontakta oss eller platerecognizer så tveka inte att höra av dig. Jag är referens till denna tjänst när som helst, den är fantastisk! 

Kodexempel i vb.net

Här visar jag ett enkelt exempel på hur du använder platerecognizer och deras API för att skicka in en bild och få tillbaka information samt sannolikhet på att det är ett registreringsnummer. Det bästa med rutinen är att den klarar flera typer, speciellt motorcyklar som har två rader på registreringsnummer att läsa av. Nedan kod är baserat på dokumentationen för tjänsten, https://guides.platerecognizer.com/docs/snapshot/api-reference/#introduction.

Nytt för tjänsten är också att de har en webbhook om man vill använda asynkrona resultat. 


 

Public Class Product_VinResponse

Public Property Value As String

Public Property StatusId As String

Public Property AdminResult As String

Public Property brand As String

Public Property model As String

Public Property year As String

Public Property regnr As String

Public Property score As String

Public Property viechletype As String

End Class

Public Shared Function MakeRequestToOCRScanner(filePath As String) As Product_VinResponse

Dim token As String = "25..."

Dim regions As String = "se"

Dim cameraId As String = ""

Dim uploadBase64 As Boolean = False

Dim sdkUrl As String = "https://api.platerecognizer.com/v1/plate-reader/"

' lagra resultatet

Dim objresponse As New Product_VinResponse

Debug.WriteLine("Startar Request..")

Using httpClient As New HttpClient()

Dim formData As New MultipartFormDataContent()

Dim fileName As String = Path.GetFileName(filePath)

Dim fileBytes As Byte() = File.ReadAllBytes(filePath)

formData.Add(New ByteArrayContent(fileBytes), "upload", fileName)

If Not String.IsNullOrEmpty(regions) Then

formData.Add(New StringContent(regions), "regions")

End If

If Not String.IsNullOrEmpty(token) Then

httpClient.DefaultRequestHeaders.Authorization = New Headers.AuthenticationHeaderValue("Token", token)

End If

' returnerar "Created"

Dim response = httpClient.PostAsync(sdkUrl, formData).Result

' Mer detaljerad responsanalys

Dim responseBody As String = response.Content.ReadAsStringAsync().Result

If response.IsSuccessStatusCode Then

' Omvandla JSON till dynamiskt objekt

Dim jsonObject As JObject = JObject.Parse(responseBody)

' Använd JSON-objektet direkt

' Debug.WriteLine($"Full response: {jsonObject.ToString()}")

' hämtar ut datat ..

Dim results As JArray = jsonObject("results")

For Each result As JObject In results

Dim plate As String = result("plate").ToString().ToUpper

Dim score As Double = result("score").ToObject(Of Double)()

If plate.Length = 6 Then

objresponse.regnr = plate

objresponse.score = score

Else

' skicka inte tillbaka någon information alls

End If

Debug.WriteLine($"Plate: {plate}")

Debug.WriteLine($"Score: {score}")

' Hämta fordonsinformation om det finns

Dim vehicle As JObject = result("vehicle")

If vehicle IsNot Nothing Then

Dim vehicleType As String = vehicle("type").ToString()

Dim vehicleScore As Double = vehicle("score").ToObject(Of Double)()

objresponse.viechletype = vehicleType

Debug.WriteLine($"Vehicle Type: {vehicleType}")

Debug.WriteLine($"Vehicle Score: {vehicleScore}")

End If

Next

Else

Debug.WriteLine($"HTTP Error: {response.StatusCode}")

Debug.WriteLine($"Response Body: {responseBody}")

End If

End Using

Return objresponse

End Function

Relaterad media