Vision u iOS-u 11 ima sve što vam je potrebno za izradu aplikacije koja može prepoznati tekstualne znakove s implementacijom koja se odvija istovremeno. Ne trebate tehničko znanje o kodiranju - navigacija značajkom je prilično jednostavna. Štoviše, implementacija je besprijekorna.
Okvir vizije
Okvir vizije omogućuje vam da jednostavno implementirate bilo koji zadatak koji uključuje računalne detalje. Struktura obavlja otkrivanje lica i orijentira lica, prepoznavanje crtičnog koda, registraciju slike, praćenje općih značajki i otkrivanje teksta. Vision vam također omogućuje korištenje prilagođenih Core ML modela za zadatke poput klasifikacije ili otkrivanja objekata.
VN DetectTextRectanglesRequest
The VN DetectTextRectanglesRequest je zahtjev za analizu slike koji pronalazi područja vidljivog teksta na slici; značajka vraća tekstualne znakove kao pravokutni granični okvir s ishodištem i veličinom.
Ako ste navikli koristiti swift i već neko vrijeme programirate, vjerojatno se pitate kakva je upotreba Visiona kada postoje druge značajke kao što su slika i AVFoundation. Pa, Vision je točniji i jednostavniji. Značajka je također dostupna na raznim platformama. Međutim, korištenje Visiona može zahtijevati više procesorske snage i vremena obrade.
Da biste koristili Vision za otkrivanje teksta, trebat će vam Xcode 9 i uređaj koji pokreće iOS 11.
Izrada kamere s Avcapture
Prvo morate izraditi kameru s AVCapture; to je inicijaliziranjem jednog objekta AVcapturesession za izvođenje snimanja u stvarnom vremenu ili izvan mreže. Nakon toga uspostavite sesiju s vezom uređaja.
Kako biste uštedjeli vrijeme od izrade korisničkog sučelja vaše aplikacije, razmislite o pokretanju projekta, za početak, to će vam dati vremena da se usredotočite na učenje okvira Vision.
- Otvorite svoj početni projekt. Prikazi u storyboardu trebali bi biti spremni i postavljeni za vas.
- Na ViewController.swift, potražite odjeljak koda s funkcijama i utičnicama.
- Ispod utičnice-ImageView, dproglasiti sjednicu za AVcapturesession – koristi se kad god želite da se radnje izvode na temelju streama uživo.
- Postavi AVcapturesession i AVmedijski tip na video jer ćete izvesti snimanje fotoaparatom kako biste omogućili njegovo neprekidno pokretanje
- Definirajte izlazni i ulazni uređaj
- Ulaz je ono što će kamera vidjeti, a izlaz je video u formatu postavljenog tipa KCVPixelFormatType_32GRA.
- Na kraju dodajte a podsloj koji sadrži videozapise za imageView i započnite sesiju. Funkcija je poznata kao inViewdidload. Također morate postaviti okvir sloja.
Pozovite funkciju u viewWillAppear metoda.
Kako granice još nisu dovršene, nadjačajte viewDidLayoutSubviews ( ) metoda za ažuriranje vezanih slojeva.
Nakon izlaska iOS-a 10 potreban je dodatni unos u Info.plist, što daje razlog za korištenje kamere. Također biste trebali postaviti opis korištenja kamere za privatnost.
Prepoznavanje teksta; Kako funkcionira Vision Framework
Postoje tri koraka za implementaciju Visiona u aplikaciji.
- Rukovaoci – ovo je kada želite da okvir učini nešto nakon pozivanja zahtjeva.
- Zapažanja – to je ono što želite učiniti s podacima koje ste dali počevši s jednim zahtjevom
- Zahtjevi - ovo je kada tražite okvir Detect
U idealnom slučaju, izradite jedan tekstualni zahtjev kao VNdetecttextrectanglesrequest. Ovo je neka vrsta VNrequest koji graniči oko teksta. Nakon što okvir dovrši aplikaciju, nastavljate s pozivanjem Dettexthandler funkcija. Također ćete htjeti znati točan okvir koji je prepoznat, postavite ga na Kutije za znakove izvješća= Istina.
Nakon toga definirajte opažanja koja sadrže sve rezultate VNdetecttextrectanglesrequest, ne zaboravite dodati Vision izlaznoj kameri. Budući da Vision izlaže API-je visoke razine, rad s njim je siguran.
Funkcija provjerava je li Cmsamplebuffer postoji i PutOut Avcaptureoutput. Zatim biste trebali nastaviti s stvaranjem jedne varijable Zahtjevi kao 1 Vrsta rječnika VNimageopcija. The VNmage opcija je vrsta strukture koja sadrži svojstva i podatke iz kamere. Zatim biste trebali kreirati VNimagerequesthandler i izvršite tekstualni zahtjev.
Otkriveno crtanje granica oko teksta
Možete započeti tako da imate okvir za crtanje dva okvira, jedan za svako slovo koje detektuje, a drugi za svaku riječ. Tablice su kombinacija svih okvira znakova koje će pronaći vaš zahtjev.
- Definirajte točke na svom pogledu kako biste lakše pozicionirali okvire.
- Nakon toga kreirajte a CALayer; koristiti VNpromatranje pravokutnika definirati svoja ograničenja, što olakšava proces ocrtavanja okvira.
Sada imate sve svoje funkcije.
Da biste povezali svoje točke, počnite s asinkronim izvođenjem koda. Zatim biste trebali provjeriti postoji li regija unutar vaših rezultata VNTextObservation.
Sada možete pozvati svoju funkciju, koja će nacrtati okvir unutar područja. Provjerite postoje li okviri za znakove unutar regije, a zatim nazovite uslugu koja donosi okvir oko svakog slova.
Nakon toga kreirajte varijablu RequestOptions. Sada možete kreirati a VNImageRequestHandler objekt i izvršite tekstualni zahtjev koji ste kreirali.
Konačno, posljednji korak je pokretanje vašeg koda vizije uz stream uživo. Morat ćete uzeti video izlaz i pretvoriti ga u Cmsamplebuffer.
Dodatni savjeti
- Uvijek pokušajte izrezati sliku i obraditi samo dio koji vam je potreban. To će smanjiti vrijeme obrade i memorijski otisak
- Uključite ispravljanje jezika kada radite s nenumeričkim znakovima, a zatim ga isključite kada radite s brojčanim znakom
- Uključite provjeru za prepoznate nizove brojeva kako biste potvrdili točnost i eliminirali pokazivanje lažne vrijednosti korisniku.
- Kontroler kamere za dokumente najbolji je suputnik za prepoznavanje teksta jer kvaliteta slike igra značajnu ulogu u prepoznavanju teksta.
- Razmislite o postavljanju minimalne visine teksta kako biste povećali izvedbu.
Uz Vision imate sve što vam je potrebno za prepoznavanje teksta. Budući da je Vision jednostavan za korištenje i potrebno mu je kratko vrijeme za implementaciju, korištenje je gotovo jednako igranju s Legos kockicama. Pokušajte testirati svoju aplikaciju na različitim objektima, fontovima, osvjetljenju i veličinama. Također možete impresionirati sami sebe kombiniranjem Visiona s Core ML-om.