Vision a iOS 11 té tot el que necessiteu per crear una aplicació que pugui reconèixer caràcters de text amb la implementació simultània. No necessiteu coneixements tècnics de codificació; navegar per la funció és bastant senzill. A més, la implementació és perfecta.
Marc de visió
El marc de visió us permet implementar fàcilment qualsevol tasca que impliqui detalls de l'ordinador. L'estructura realitza la detecció de fites facials i facials, el reconeixement de codis de barres, el registre d'imatges, el seguiment de funcions generals i la detecció de text. Vision també us permet utilitzar models de Core ML personalitzats per a tasques com la classificació o la detecció d'objectes.
VN DetectTextRectangleRequest
El VN DetectTextRectangleRequest és una sol·licitud d'anàlisi d'imatges que troba regions de text visible en una imatge; la característica retorna caràcters de text com un quadre delimitador rectangular amb origen i mida.
Si esteu acostumats a utilitzar Swift i heu estat programant durant un temps, probablement us preguntareu quin és l'ús de Vision quan hi ha altres funcions com la imatge i AVFoundation. Bé, Vision és més precisa i més senzilla. La funció també està disponible en diverses plataformes. Tanmateix, utilitzar Vision pot requerir més potència i temps de processament.
Per utilitzar Vision per a la detecció de text, necessitareu Xcode 9 i un dispositiu amb iOS 11.
Creació d'una càmera amb Avcapture
Primer, heu de crear una càmera amb AVCapture ; això és inicialitzant un objecte AVcapturesession per realitzar una captura en temps real o fora de línia. Després d'això, feu la sessió a la connexió del dispositiu.
Per estalviar-vos temps a l'hora de crear una interfície d'usuari de la vostra aplicació, penseu a tenir un projecte inicial; per començar, això us donarà temps per centrar-vos a aprendre el marc de Vision.
Obriu el vostre projecte inicial. Les vistes del guió gràfic haurien d'estar totes preparades i configurades per a tu.
A ViewController.swift, cerqueu la secció de codi amb funcions i punts de venda.
Sota la sortida - ImageView, declareu una sessió per a AVcapturesession : s'utilitza sempre que voleu que es realitzin accions basades en una transmissió en directe.
Configureu AVcapturesession i AVmediatype a vídeo, ja que realitzareu la gravació de la càmera per permetre que funcioni contínuament
Definiu el dispositiu de sortida i entrada
L'entrada és el que veurà la càmera i la sortida és el vídeo en un format de tipus definit de KCVPixelFormatType_32GRA.
Finalment, afegiu una subcapa que contingui vídeos a imageView i inicieu la sessió. La funció es coneix com a inViewdidload. També heu de configurar el marc de la capa.
Truqueu a la funció al mètode viewWillAppear .
Com que els límits encara no s'han finalitzat, substituïu el mètode viewDidLayoutSubviews ( ) per actualitzar les capes lligades.
Després del llançament d'iOS 10, es necessita una entrada addicional a Info.plist, això proporciona un motiu per utilitzar la càmera. També hauríeu d'establir la descripció de l'ús de la càmera de privadesa.
Detecció de text; Com funciona el marc de visió
Hi ha tres passos per implementar Vision a l'aplicació.
Gestors: és quan voleu que el marc faci alguna cosa després de cridar la sol·licitud.
Observacions: això és el que voleu fer amb les dades que heu proporcionat començant amb una sol·licitud
Sol·licituds: és quan demaneu el marc de detectiu
Idealment, creeu una sol·licitud de text com a VNdetecttextrectanglesrequest . Aquesta és una mena de VNrequest que voreja el text. Després que el marc completi l'aplicació, aneu a cridar la funció Dettexthandler . També voldreu saber el marc exacte que es va reconèixer, establiu-lo a Reportcharacterboxes =True.
Després d'això, definiu les observacions que continguin tots els resultats de VNdetecttextrectanglesrequest , recordeu afegir Vision a la càmera de sortida. Com que Vision exposa API d'alt nivell, treballar-hi és segur.
La funció comprova si existeix el Cmsamplebuffer i PutOut Avcaptureoutput . Aleshores hauríeu de procedir a crear una variable Requestoptions com a 1 Dictionary Type VNimageoption . L' opció VNmage és un tipus d'estructura que conté propietats i dades de la càmera. Aleshores, hauríeu de crear el gestor de peticions de VNimage i executar la sol·licitud de text.
Dibuix de vores al voltant del text detectat
Podeu començar tenint el marc per dibuixar dos quadres, un per a cada lletra que detecti i l'altre per a cada paraula. Les taules són la combinació de tots els quadres de caràcters que trobarà la vostra sol·licitud.
- Definiu els punts de la vostra vista per ajudar-vos a posicionar les caixes.
- Després d'això, creeu un CALaye r; utilitzeu VNrectangleobservació per definir les vostres restriccions, facilitant el procés de delinear el quadre.
Ara teniu totes les vostres funcions distribuïdes.
Per connectar els vostres punts, comenceu fent que el vostre codi s'executi de manera asíncrona. Aleshores, hauríeu de comprovar si hi ha una regió als vostres resultats de la vostra VNTextObservation .
Ara podeu trucar a la vostra funció, que dibuixarà un quadre dins de l'àrea. Comproveu si hi ha quadres de caràcters a la regió i, a continuació, truqueu al servei que inclou un quadre al voltant de cada lletra.
Després d'això, creeu una variable RequestOptions. Ara podeu crear un objecte VNImageRequestHandler i realitzar la sol·licitud de text que heu creat.
Finalment, l'últim pas és executar el vostre codi de visió amb la transmissió en directe. Haureu d'agafar la sortida de vídeo i convertir-la a Cmsamplebuffer.
Consells addicionals
Proveu sempre de retallar la imatge i processar només la secció que necessiteu. Això reduirà el temps de processament i l'empremta de memòria
Activa la correcció d'idioma quan es tracta de caràcters no numèrics i després desactiva-la quan es tracta d'un caràcter numèric
Inclou la validació de les cadenes numèriques reconegudes per confirmar la precisió i eliminar la mostra de valors fals a l'usuari.
El controlador de la càmera de documents és el millor company per al reconeixement de text, ja que la qualitat de la imatge té un paper important en el reconeixement de text.
Penseu en establir una alçada mínima de text per augmentar el rendiment.
Amb Vision, tens tot el que necessites per al reconeixement de text. Com que Vision és fàcil d'utilitzar i triga poc temps a implementar-se, utilitzar-lo és gairebé equivalent a jugar amb Legos. Proveu la vostra aplicació en diferents objectes, tipus de lletra, il·luminació i mides. També podeu impressionar-vos combinant Vision amb Core ML.