iOS 11:n Visionissa on kaikki mitä tarvitset sellaisen sovelluksen luomiseen, joka tunnistaa tekstimerkit ja toteutus tapahtuu samanaikaisesti. Et tarvitse teknistä koodausosaamista – ominaisuudessa navigointi on melko yksinkertaista. Lisäksi toteutus on saumatonta.
Visio Framework
Visiokehyksen avulla voit helposti toteuttaa minkä tahansa tehtävän, joka sisältää tietokoneen yksityiskohtia. Rakenne suorittaa kasvojen ja kasvojen maamerkkien tunnistuksen, viivakooditunnistuksen, kuvien rekisteröinnin, yleisen piirteiden seurannan ja tekstin tunnistuksen. Vision antaa sinun käyttää myös mukautettuja Core ML -malleja tehtäviin, kuten luokitteluun tai objektien havaitsemiseen.
VN DetectTextRectanglesRequest
The VN DetectTextRectanglesRequest on kuva-analyysipyyntö, joka löytää kuvasta näkyvän tekstin alueita; ominaisuus palauttaa tekstimerkit suorakaiteen muotoisena rajoitusalueena alkuperän ja koon kanssa.
Jos olet tottunut käyttämään swiftiä ja olet ohjelmoinut jonkin aikaa, olet todennäköisesti miettinyt, mitä hyötyä Visionista on, kun siinä on muita ominaisuuksia, kuten kuva ja AVFoundation. No, Visio on tarkempi ja yksinkertaisempi. Ominaisuus on saatavilla myös useille alustoille. Visionin käyttäminen saattaa kuitenkin vaatia enemmän käsittelytehoa ja käsittelyaikaa.
Jotta voit käyttää Visionia tekstintunnistukseen, tarvitset Xcode 9:n ja laitteen, jossa on iOS 11.
Kameran luominen Avcapturen avulla
Ensin sinun on luotava kamera AVCapture; tämä on alustamalla yksi objekti AVcapturesession suorittamaan reaaliaikaista tai offline-kaappausta. Tee sen jälkeen istunto laiteyhteyteen.
Jos haluat säästää aikaa sovelluksesi käyttöliittymän rakentamisesta, harkitse aloitusprojektia, joka antaa sinulle aikaa keskittyä Vision-kehyksen oppimiseen.
- Avaa aloitusprojektisi. Kuvakäsikirjoituksen näkymien pitäisi olla valmiita ja asetettuja sinua varten.
- Käytössä ViewController.swift, etsi koodiosa, jossa on toimintoja ja pistorasioita.
- Pistorasian alla-ImageView, dilmoittaa istunto AVcapturesession – Tätä käytetään aina, kun haluat suorittaa toimintoja suoratoiston perusteella.
- Aseta AVcapturesession ja AVmediatyyppi videoon, koska suoritat kamerakuvauksen, jotta se toimii jatkuvasti
- Määritä lähtö- ja syöttölaite
- Kamera näkee tulon, ja ulostulo on video tietyssä muodossa KCVPixelFormatType_32GRA.
- Lisää lopuksi a alikerros joka sisältää videoita imageView ja aloita istunto. Toiminto tunnetaan nimellä inViewdidload. Sinun on myös asetettava kerroksen kehys.
Kutsu toiminto kohdassa viewWillAppear menetelmä.
Koska rajoja ei ole vielä vahvistettu, ohita viewDidLayoutSubviews ( ) tapa päivittää sidotut tasot.
iOS 10:n julkaisun jälkeen tarvitaan lisämerkintä Info.plist-luetteloon, mikä antaa syyn kameran käyttöön. Sinun tulee myös asettaa Privacy-Camera Usage Description.
Tekstin tunnistus; Miten Vision Framework toimii
Visionin käyttöönotto sovelluksessa on kolme vaihetta.
- Käsittelijät – Tämä on silloin, kun haluat kehyksen tekevän jotain pyynnön kutsumisen jälkeen.
- Havainnot - tämä on mitä haluat tehdä toimittamillasi tiedoilla alkaen yhdestä pyynnöstä
- Pyynnöt - tämä on, kun pyydät Detect-kehystä
Ihannetapauksessa luot yhden tekstipyynnön muodossa VNdetecttextrectanglesrequest. Tämä on eräänlainen VNrequest joka rajautuu tekstin ympärille. Kun kehys on suorittanut hakemuksen, jatka soittamista Dettexthandler toiminto. Haluat myös tietää tarkan tunnistetun kehyksen ja asettaa sen Raporttimerkkilaatikot= Totta.
Määritä sen jälkeen havainnot, jotka sisältävät kaikki tulokset VNdetecttextrectanglesrequest, muista lisätä Vision lähtökameraan. Koska Vision paljastaa korkean tason API: t, työskentely sen kanssa on turvallista.
Toiminto tarkistaa, onko Cmsamplebuffer olemassa ja PutOut Avcapture-tulostus. Sitten sinun tulee jatkaa yhden muuttujan luomista Pyynnöt 1 sanakirjatyyppinä VN-kuvavaihtoehto. The VNmage vaihtoehto on eräänlainen rakenne, joka sisältää ominaisuuksia ja tietoja kamerasta. Sinun pitäisi sitten luoda VNimagerequesthandler ja suorita tekstipyyntö.
Reunusten piirtäminen havaitun tekstin ympärille
Voit aloittaa piirtämällä kaksi laatikkoa, yhden jokaiselle havaitsemalleen kirjaimelle ja toisen jokaiselle sanalle. Taulukot ovat kaikkien pyyntösi löytämien merkkiruutujen yhdistelmä.
- Määrittele näkymäsi kohdat, jotta voit sijoittaa laatikot.
- Luo sen jälkeen a CALayer; käyttää VNsuorakulmion havainnointi määrittääksesi rajoituksesi, mikä helpottaa laatikon hahmottamista.
Sinulla on nyt kaikki toiminnot valmiina.
Yhdistä pisteesi aloittamalla koodin suorittaminen asynkronisesti. Tarkista sitten, onko tuloksissasi aluetta VNText Observation.
Voit nyt soittaa funktiollesi, joka piirtää laatikon alueelle. Tarkista, onko alueella merkkiruutuja, ja soita sitten palveluun, joka tuo laatikon jokaisen kirjaimen ympärille.
Luo sen jälkeen muuttuja RequestOptions. Voit nyt luoda a VNImageRequestHandler objekti ja suorita luomasi tekstipyyntö.
Lopuksi, viimeinen vaihe on visiokoodisi suorittaminen suoratoiston kanssa. Sinun on otettava videolähtö ja muutettava se muotoon Cmsamplebuffer.
Lisävinkkejä
- Yritä aina rajata kuvaa ja käsitellä vain tarvitsemasi osa. Tämä vähentää käsittelyaikaa ja muistitilaa
- Ota kielen korjaus käyttöön, kun käsittelet ei-numeerisia merkkejä ja poista se käytöstä, kun käsittelet numeerista merkkiä
- Sisällytä tunnistettujen numeromerkkijonojen vahvistus vahvistaaksesi tarkkuuden ja estääksesi väärän arvon näyttämisen käyttäjälle.
- Dokumenttikameraohjain on paras kumppani tekstintunnistukseen, koska kuvanlaadulla on tärkeä rooli tekstintunnistuksessa.
- Harkitse tekstin vähimmäiskorkeuden asettamista tehokkuuden parantamiseksi.
Visionilla sinulla on kaikki mitä tarvitset tekstintunnistusta varten. Koska Vision on helppokäyttöinen ja sen käyttöönotto vie vähän aikaa, sen käyttäminen vastaa melkein Legoilla pelaamista. Kokeile sovellusta testata erilaisilla objekteilla, fonteilla, valaistuksella ja kokoilla. Voit myös tehdä vaikutuksen yhdistämällä Visionin Core ML: n kanssa.