Simple CAPTCHA elismerése GOCR és php, stackoff
A folyosón az egyik feladat a programozás kapott captcha. azt szeretnénk, hogy el kell ismerni 15 másodpercen belül. Kézzel megadott adatok lehetetlen, mivel ez áll a 96 karakter, az ábécé 16 hexadecimális értéket. Igen, úgy, hogy ez egy hosszú CAPTCHA 🙂 De a feladatot, így a programozás ág, akkor mi dönti el.
Külsőleg, a kép így néz ki:
Az előnye, hogy generáló algoritmust tartalmazhat kis betűket és a számuk. Ami a többit illeti, hogy felbomlik ez nem nehéz. Elismerés a CAPTCHA, mint bármely más formában képeket lehet tenni a különböző módon. Úgy döntöttem, hogy a kész OCR. Ez a fajta dolog, hogy nem a legtöbb munka számunkra. Kísérlet a különböző szoftver tervezett optikai karakterfelismerés, megállt GOCR. Ez a program létezik az összes elterjedt operációs rendszer, de ez inkább kellemes - ez az Ubuntu tárolókban (ami Backbox forgalmazás épül).
telepítése GOCR
Régebben élvezni a menedzser APT csomagot, így:
Gotsr beállítás, akkor ellenőrizze annak teljesítményét futó terminál GOCR <опции> / Path / to / kép
Mivel esetünkben egy bázis értékek 0-9 és a-f definiáljuk őket paraméter C.
Nem rossz. Sikeresen által elismert szinte az összes karakter, kivéve a négy, kilenc és nulla, ami már piros színnel kiemelve. Ez lehet hagyni, és így van, de ez nem fog működni, hagyja az ügyet a rand () a sorsa egy rossz ötlet. Tehát van két lehetőség közül választhat:
- vonat GOCR pontos felismerése problémás karakterek
- használja a lehetőséget, hogy javítsa
Azért választottam a második utat, mivel a keresést információra képzés gOCR'a vágy adósságait. Esett a választás, a PHP és a GD-modul.
Kivágott 0, 4 és 9 egyéni fájlokat, elkezdtem kódoló szarvasmarha.
A hívás indításához keresztül shell_exec GOCR és lefordítja a karakterek a tömbben.
Aztán majd át az így kapott szöveget, és ha nnatknulis egy ellentmondásos karakter, ami lehet 0, 4, vagy kilenc - ami a mi GetChar funkció (pozíció) érv helyzetét egy karakterhez.
funkció feladata, hogy hasonlítsa össze a kép darab nyert teljes CAPTCHA minden faragott kézzel általam karaktereket. Ha a szám a fehér pixelek a két darabot ugyanabban a helyzetben több mint 8 egység, az írható $ válasz [$ pos].
Levezetjük a végeredmény a feldolgozás után.