[tekst herkenning] 3 cijfers uit plaatje lezen
Voor een klein projectje zou ik graag de tekst (in mijn geval ALTIJD 3 cijfers) uit een *.JPG lezen.
Onderstaand het plaatje (320x240 resolutie) waarover het gaat:
(uiteraard staan de 3 cijfers steeds op dezelfde plek!)
Denken jullie dat dit überhaupt mogelijk is? (ik vraag dit i.v.m. de redelijk lage resolutie c.q. mindere kwaliteit...)
Ik ben (op de Raspberry Pi) bekend met ALPR, maar tijdens diverse testen bleek het met dit plaatje niet te lukken.
Wie helpt me op weg? :)
Thanks!!!!
Sjef
Zijn er geen andere OCR-libraries?
- Ariën - op 06/12/2019 17:41:32:
Het is toch geen kentekenplaaat? Dus ik denk dat ALPR niet de juiste manier is.
Nee precies, daar was ik dus ook al achter.
Vandaar ook de vraag hier of er een andere manier is.
Quote:
Zijn er geen andere OCR-libraries?
Ik heb er een aantal geprobeerd, maar omdat mijn kennis van PHP niet extreem groot is krijg ik die niet werkend.
Mvg,
Sjef
https://maker.pro/raspberry-pi/tutorial/optical-character-recognizer-using-raspberry-pi-with-opencv-and-tesseract
Misschien is het zinvoller om het project te verdelen in twee stappen:
- Ga eerst een library zoeken die de gelezen waarde kan outputten
- Breng het dan naar PHP via system() bijvoorbeeld.
Gewijzigd op 06/12/2019 18:08:15 door - Ariën -
- Ariën - op 06/12/2019 18:07:30:
Kan je hier wat mee?
https://maker.pro/raspberry-pi/tutorial/optical-character-recognizer-using-raspberry-pi-with-opencv-and-tesseract
Misschien is het zinvoller om het project te verdelen in twee stappen:
- Ga eerst een library zoeken die de gelezen waarde kan outputten
- Breng het dan naar PHP via system() bijvoorbeeld.
https://maker.pro/raspberry-pi/tutorial/optical-character-recognizer-using-raspberry-pi-with-opencv-and-tesseract
Misschien is het zinvoller om het project te verdelen in twee stappen:
- Ga eerst een library zoeken die de gelezen waarde kan outputten
- Breng het dan naar PHP via system() bijvoorbeeld.
Bedankt voor je snelle reactie.
Eigenlijk is het niet de bedoeling om het met de Raspberry werkend te krijgen, ik gaf dit alleen aan dat ik bekend was (en het ermee geprobeerd had) met ALPR maar dat dit niet werkte (waarschijnlijk om de reden die je al noemde: het is geen kentekenplaat).
Dus het mooiste/fijnste zou gewoon een volledige oplossing in PHP zijn. Het plaatje komt van een webcam, dus daar hoef ik maar met cURL die *.JPG uit te halen om hem vervolgens met (iets in) PHP uit te lezen :)
Toevoeging op 06/12/2019 20:21:52:
Tesseract is een mooie oplossing. Als je dit geinstalleerd hebt, kan je heel eenvoudig een afbeelding uitlezen op de volgende manier:
Ik ben begonnen met de foto uit de camera te halen:
Daarna maak ik hier een black & white afbeelding van:
Vervolgens kijk ik naar de pixels op de juiste plek of deze "AAN" of "UIT" staan.
Ik sla voor ieder cijfer (totaal dus 3) de segmenten op als een string met 1'en en 0'en (het cijfer 8 = "1111111")
En als laatste vergelijk ik dat met simpele if then om uiteindelijk de 3 cijfers neer te zetten.
Werkt gewoon 100% perfect. (nog geen enkele mismatch gehad!!)
En omdat het toch om camerabeelden gaat, en omdat het in deze fase nog maar een "test" is en straks elders weer opnieuw wordt geïnstalleerd/opgebouwd heb ik voor het gemak een "kalibratie-programmaatje" geschreven zodat ik heel makkelijk en snel de posities van de (3x7) segmenten kan "leren". Het is een programma in VB.NET en spuugt de benodigde PHP-code uit. Op die manier heb ik binnen 1 minuut alle locaties van de segmenten. Of het nu (zoals in dit geval) een 320x240 afbeelding is, of straks een 1920x1080 of whatever. Dit werkt altijd!!
Toch wel een beetje trots dat het zo goed werkt!!!!
Thanks allen.
Mvg,
Sjef
Gewijzigd op 08/12/2019 05:44:50 door sjef dresen
Creatief bedacht! :-)
PHP | bindec( ) Function
While working with numbers, many times we need to convert the bases of number and one of the most frequent used conversion is binary to decimal conversion. PHP provides us with a built-in function bindec() for this purpose. The bindec() function in PHP is used to return the decimal equivalent of the binary number. It accepts a string argument which is the binary number we want to convert to decimal.