Vision v iOS 11 ima vse, kar potrebujete za ustvarjanje aplikacije, ki lahko prepozna besedilne znake, pri čemer se implementacija izvaja hkrati. Ne potrebujete tehničnega znanja o kodiranju – krmarjenje po funkciji je precej preprosto. Še več, izvedba je brezhibna.
Okvir vizije
Okvir vizije vam omogoča enostavno izvajanje katere koli naloge, ki vključuje računalniške podrobnosti. Struktura izvaja zaznavanje obrazov in mejnikov obraza, prepoznavanje črtne kode, registracijo slik, sledenje splošnim funkcijam in zaznavanje besedila. Vision vam omogoča tudi uporabo modelov Core ML po meri za naloge, kot sta razvrščanje ali odkrivanje predmetov.
VN DetectTextRectanglesRequest
The VN DetectTextRectanglesRequest je zahteva za analizo slike, ki najde področja vidnega besedila na sliki; funkcija vrne besedilne znake kot pravokotno omejevalno polje z izvorom in velikostjo.
Če ste navajeni uporabljati swift in že nekaj časa programirate, se verjetno sprašujete, kakšna je uporaba Visiona, če obstajajo druge funkcije, kot sta slika in AVFoundation. No, Vision je natančnejši in bolj preprost. Funkcija je na voljo tudi na različnih platformah. Vendar pa lahko uporaba Vision zahteva več procesorske moči in časa obdelave.
Če želite uporabljati Vision za zaznavanje besedila, potrebujete Xcode 9 in napravo z operacijskim sistemom iOS 11.
Ustvarjanje kamere z Avcapture
Najprej morate ustvariti kamero z AVCapture; to je tako, da se en objekt AVcapturesession inicializira za zajem v realnem času ali brez povezave. Po tem vzpostavite sejo do povezave naprave.
Da bi vam prihranili čas pri izdelavi uporabniškega vmesnika vaše aplikacije, razmislite o začetnem projektu, saj vam bo to dalo čas, da se osredotočite na učenje ogrodja Vision.
- Odprite svoj začetni projekt. Pogledi v snemalni plošči bi morali biti pripravljeni in nastavljeni za vas.
- Na ViewController.swift, poiščite razdelek s kodami s funkcijami in vtičnicami.
- Pod vtičnico -ImageView, drazglasiti sejo za AVcapturesession – to se uporablja, kadar želite, da se dejanja izvedejo na podlagi pretoka v živo.
- Nastavite AVcapturesession in AVmediatype na video, saj boste izvedli snemanje s kamero, da omogočite neprekinjeno delovanje
- Določite izhodno in vhodno napravo
- Vhod je tisto, kar bo videla kamera, izhod pa je video v formatu nastavljenega tipa KCVPixelFormatType_32GRA.
- Na koncu dodajte a podsloj ki vsebuje videoposnetke za imageView in začnite sejo. Funkcija je znana kot inViewdidload. Prav tako morate nastaviti okvir plasti.
Pokličite funkcijo v viewWillAppear metoda.
Ker meje še niso dokončne, preglasite viewDidLayoutSubviews ( ) metoda za posodobitev vezanih plasti.
Po izdaji iOS 10 je potreben dodaten vnos v Info.plist, kar je razlog za uporabo kamere. Nastavite tudi opis uporabe zasebnosti-kamere.
zaznavanje besedila; Kako deluje Vision Framework
Obstajajo trije koraki za implementacijo Visiona v aplikaciji.
- Upravljavci – to je, ko želite, da okvir naredi nekaj po klicu zahteve.
- Opažanja – to je tisto, kar želite narediti s podatki, ki ste jih posredovali, začenši z eno zahtevo
- Zahteve – to je, ko zahtevate okvir Detect
V idealnem primeru ustvarite eno besedilno zahtevo kot VNdetecttextrectanglesrequest. To je neke vrste VNrequest ki meji okoli besedila. Ko okvir dokonča aplikacijo, nadaljujete s klicem Dettexthandler funkcijo. Prav tako boste želeli izvedeti natančen okvir, ki je bil prepoznan, in ga nastavite Poročila z znaki= Res je.
Nato določite opazovanja, ki vsebujejo vse rezultate VNdetecttextrectanglesrequest, ne pozabite dodati Vision izhodni kameri. Ker Vision razkriva API-je na visoki ravni, je delo z njim varno.
Funkcija preveri, ali je Cmsamplebuffer obstaja in PutOut Avcaptureoutput. Nato morate nadaljevati z ustvarjanjem ene spremenljivke Prošnje kot 1 vrsta slovarja VNimageoption. The VNmage možnost je vrsta strukture, ki vsebuje lastnosti in podatke iz kamere. Nato morate ustvariti VNimagerequesthandler in izvedite besedilno zahtevo.
Risanje meja okoli zaznanega besedila
Začnete lahko tako, da imate okvir za risanje dveh polj, enega za vsako črko, ki jo zazna, in drugega za vsako besedo. Tabele so kombinacija vseh znakovnih polj, ki jih bo našla vaša zahteva.
- Določite točke na svojem pogledu, ki vam bodo pomagale postaviti polja.
- Po tem ustvarite a CALayer; uporaba VN opazovanje pravokotnika da določite svoje omejitve, kar olajša postopek orisanja okvirja.
Zdaj imate vse svoje funkcije postavljene.
Če želite povezati svoje pike, začnite z asinhronim izvajanjem kode. Nato preverite, ali obstaja regija v vaših rezultatih VNTextObservation.
Zdaj lahko pokličete svojo funkcijo, ki bo narisala okvir znotraj območja. Preverite, ali so v regiji polja z znaki, nato pokličite storitev, ki prinese polje okoli vsake črke.
Po tem ustvarite spremenljivko Možnosti zahtevka. Zdaj lahko ustvarite a VNImageRequestHandler objekt in izvedite besedilno zahtevo, ki ste jo ustvarili.
Končno, zadnji korak je zagon vaše kode vizije s pretočnim predvajanjem v živo. Morali boste vzeti video izhod in ga pretvoriti v Cmsamplebuffer.
Dodatni nasveti
- Vedno poskusite obrezati sliko in obdelati samo odsek, ki ga potrebujete. To bo zmanjšalo čas obdelave in pomnilniški odtis
- Vklopite popravek jezika, ko delate z neštevilskimi znaki, in ga izklopite, ko delate s številskim znakom
- Vključite preverjanje priznanih nizov številk, da potrdite točnost in odpravite prikazovanje napačne vrednosti uporabniku.
- Krmilnik dokumentne kamere je najboljši spremljevalec za prepoznavanje besedila, saj ima kakovost slike pomembno vlogo pri prepoznavanju besedila.
- Razmislite o nastavitvi minimalne višine besedila, da povečate učinkovitost.
Z Visionom imate vse, kar potrebujete za prepoznavanje besedila. Ker je Vision enostaven za uporabo in traja kratek čas za izvedbo, je njegova uporaba skoraj enakovredna igranju z Legos. Poskusite preizkusiti svojo aplikacijo na različnih predmetih, pisavah, osvetlitvi in velikostih. Navdušite se lahko tudi s kombinacijo Visiona in Core ML.