Vision in iOS 11 ha tutto il necessario per creare un'app in grado di riconoscere i caratteri di testo con l'implementazione simultanea. Non è necessaria una conoscenza tecnica della codifica: la navigazione nella funzione è abbastanza semplice. Inoltre, l'implementazione è senza soluzione di continuità.
Quadro di visione
Il framework di visione consente di implementare facilmente qualsiasi attività che coinvolga i dettagli del computer. La struttura esegue il rilevamento del volto e del punto di riferimento del volto, il riconoscimento del codice a barre, la registrazione dell'immagine, il rilevamento delle caratteristiche generali e il rilevamento del testo. Vision consente inoltre di utilizzare modelli Core ML personalizzati per attività come la classificazione o il rilevamento di oggetti.
VN DetectTextRectanglesRequest
Il VN DetectTextRectanglesRequest è una richiesta di analisi dell'immagine che trova regioni di testo visibile in un'immagine; la funzione restituisce i caratteri di testo come un riquadro di delimitazione rettangolare con origine e dimensione.
Se sei abituato a usare swift e stai programmando da un po', probabilmente ti starai chiedendo quale sia l'uso di Vision quando ci sono altre funzionalità come image e AVFoundation. Bene, Vision è più preciso e più diretto. La funzione è disponibile anche su una varietà di piattaforme. Tuttavia, l'utilizzo di Vision potrebbe richiedere più potenza di elaborazione e tempo di elaborazione.
Per utilizzare Vision per il rilevamento del testo, avrai bisogno di Xcode 9 e di un dispositivo con iOS 11.
Creazione di una fotocamera con Avcapture
Innanzitutto, devi creare una videocamera con AVCapture ; questo avviene inizializzando un oggetto AVcapturesession per eseguire l'acquisizione in tempo reale o offline. Successivamente, effettua la sessione sulla connessione del dispositivo.
Per risparmiare tempo dalla creazione di un'interfaccia utente della tua app, considera di avere un progetto iniziale, per cominciare, questo ti darà il tempo di concentrarti sull'apprendimento del framework Vision.
Apri il tuo progetto di partenza. Le viste nello storyboard dovrebbero essere tutte pronte e impostate per te.
In ViewController.swift, cerca la sezione del codice con funzioni e punti vendita.
Sotto l'outlet- ImageView, dichiara una sessione per AVcapturesession : questa viene utilizzata ogni volta che si desidera eseguire azioni in base a un live streaming.
Imposta AVcapturesession e AVmediatype su video poiché eseguirai le riprese della fotocamera per consentirne l'esecuzione continua
Definire il dispositivo di output e input
L'input è ciò che vedrà la telecamera e l'output è il video in un formato di tipo impostato di KCVPixelFormatType_32GRA.
Infine, aggiungi un sottolivello che contenga video a imageView e avvia la sessione. La funzione è nota come inViewdidload. È inoltre necessario impostare la cornice del livello.
Chiama la funzione nel metodo viewWillAppear .
Poiché i limiti non sono ancora stati finalizzati, sovrascrivere il metodo viewDidLayoutSubviews ( ) per aggiornare i livelli associati.
Dopo il rilascio di iOS 10, è necessaria una voce aggiuntiva in Info.plist, che fornisce un motivo per utilizzare la fotocamera. Dovresti anche impostare la descrizione dell'utilizzo della fotocamera per la privacy.
rilevamento del testo; Come funziona Vision Framework
Ci sono tre passaggi per implementare Vision sull'app.
Gestori: questo è quando vuoi che il framework esegua qualcosa dopo che la richiesta è stata chiamata.
Osservazioni – questo è quello che vuoi fare con i dati da te forniti a partire da una richiesta
Richieste: questo è il momento in cui chiedi il framework Detect
Idealmente, crei una richiesta di testo come VNdetecttextrectanglesrequest . Questo è un tipo di VNrequest che circonda il testo. Dopo che il framework ha completato l'applicazione, si procede alla chiamata della funzione Dettexthandler . Dovrai anche conoscere l'esatto frame che è stato riconosciuto, impostalo su Reportcharacterboxes =True.
Dopodiché, definisci le osservazioni che contengono tutti i risultati di VNdetecttextrectanglesrequest , ricordati di aggiungere Vision alla telecamera di output. Poiché Vision espone API di alto livello, lavorare con esso è sicuro.
La funzione controlla se Cmsamplebuffer esiste e PutOut Avcaptureoutput . Dovresti quindi procedere alla creazione di una variabile Requestoptions come 1 Dictionary Type VNimageoption . L' opzione VNmage è un tipo di struttura che contiene proprietà e dati dalla telecamera. Dovresti quindi creare il VNimagerequesthandler ed eseguire la richiesta di testo.
Disegnare bordi intorno al testo rilevato
Puoi iniziare avendo il framework per disegnare due caselle, una per ogni lettera rilevata e l'altra per ogni parola. Le tabelle sono la combinazione di tutte le caselle di caratteri che la tua richiesta troverà.
- Definisci i punti sulla tua vista per aiutarti a posizionare le scatole.
- Successivamente, crea un CALaye r; usa VNrectangleobservation per definire i tuoi vincoli, semplificando il processo di delineamento della scatola.
Ora hai tutte le tue funzioni disposte.
Per collegare i tuoi punti, inizia con l'esecuzione del codice in modo asincrono. Dovresti quindi verificare se esiste una regione all'interno dei risultati della tua VNTextObservation .
Ora puoi chiamare la tua funzione, che disegnerà una casella all'interno dell'area. Controlla se ci sono caselle di caratteri all'interno della regione, quindi chiama il servizio che porta una casella attorno a ogni lettera.
Successivamente, crea una variabile RequestOptions. Ora puoi creare un oggetto VNImageRequestHandler ed eseguire la richiesta di testo che hai creato.
Infine, l'ultimo passaggio consiste nell'eseguire il codice di visione con il live streaming. Dovrai prendere l'output video e convertirlo in Cmsamplebuffer.
Suggerimenti aggiuntivi
Cerca sempre di ritagliare l'immagine ed elaborare solo la sezione di cui hai bisogno. Ciò ridurrà il tempo di elaborazione e l'impronta di memoria
Attiva la correzione della lingua quando si tratta di caratteri non numerici, quindi disattivala quando si tratta di un carattere numerico
Includere la convalida per le stringhe di numeri riconosciute per confermare l'accuratezza ed eliminare la visualizzazione di valori falsi per l'utente.
Il controller della telecamera per documenti è il miglior compagno per il riconoscimento del testo poiché la qualità dell'immagine svolge un ruolo significativo nel riconoscimento del testo.
Considera l'impostazione di un'altezza minima del testo per aumentare le prestazioni.
Con Vision hai tutto il necessario per il riconoscimento del testo. Poiché Vision è facile da usare e richiede poco tempo per l'implementazione, utilizzarlo equivale quasi a giocare con i Lego. Prova a testare la tua app su oggetti, caratteri, illuminazione e dimensioni diversi. Puoi anche stupirti combinando Vision con Core ML.