Vision in iOS 11 bietet alles, was Sie brauchen, um eine App zu erstellen, die Textzeichen bei gleichzeitiger Implementierung erkennt. Sie benötigen keine technischen Programmierkenntnisse – die Navigation durch die Funktion ist recht einfach. Darüber hinaus ist die Implementierung reibungslos.
Vision-Framework
Mit dem Vision Framework können Sie jede Aufgabe, bei der es um Computerdetails geht, einfach implementieren. Die Struktur führt die Erkennung von Gesichtern und Gesichtern, Strichcodeerkennung, Bildregistrierung, allgemeine Merkmalsverfolgung und Texterkennung durch. Mit Vision können Sie auch benutzerdefinierte Core ML-Modelle für Aufgaben wie Klassifizierung oder Objekterkennung verwenden.
VN DetectTextRectanglesRequest
Die VN DetectTextRectanglesRequest ist eine Bildanalyseanforderung, die Bereiche mit sichtbarem Text in einem Bild findet; Die Funktion gibt Textzeichen als rechteckigen Begrenzungsrahmen mit Ursprung und Größe zurück.
Wenn Sie an die Verwendung von Swift gewöhnt sind und schon seit einiger Zeit programmieren, fragen Sie sich wahrscheinlich, was Vision nützt, wenn es andere Funktionen wie Bild und AVFoundation gibt. Nun, Vision ist genauer und einfacher. Die Funktion ist auch auf einer Vielzahl von Plattformen verfügbar. Die Verwendung von Vision erfordert jedoch möglicherweise mehr Rechenleistung und Verarbeitungszeit.
Um Vision für die Texterkennung zu verwenden, benötigen Sie Xcode 9 und ein Gerät mit iOS 11.
Erstellen einer Kamera mit Avcapture
Zuerst müssen Sie eine Kamera erstellen mit AVCapture; Dies geschieht durch die Initialisierung einer Objekt-AVcapturesession, um Echtzeit- oder Offline-Captures durchzuführen. Stellen Sie danach die Sitzung mit der Geräteverbindung her.
Um Zeit beim Erstellen einer Benutzeroberfläche für Ihre App zu sparen, sollten Sie zunächst ein Starterprojekt in Betracht ziehen. Dies gibt Ihnen Zeit, sich auf das Erlernen des Vision-Frameworks zu konzentrieren.
- Öffnen Sie Ihr Starterprojekt. Die Ansichten im Storyboard sollten alle bereit und für Sie eingerichtet sein.
- Auf der ViewController.swift, Suchen Sie nach dem Codeabschnitt mit Funktionen und Ausgängen.
- Unter der Steckdose-ImageView, deine Sitzung ausmachen für AV-Aufnahmesitzung – Dies wird immer dann verwendet, wenn Aktionen basierend auf einem Live-Stream ausgeführt werden sollen.
- Stellen Sie die AV-Aufnahmesitzung und der AVmediatyp auf Video, da Sie die Kameraaufnahme durchführen, damit sie kontinuierlich ausgeführt werden kann
- Definieren Sie das Ausgabe- und Eingabegerät
- Die Eingabe ist das, was die Kamera sieht, und die Ausgabe ist das Video im eingestellten Typformat KCVPixelFormatType_32GRA.
- Schließlich füge a. hinzu Unterschicht das enthält Videos zu Bildansicht und starten Sie die Sitzung. Die Funktion ist bekannt als inViewdload. Sie müssen auch den Rahmen der Ebene festlegen.
Rufen Sie die Funktion im viewWillAppear Methode.
Da die Grenzen noch nicht festgelegt sind, überschreiben Sie die viewDidLayoutUnteransichten ( ) -Methode, um die gebundenen Ebenen zu aktualisieren.
Nach der Veröffentlichung von iOS 10 wird ein zusätzlicher Eintrag in der Info.plist benötigt, dies liefert einen Grund für die Verwendung der Kamera. Sie sollten auch die Verwendungsbeschreibung der Privatsphäre-Kamera einstellen.
Texterkennung; So funktioniert das Vision-Framework
Es gibt drei Schritte, um Vision in der App zu implementieren.
- Handler – Dies ist der Fall, wenn das Framework etwas tun soll, nachdem die Anforderung aufgerufen wurde.
- Beobachtungen – das möchten Sie ab einer Anfrage mit den von Ihnen gelieferten Daten machen
- Anfragen – Dies ist, wenn Sie nach dem Detect-Framework fragen
Idealerweise erstellen Sie eine Textanfrage als VNdetecttextrectanglesrequest. Das ist eine Art VNranfrage das umrandet den Text. Nachdem das Framework die Anwendung abgeschlossen hat, rufen Sie die Dettexthandler Funktion. Sie möchten auch den genauen erkannten Rahmen wissen, stellen Sie ihn auf Meldezeichenfelder=Wahr.
Definieren Sie danach die Beobachtungen, die alle Ergebnisse von enthalten VNdetecttextrectanglesrequest, denken Sie daran, Vision zur Ausgabekamera hinzuzufügen. Da Vision High-Level-APIs bereitstellt, ist die Arbeit damit sicher.
Die Funktion prüft, ob die cmsamplebuffer existiert und PutOut Avcapture-Ausgabe. Sie sollten dann fortfahren, eine Variable zu erstellen Anfrageoptionen als 1 Wörterbuchtyp VNimageoption. Die VNmage Option ist ein Strukturtyp, der Eigenschaften und Daten von der Kamera enthält. Sie sollten dann die erstellen VNimagerequesthandler und führen Sie die Textanforderung aus.
Zeichnen von Rahmen um den erkannten Text
Sie können damit beginnen, dass das Framework zwei Kästchen zeichnet, eines für jeden erkannten Buchstaben und das andere für jedes Wort. Tabellen sind die Kombination aller Zeichenfelder, die Ihre Anfrage findet.
- Definieren Sie die Punkte in Ihrer Ansicht, um die Positionierung der Boxen zu erleichtern.
- Danach erstellen Sie a CALayeR; verwenden VNrRechteckbeobachtung um Ihre Einschränkungen zu definieren, um den Prozess des Umreißens der Box zu vereinfachen.
Sie haben jetzt alle Ihre Funktionen angeordnet.
Um Ihre Punkte zu verbinden, beginnen Sie damit, dass Ihr Code asynchron ausgeführt wird. Sie sollten dann überprüfen, ob eine Region in Ihren Ergebnissen von Ihrem VNTextBeobachtung.
Sie können jetzt Ihre Funktion aufrufen, die eine Box innerhalb des Bereichs zeichnet. Überprüfen Sie, ob es in der Region Zeichenfelder gibt, und rufen Sie dann den Dienst an, der ein Feld um jeden Buchstaben einfügt.
Danach erstellen Sie eine Variable AnfrageOptionen. Sie können jetzt a. erstellen VNImageRequestHandler Objekt und führen Sie die von Ihnen erstellte Textanfrage aus.
Der letzte Schritt ist schließlich das Ausführen Ihres Vision-Codes mit dem Live-Stream. Sie müssen die Videoausgabe nehmen und in konvertieren cmsamplebuffer.
Zusätzliche Tipps
- Versuchen Sie immer, das Bild zuzuschneiden und nur den Abschnitt zu bearbeiten, den Sie benötigen. Dies reduziert die Verarbeitungszeit und den Speicherbedarf
- Aktivieren Sie die Sprachkorrektur, wenn Sie mit nicht numerischen Zeichen arbeiten, und deaktivieren Sie sie, wenn Sie mit einem numerischen Zeichen arbeiten
- Fügen Sie eine Validierung für erkannte Zahlenzeichenfolgen hinzu, um die Genauigkeit zu bestätigen und zu verhindern, dass dem Benutzer falsche Werte angezeigt werden.
- Der Dokumentenkamera-Controller ist der beste Begleiter für die Texterkennung, da die Bildqualität bei der Texterkennung eine wichtige Rolle spielt.
- Ziehen Sie in Erwägung, eine minimale Texthöhe festzulegen, um die Leistung zu steigern.
Mit Vision haben Sie alles, was Sie für die Texterkennung benötigen. Da Vision einfach zu bedienen ist und eine kurze Implementierungszeit in Anspruch nimmt, ist die Verwendung fast gleichbedeutend mit dem Spielen mit Legos. Testen Sie Ihre App mit verschiedenen Objekten, Schriftarten, Beleuchtung und Größen. Sie können sich auch selbst beeindrucken, indem Sie Vision mit Core ML kombinieren.