Vision in iOS 11 heeft alles wat je nodig hebt om een app te maken die teksttekens kan herkennen terwijl de implementatie tegelijkertijd plaatsvindt. U hebt geen technische coderingskennis nodig - navigeren door de functie is vrij eenvoudig. Bovendien is de implementatie naadloos.
Visie Kader
Met het vision-framework kunt u eenvoudig elke taak uitvoeren waarbij computerdetails betrokken zijn. De structuur voert gezichtsherkenning en gezichtsherkenning, streepjescodeherkenning, beeldregistratie, algemene functie-tracking en tekstdetectie uit. Met Vision kunt u ook aangepaste Core ML-modellen gebruiken voor taken zoals classificatie of objectdetectie.
VN DetectTextRectanglesRequest
De VN DetectTextRectanglesRequest is een verzoek voor beeldanalyse dat gebieden met zichtbare tekst in een afbeelding vindt; de functie retourneert teksttekens als een rechthoekig begrenzingsvak met oorsprong en grootte.
Als je Swift gewend bent en al een tijdje aan het programmeren bent, dan vraag je je waarschijnlijk af wat het nut van Vision is als er andere functies zijn, zoals beeld en AVFoundation. Welnu, Vision is nauwkeuriger en eenvoudiger. De functie is ook beschikbaar op verschillende platforms. Het gebruik van Vision kan echter meer verwerkingskracht en verwerkingstijd vereisen.
Om Vision te gebruiken voor tekstdetectie, hebt u Xcode 9 en een apparaat met iOS 11 nodig.
Een camera maken met Avcapture
Eerst moet je een camera maken met AVCapture; dit is door één object AVcapturesession te initialiseren om realtime of offline opname uit te voeren. Maak daarna de sessie naar de apparaatverbinding.
Om u tijd te besparen bij het bouwen van een gebruikersinterface van uw app, kunt u overwegen om om te beginnen een startproject te starten, zodat u zich kunt concentreren op het leren van het Vision-framework.
- Open je startersproject. De weergaven in het storyboard moeten allemaal klaar en voor u zijn ingesteld.
- Op de ViewController.swift, zoek naar de codesectie met functies en uitgangen.
- Onder de uitlaat-ImageView, deen sessie afkondigen voor AVopnamesessie – dit wordt gebruikt wanneer je acties wilt laten uitvoeren op basis van een livestream.
- Stel de AVopnamesessie en de AVmediatype naar video, aangezien u de camera-opname uitvoert zodat deze continu kan worden uitgevoerd
- Definieer het uitvoer- en invoerapparaat
- De invoer is wat de camera zal zien en de uitvoer is de video met een vast type formaat van KCVPixelFormatType_32GRA.
- Voeg ten slotte een toe onderlaag die video's bevat om afbeeldingBekijken en start de sessie. De functie staat bekend als inViewdidload. U moet ook het frame van de laag instellen.
Roep de functie aan in de bekijkZalVerschijnen methode.
Aangezien de grenzen nog niet definitief zijn, overschrijft u de viewDidLayoutSubviews ( ) methode om de gebonden lagen bij te werken.
Na de release van iOS 10 is een extra vermelding in Info.plist nodig, dit geeft een reden om de camera te gebruiken. U moet ook de gebruiksbeschrijving van de privacycamera instellen.
Tekstdetectie; Hoe Vision Framework werkt
Er zijn drie stappen om Vision op de app te implementeren.
- afhandelaars – dit is wanneer u wilt dat het framework iets doet nadat het verzoek is aangeroepen.
- waarnemingen - dit wil je doen met de door jou aangeleverde gegevens beginnend met één verzoek
- Verzoeken – dit is wanneer je om Detect-framework vraagt
Idealiter maak je één tekstverzoek als VNdetecttextrechthoekenverzoek. Dit is een soort van VNverzoek die om de tekst heen grenst. Nadat het framework de aanvraag heeft voltooid, gaat u verder met het aanroepen van de Dettexthandler functie. U wilt ook het exacte frame weten dat werd herkend, stel het in op Rapporttekenvakken= Waar.
Definieer daarna de waarnemingen die alle resultaten van bevatten VNdetecttextrechthoekenverzoek, vergeet niet om Vision toe te voegen aan de uitgangscamera. Omdat Vision API's op hoog niveau blootlegt, is het veilig om ermee te werken.
De functie controleert of de Cmsamplebuffer bestaat en PutOut Avcapture-output. U moet dan doorgaan met het maken van één variabele Aanvraagopties als 1 woordenboektype VNimage-optie. De VNmage optie is een type structuur dat eigenschappen en gegevens van de camera bevat. U moet dan de maken VNimagerequesthandler en voer het tekstverzoek uit.
Randen tekenen rond de gedetecteerde tekst
U kunt beginnen met het raamwerk om twee vakken te tekenen, één voor elke gedetecteerde letter en de andere voor elk woord. Tabellen zijn de combinatie van alle karaktervakken die uw verzoek zal vinden.
- Definieer de punten op uw zicht om u te helpen bij het positioneren van de dozen.
- Maak daarna een CAlayeR; gebruik maken van VNrechthoekobservatie om uw beperkingen te definiëren, waardoor het proces van het schetsen van het kader eenvoudiger wordt.
Je hebt nu al je functies op een rijtje.
Om uw punten te verbinden, begint u door uw code asynchroon te laten lopen. U moet dan controleren of er een regio bestaat in uw resultaten van uw VNTextObservatie.
U kunt nu uw functie aanroepen, die een kader binnen het gebied zal tekenen. Controleer of er tekenvakken in de regio zijn en bel vervolgens de service die een vak rond elke letter binnenbrengt.
Maak daarna een variabele AanvraagOpties. U kunt nu een maken VNImageRequestHandler object en voer het tekstverzoek uit dat u hebt gemaakt.
Ten slotte is de laatste stap het uitvoeren van uw vision-code met de livestream. U moet de video-uitvoer nemen en deze converteren naar Cmvoorbeeldbuffer.
Aanvullende tips
- Probeer altijd de afbeelding bij te snijden en verwerk alleen de sectie die u nodig hebt. Dit vermindert de verwerkingstijd en de geheugenvoetafdruk
- Schakel taalcorrectie in bij het omgaan met niet-numerieke tekens en schakel het vervolgens uit bij het omgaan met een numeriek teken
- Voeg validatie toe voor herkende nummerreeksen om de nauwkeurigheid te bevestigen en elimineer het tonen van valse waarde aan de gebruiker.
- De documentcameracontroller is de beste partner voor tekstherkenning, aangezien beeldkwaliteit een belangrijke rol speelt bij tekstherkenning.
- Overweeg een minimale teksthoogte in te stellen om de prestaties te verbeteren.
Met Vision heeft u alles in huis voor tekstherkenning. Omdat Vision gemakkelijk te gebruiken is en weinig tijd kost om te implementeren, staat het gebruik ervan bijna gelijk aan spelen met Lego. Probeer uw app te testen op verschillende objecten, lettertypen, belichting en formaten. U kunt ook indruk maken door Vision te combineren met Core ML.