Vision i iOS 11 har allt du behöver för att skapa en app som kan känna igen texttecken med implementering som sker samtidigt. Du behöver ingen teknisk kodningskunskap – det är ganska enkelt att navigera i funktionen. Dessutom är implementeringen sömlös.
Vision Framework
Visionsramverket gör att du enkelt kan implementera alla uppgifter som involverar datordetaljer. Strukturen utför ansikts- och ansiktsdetektering, streckkodsigenkänning, bildregistrering, allmän funktionsspårning och textdetektering. Vision låter dig också använda anpassade Core ML-modeller för uppgifter som klassificering eller objektdetektering.
VN DetectTextRectanglesRequest
De VN DetectTextRectanglesRequest är en begäran om bildanalys som hittar områden med synlig text i en bild; funktionen returnerar texttecken som en rektangulär begränsningsram med ursprung och storlek.
Om du är van vid att använda swift och har programmerat ett tag, så undrar du förmodligen vad Vision har för användning när det finns andra funktioner som bild och AVFoundation. Tja, Vision är mer exakt och enklare. Funktionen är också tillgänglig på en mängd olika plattformar. Användning av Vision kan dock kräva mer processorkraft och bearbetningstid.
För att använda Vision för textdetektering behöver du Xcode 9 och en enhet som kör iOS 11.
Skapa en kamera med Avcapture
Först måste du skapa en kamera med AVCapture; detta är genom att initiera AVcapturesession med ett objekt för att utföra realtids- eller offlinefångst. Efter det gör du sessionen till enhetens anslutning.
För att spara tid från att bygga ett användargränssnitt för din app, överväg att ha ett startprojekt, till att börja med kommer detta att ge dig tid att fokusera på att lära dig Vision-ramverket.
- Öppna ditt startprojekt. Vyerna i storyboardet bör vara klara och inställda för dig.
- På ViewController.swift, leta efter koddelen med funktioner och uttag.
- Under utloppet-ImageView, dförklara en session för AVcapturesession – detta används när du vill att åtgärder ska utföras baserat på en livestream.
- Ställ in AVcapturesession och den AV-mediatyp till video eftersom du kommer att utföra kamerafotograferingen så att den kan köras kontinuerligt
- Definiera utgångs- och inmatningsenheten
- Ingången är vad kameran kommer att se, och utgången är videon i ett inställt format av KCVPixelFormatType_32GRA.
- Lägg slutligen till a underskikt som innehåller videor till bildVisa och starta sessionen. Funktionen är känd som inViewdidload. Du måste också ställa in ramen för lagret.
Anropa funktionen i viewWillVisa metod.
Eftersom gränserna ännu inte är klara, åsidosätt viewDidLayoutSubviews ( ) metod för att uppdatera de bundna lagren.
Efter lanseringen av iOS 10 behövs ytterligare en post i Info.plist, detta ger en anledning till att använda kameran. Du bör också ställa in Privacy-Camera Usage Description.
Textavkänning; Hur Vision Framework fungerar
Det finns tre steg för att implementera Vision i appen.
- Handlare – det är när du vill att ramverket ska göra något efter att begäran har anropats.
- Observationer – det här är vad du vill göra med de uppgifter du tillhandahåller och börjar med en begäran
- Förfrågningar – det är när du frågar efter Detect framework
Helst skapar du en textförfrågan som VNdetecttextrectanglesrequest. Det här är en sorts VNrequest som gränsar till texten. När ramverket har slutfört ansökan fortsätter du att ringa till Dettexthandlare fungera. Du kommer också att vilja veta den exakta ramen som kändes igen, ställ in den på Rapportkaraktärsrutor= Sant.
Därefter definierar du observationerna som innehåller alla resultat av VNdetecttextrectanglesrequest, kom ihåg att lägga till Vision till utgångskameran. Eftersom Vision exponerar API: er på hög nivå är det säkert att arbeta med det.
Funktionen kontrollerar om Cmsamplebuffer existerar och PutOut Avcaptureoutput. Du bör sedan fortsätta med att skapa en variabel Förfrågningar som 1 ordbokstyp VNimageoption. De VNmage alternativet är en typ av struktur som innehåller egenskaper och data från kameran. Du bör sedan skapa VNimagerequesthandler och exekvera textbegäran.
Rita gränser runt den upptäckta texten
Du kan börja med att ha ramverket för att rita två rutor, en för varje bokstav som den upptäcker och den andra för varje ord. Tabeller är kombinationen av alla teckenrutor som din begäran kommer att hitta.
- Definiera punkterna på din vy för att hjälpa dig placera rutorna.
- Efter det skapar du en CALayer; använda sig av VNrektangelobservation för att definiera dina begränsningar, vilket gör processen att skissera rutan enklare.
Du har nu alla dina funktioner utlagda.
För att koppla ihop dina prickar, börja med att låta din kod köras asynkront. Du bör sedan kontrollera om det finns en region inom dina resultat från din VNTextObservation.
Du kan nu ringa in din funktion som kommer att rita en ruta inom området. Kontrollera om det finns teckenrutor inom regionen och ring sedan in tjänsten som tar in en ruta runt varje bokstav.
Efter det skapar du en variabel RequestOptions. Du kan nu skapa en VNImageRequestHandler objekt och utför textbegäran du skapade.
Slutligen är det sista steget att köra din visionkod med livestreamen. Du måste ta videoutgången och konvertera den till Cmsamplebuffer.
Ytterligare tips
- Försök alltid att beskära bilden och bearbeta endast det avsnitt du behöver. Detta kommer att minska bearbetningstiden och minnesfotavtrycket
- Aktivera språkkorrigering när du hanterar icke-numeriska tecken och stäng sedan av den när du hanterar ett numeriskt tecken
- Inkludera validering för igenkända nummersträngar för att bekräfta noggrannheten och eliminera visning av falskt värde för användaren.
- Dokumentkamerakontrollen är den bästa följeslagaren för textigenkänning eftersom bildkvalitet spelar en viktig roll för textigenkänning.
- Överväg att ställa in en lägsta texthöjd för att öka prestandan.
Med Vision har du allt du behöver för textigenkänning. Eftersom Vision är lätt att använda och tar kort tid att implementera, är det nästan likvärdigt att spela med Legos. Testa din app på olika objekt, typsnitt, belysning och storlekar. Du kan också imponera på dig själv genom att kombinera Vision med Core ML.