Vision v systéme iOS 11 má všetko, čo potrebujete na vytvorenie aplikácie, ktorá dokáže rozpoznať textové znaky, pričom implementácia prebieha súčasne. Nepotrebujete technické znalosti kódovania – navigácia vo funkcii je celkom jednoduchá. A čo viac, implementácia je bezproblémová.
Rámec vízie
Rámec vízie vám umožňuje jednoducho implementovať akúkoľvek úlohu, ktorá zahŕňa detaily počítača. Štruktúra vykonáva detekciu tváre a orientačného bodu tváre, rozpoznávanie čiarových kódov, registráciu obrázkov, sledovanie všeobecných funkcií a detekciu textu. Vision vám tiež umožňuje používať vlastné modely Core ML na úlohy, ako je klasifikácia alebo detekcia objektov.
VN DetectTextRectanglesRequest
The VN DetectTextRectanglesRequest je požiadavka na analýzu obrazu, ktorá nájde oblasti viditeľného textu na obrázku; funkcia vráti textové znaky ako obdĺžnikový ohraničovací rámček s pôvodom a veľkosťou.
Ak ste zvyknutí na používanie swiftu a už nejaký čas programujete, pravdepodobne sa pýtate, na čo slúži Vision, keď sú k dispozícii ďalšie funkcie ako image a AVFoundation. No, Vision je presnejší a priamočiarejší. Táto funkcia je dostupná aj na rôznych platformách. Používanie Vision však môže vyžadovať viac výpočtového výkonu a času spracovania.
Ak chcete použiť Vision na detekciu textu, budete potrebovať Xcode 9 a zariadenie so systémom iOS 11.
Vytvorenie fotoaparátu pomocou Avcapture
Najprv musíte vytvoriť fotoaparát s AVCapture; je to inicializáciou jedného objektu AVcapturesession na vykonanie zachytávania v reálnom čase alebo offline. Potom vykonajte reláciu s pripojením zariadenia.
Ak chcete ušetriť čas pri vytváraní používateľského rozhrania vašej aplikácie, zvážte vytvorenie počiatočného projektu, ktorý vám poskytne čas sústrediť sa na učenie sa rámca vízie.
- Otvorte svoj štartovací projekt. Všetky zobrazenia v storyboarde by mali byť pripravené a nastavené pre vás.
- Na ViewController.swift, vyhľadajte časť kódu s funkciami a výstupmi.
- Pod zásuvkou -ImageView, dvyhlásiť reláciu pre AVzachytenie – používa sa vždy, keď chcete vykonať akcie na základe živého prenosu.
- Nastaviť AVzachytenie a AVmediatype na video, pretože budete snímať kamerou, aby ste umožnili jej nepretržitý chod
- Definujte výstupné a vstupné zariadenie
- Vstupom je to, čo kamera uvidí, a výstupom je video v nastavenom formáte typu KCVPixelFormatType_32GRA.
- Nakoniec pridajte a podvrstva ktorý obsahuje videá do imageView a spustite reláciu. Funkcia je známa ako inViewdidload. Musíte tiež nastaviť rámec vrstvy.
Zavolajte funkciu v viewWillAppear metóda.
Keďže hranice ešte nie sú dokončené, prepíšte viewDidLayoutSubviews ( ) metóda na aktualizáciu viazaných vrstiev.
Po vydaní systému iOS 10 je potrebný ďalší záznam v Info.plist, čo poskytuje dôvod na používanie fotoaparátu. Mali by ste tiež nastaviť Popis používania súkromnej kamery.
Detekcia textu; Ako funguje rámec vízie
Existujú tri kroky na implementáciu Vision do aplikácie.
- Manipulátory – toto je, keď chcete, aby framework niečo urobil po zavolaní požiadavky.
- Pozorovania – to je to, čo chcete urobiť s údajmi, ktoré ste poskytli, počnúc jednou požiadavkou
- Žiadosti – toto je, keď požiadate o rámec Detect
V ideálnom prípade vytvoríte jednu textovú požiadavku ako VNdetecttextrectanglesrequest. Toto je druh VNrequest ktorý ohraničuje text. Keď framework dokončí aplikáciu, pokračujte vo volaní Dettexthandler funkciu. Budete tiež chcieť vedieť presný rám, ktorý bol rozpoznaný, nastavte ho na Správy charakterových polí= Pravda.
Potom definujte pozorovania, ktoré obsahujú všetky výsledky VNdetecttextrectanglesrequest, nezabudnite pridať Vision do výstupnej kamery. Keďže Vision odhaľuje API na vysokej úrovni, práca s ním je bezpečná.
Funkcia kontroluje, či je Cmsamplebuffer existuje a PutOut Avcapture výstup. Potom by ste mali pristúpiť k vytvoreniu jednej premennej Možnosti požiadaviek ako 1 typ slovníka Možnosť VNimage. The VNmage voľba je typ štruktúry, ktorá obsahuje vlastnosti a dáta z kamery. Potom by ste mali vytvoriť VNimagerequesthandler a spustite textovú požiadavku.
Nakreslenie okrajov okolo rozpoznaného textu
Môžete začať tak, že rámček nakreslíte dve políčka, jedno pre každé písmeno, ktoré zistí, a druhé pre každé slovo. Tabuľky sú kombináciou všetkých políčok, ktoré vaša požiadavka nájde.
- Definujte body na pohľade, ktoré vám pomôžu umiestniť polia.
- Potom vytvorte a CALayer; použitie VNobdĺžnikové pozorovanie na definovanie vašich obmedzení, čím sa zjednoduší proces načrtnutia rámčeka.
Teraz máte pripravené všetky funkcie.
Ak chcete spojiť svoje body, začnite tým, že váš kód bude spustený asynchrónne. Potom by ste mali skontrolovať, či existuje región vo vašich výsledkoch z vášho VNTextObservation.
Teraz môžete zavolať svoju funkciu, ktorá nakreslí rámček v oblasti. Skontrolujte, či sa v regióne nachádzajú polia so znakmi, a potom zavolajte do služby, ktorá zaškrtne každé písmeno.
Potom vytvorte premennú Možnosti žiadosti. Teraz môžete vytvoriť a VNImageRequestHandler objekt a vykonajte textovú požiadavku, ktorú ste vytvorili.
Posledným krokom je spustenie kódu vízie v priamom prenose. Budete musieť vziať video výstup a previesť ho na Cmsamplebuffer.
Ďalšie tipy
- Vždy sa snažte orezať obrázok a spracovať iba časť, ktorú potrebujete. Tým sa zníži čas spracovania a nároky na pamäť
- Zapnite opravu jazyka pri práci s nečíselnými znakmi a potom ju vypnite pri práci s číselným znakom
- Zahrňte overenie rozpoznaných číselných reťazcov, aby ste potvrdili presnosť a eliminovali zobrazovanie falošnej hodnoty používateľovi.
- Ovládač kamery na dokumenty je najlepším spoločníkom na rozpoznávanie textu, pretože kvalita obrazu hrá pri rozpoznávaní textu významnú úlohu.
- Zvážte nastavenie minimálnej výšky textu na zvýšenie výkonu.
S Vision máte všetko, čo potrebujete na rozpoznávanie textu. Keďže sa Vision ľahko používa a implementácia trvá krátky čas, jeho používanie je takmer ekvivalentné hraniu s Legom. Skúste svoju aplikáciu otestovať na rôznych objektoch, fontoch, osvetlení a veľkostiach. Zapôsobiť na seba môžete aj kombináciou Vision s Core ML.