IPhone: Jak používat funkce detekce textu iOS

Vision v iOS 11 má vše, co potřebujete k vytvoření aplikace, která dokáže rozpoznat textové znaky, přičemž implementace probíhá současně. Nepotřebujete technické znalosti kódování – navigace ve funkci je poměrně jednoduchá. A co víc, implementace je bezproblémová.

Vision Framework

Rámec vidění vám umožňuje snadno implementovat jakýkoli úkol, který zahrnuje detaily počítače. Struktura provádí detekci obličeje a orientačních bodů obličeje, rozpoznávání čárových kódů, registraci obrazu, sledování obecných funkcí a detekci textu. Vision vám také umožňuje používat vlastní modely Core ML pro úkoly, jako je klasifikace nebo detekce objektů.

VN DetectTextRectanglesRequest

The VN DetectTextRectanglesRequest je požadavek na analýzu obrazu, který najde oblasti viditelného textu v obraze; tato funkce vrací textové znaky jako obdélníkový ohraničovací rámeček s počátkem a velikostí.

Pokud jste zvyklí používat swift a nějakou dobu programujete, pak vás pravděpodobně zajímá, k čemu je Vision, když jsou k dispozici další funkce jako image a AVFoundation. No, Vision je přesnější a přímočařejší. Tato funkce je také dostupná na různých platformách. Používání Vision však může vyžadovat vyšší výpočetní výkon a dobu zpracování.

Chcete-li používat Vision pro detekci textu, budete potřebovat Xcode 9 a zařízení se systémem iOS 11.

Vytvoření fotoaparátu s Avcapture

Nejprve musíte vytvořit fotoaparát s AVCapture; je to inicializací jednoho objektu AVcapturesession pro provádění zachycení v reálném čase nebo offline. Poté proveďte relaci k připojení zařízení.

Chcete-li ušetřit čas při vytváření uživatelského rozhraní vaší aplikace, zvažte vytvoření počátečního projektu, který vám dá čas soustředit se na učení rámce Vision.

  1. Otevřete svůj startovací projekt. Všechny pohledy ve scénáři by pro vás měly být připraveny a nastaveny.
  2. Na ViewController.swift, vyhledejte sekci kódu s funkcemi a výstupy.
  3. Pod zásuvkou -ImageView, dvyhlásit sezení pro AV zachycení – používá se vždy, když chcete provádět akce na základě živého přenosu.
  4. Nastav AV zachycení a AVmediatype na video, protože provedete natáčení fotoaparátu, abyste umožnili jeho nepřetržitý provoz
  5. Definujte výstupní a vstupní zařízení
  6. Vstupem je to, co kamera uvidí, a výstupem je video v nastaveném formátu typu KCVPixelFormatType_32GRA.
  7. Nakonec přidejte a podvrstva který obsahuje videa do imageView a spusťte relaci. Funkce je známá jako inViewdidload. Musíte také nastavit rámec vrstvy.

Zavolejte funkci v viewWillAppear metoda.

Protože hranice ještě nejsou dokončeny, přepište je viewDidLayoutSubviews ( ) metoda pro aktualizaci vázaných vrstev.

Po vydání iOS 10 je potřeba další položka v Info.plist, což poskytuje důvod pro použití fotoaparátu. Měli byste také nastavit Popis použití soukromé kamery.

Detekce textu; Jak funguje Vision Framework

Implementace Vision do aplikace má tři kroky.

  1. Manipulátory – to je, když chcete, aby framework něco provedl po zavolání požadavku.
  2. Pozorování – to je to, co chcete udělat s vámi poskytnutými daty počínaje jedním požadavkem
  3. Žádosti – to je, když požádáte o Detect framework

V ideálním případě vytvoříte jeden textový požadavek jako VNdetecttextrectanglesrequest. Toto je druh VNrequest který ohraničuje text. Poté, co framework dokončí aplikaci, pokračujte k volání Dettexthandler funkce. Budete také chtít znát přesný rámec, který byl rozpoznán, nastavte jej na Krabice s postavami= Pravda.

Poté definujte pozorování, která obsahují všechny výsledky VNdetecttextrectanglesrequest, nezapomeňte přidat Vision do výstupní kamery. Vzhledem k tomu, že Vision odhaluje API na vysoké úrovni, práce s ním je bezpečná.

Funkce kontroluje, zda je Cmsamplebuffer existuje a PutOut Avcapture výstup. Poté byste měli přistoupit k vytvoření jedné proměnné Možnosti požadavků jako 1 typ slovníku Možnost VNimage. The VNmage volba je typ struktury, která obsahuje vlastnosti a data z kamery. Poté byste měli vytvořit VNimagerequesthandler a spusťte textový požadavek.

Kreslení ohraničení kolem textu zjištěno

Můžete začít tím, že rámeček nakreslí dvě pole, jedno pro každé písmeno, které zjistí, a druhé pro každé slovo. Tabulky jsou kombinací všech polí znaků, které váš požadavek najde.

  • Definujte body v pohledu, které vám pomohou umístit rámečky.
  • Poté vytvořte a CALayer; použití VNobdélníkové pozorování k definování vašich omezení, čímž se zjednoduší proces nastínění rámečku.

Nyní máte připraveny všechny funkce.

Chcete-li spojit své body, začněte tím, že váš kód bude spouštět asynchronně. Poté byste měli zkontrolovat, zda ve vašich výsledcích z vaší oblasti existuje oblast VNTextObservation.

Nyní můžete zavolat svou funkci, která nakreslí rámeček v oblasti. Zkontrolujte, zda jsou v dané oblasti pole znaků, a poté zavolejte službu, která zaškrtne každé písmeno.

Poté vytvořte proměnnou Možnosti požadavku. Nyní můžete vytvořit a VNImageRequestHandler objekt a proveďte textový požadavek, který jste vytvořili.

Konečně posledním krokem je spuštění kódu vaší vize s živým přenosem. Budete muset vzít video výstup a převést jej na Cmsamplebuffer.

Další tipy

  1. Vždy se snažte obrázek oříznout a zpracovat pouze tu část, kterou potřebujete. Tím se sníží doba zpracování a nároky na paměť
  2. Zapněte jazykovou korekci při práci s nečíselnými znaky a poté ji vypněte při práci s číselnými znaky
  3. Zahrňte ověření rozpoznaných číselných řetězců, abyste potvrdili přesnost a odstranili zobrazení falešné hodnoty uživateli.
  4. Ovladač dokumentové kamery je nejlepším společníkem pro rozpoznávání textu, protože kvalita obrazu hraje významnou roli při rozpoznávání textu.
  5. Pro zvýšení výkonu zvažte nastavení minimální výšky textu.

S Vision máte vše, co potřebujete pro rozpoznávání textu. Vzhledem k tomu, že se Vision snadno používá a jeho implementace trvá krátkou dobu, je jeho použití téměř ekvivalentní hraní s Legem. Zkuste aplikaci otestovat na různých objektech, písmech, osvětlení a velikostech. Zapůsobit na sebe můžete také kombinací Vision s Core ML.