IPhone: Cum să utilizați funcțiile de detectare a textului iOS

Vision în iOS 11 are tot ce aveți nevoie pentru a crea o aplicație care poate recunoaște caracterele text cu implementarea care are loc simultan. Nu aveți nevoie de cunoștințe tehnice de codificare - navigarea prin funcție este destul de simplă. În plus, implementarea este fără întreruperi.

Cadrul de viziune

Cadrul de viziune vă permite să implementați cu ușurință orice sarcină care implică detalii ale computerului. Structura efectuează detectarea reperelor feței și feței, recunoașterea codurilor de bare, înregistrarea imaginilor, urmărirea caracteristicilor generale și detectarea textului. Vision vă permite, de asemenea, să utilizați modele personalizate Core ML pentru sarcini precum clasificarea sau detectarea obiectelor.

VN DetectTextRectanglesRequest

The VN DetectTextRectanglesRequest este o solicitare de analiză a imaginii care găsește regiuni de text vizibil într-o imagine; caracteristica returnează caractere text ca o casetă de delimitare dreptunghiulară cu originea și dimensiunea.

Dacă sunteți obișnuit să utilizați Swift și ați programat de ceva vreme, atunci probabil vă întrebați ce folos are Vision atunci când există alte funcții precum imaginea și AVFoundation. Ei bine, Vision este mai precis și mai direct. Funcția este disponibilă și pe o varietate de platforme. Cu toate acestea, utilizarea Vision poate necesita mai multă putere de procesare și timp de procesare.

Pentru a utiliza Vision pentru detectarea textului, veți avea nevoie de Xcode 9 și de un dispozitiv care rulează iOS 11.

Crearea unei camere cu Avcapture

În primul rând, trebuie să creați o cameră cu AVCapture; aceasta se face prin inițializarea unui obiect AVcapturesession pentru a realiza captură în timp real sau offline. După aceea, faceți sesiunea la conexiunea dispozitivului.

Pentru a economisi timp de la construirea unei interfețe de utilizare a aplicației dvs., luați în considerare un proiect de pornire, pentru a începe, acest lucru vă va oferi timp să vă concentrați pe învățarea cadrului Vision.

  1. Deschideți-vă proiectul de pornire. Vizualizările din storyboard ar trebui să fie toate gata și configurate pentru tine.
  2. Pe ViewController.swift, caută secțiunea de cod cu funcții și prize.
  3. Sub priza-ImageView, ddeclara o sesiune pentru AVcapturesession – acesta este folosit ori de câte ori doriți ca acțiunile efectuate pe baza unui flux live.
  4. Seteaza AVcapturesession si AVmediatype la video, deoarece veți efectua filmarea camerei pentru a-i permite să ruleze continuu
  5. Definiți dispozitivul de ieșire și de intrare
  6. Intrarea este ceea ce va vedea camera, iar ieșirea este videoclipul într-un format de tip set de KCVPixelFormatType_32GRA.
  7. În cele din urmă, adăugați a substratul care conține videoclipuri pentru imagineView și începeți sesiunea. Funcția este cunoscută ca inViewdload. De asemenea, trebuie să setați cadrul stratului.

Apelați funcția din vizualizarea va apărea metodă.

Deoarece limitele nu sunt încă finalizate, anulați viewDidLayoutSubviews ( ) metoda de actualizare a straturilor legate.

După lansarea iOS 10, este necesară o intrare suplimentară în Info.plist, aceasta oferă un motiv pentru utilizarea camerei. De asemenea, ar trebui să setați Confidențialitate-Descrierea utilizării camerei.

Detectarea textului; Cum funcționează Vision Framework

Există trei pași pentru implementarea Vision în aplicație.

  1. Manipulatori - acesta este momentul în care doriți ca cadrul să facă ceva după ce cererea este apelată.
  2. Observatii - aceasta este ceea ce doriți să faceți cu datele furnizate de dvs. începând cu o singură solicitare
  3. Cereri - acesta este momentul în care cereți Cadrul Detect

În mod ideal, creați o singură solicitare text ca VNdetecttextrectanglerequest. Acesta este un fel de VNrequest care se învecinează în jurul textului. După ce cadrul completează aplicația, treceți la apelul Dettexthandler funcţie. De asemenea, veți dori să știți exact cadrul care a fost recunoscut, setați-l la Raportare casete de caractere=Adevărat.

După aceea, definiți observațiile care conțin toate rezultatele VNdetecttextrectanglerequest, nu uitați să adăugați Vision la camera de ieșire. Deoarece Vision expune API-uri de nivel înalt, lucrul cu acesta este sigur.

Funcția verifică dacă Cmsamplebuffer există și PutOut Avcaptureoutput. Ar trebui apoi să continuați să creați o variabilă Opțiuni de solicitare ca 1 tip de dicționar VNimageoption. The VNmage opțiunea este un tip de structură care conține proprietăți și date de la cameră. Apoi ar trebui să creați VNimagerequesthandler și executați cererea text.

Desenarea chenarelor în jurul textului detectat

Puteți începe prin a avea cadrul pentru a desena două casete, una pentru fiecare literă pe care o detectează și cealaltă pentru fiecare cuvânt. Tabelele sunt o combinație a tuturor casetelor de caractere pe care le va găsi solicitarea dvs.

  • Definiți punctele din vedere pentru a vă ajuta să poziționați casetele.
  • După aceea, creați un CALayer; utilizare VNrectunghiobservare pentru a vă defini constrângerile, facilitând procesul de conturare a casetei.

Acum aveți toate funcțiile stabilite.

Pentru a vă conecta punctele, începeți prin a executa codul asincron. Ar trebui apoi să verificați pentru a vedea dacă există o regiune în rezultatele dvs. de la dvs VNTextObservation.

Acum puteți apela funcția dvs., care va desena o casetă în zonă. Verificați pentru a vedea dacă există casete de caractere în regiune, apoi apelați serviciul care aduce o casetă în jurul fiecărei litere.

După aceea, creați o variabilă RequestOptions. Acum puteți crea un VNImageRequestHandler obiectați și efectuați cererea de text pe care ați creat-o.

În cele din urmă, ultimul pas este rularea codului de viziune cu fluxul live. Va trebui să luați ieșirea video și să o convertiți în Cmsamplebuffer.

Sfaturi suplimentare

  1. Încercați întotdeauna să decupați imaginea și să procesați numai secțiunea de care aveți nevoie. Acest lucru va reduce timpul de procesare și amprenta memoriei
  2. Activați corecția de limbă atunci când aveți de-a face cu caractere nenumerice, apoi dezactivați-o când aveți de-a face cu un caracter numeric
  3. Includeți validarea șirurilor de numere recunoscute pentru a confirma acuratețea și pentru a elimina afișarea unei valori false pentru utilizator.
  4. Controlerul camerei pentru documente este cel mai bun partener pentru recunoașterea textului, deoarece calitatea imaginii joacă un rol important în recunoașterea textului.
  5. Luați în considerare setarea unei înălțimi minime a textului pentru a crește performanța.

Cu Vision, aveți tot ce aveți nevoie pentru recunoașterea textului. Deoarece Vision este ușor de utilizat și necesită un timp scurt pentru implementare, utilizarea acestuia este aproape echivalentă cu a juca cu Lego. Încercați să testați aplicația pe diferite obiecte, fonturi, iluminare și dimensiuni. De asemenea, vă puteți impresiona combinând Vision cu Core ML.