IPhone:iOSテキスト検出機能の使用方法

click fraud protection

iOS 11のVisionには、実装が同時に行われるテキスト文字を認識できるアプリを作成するために必要なすべてのものがあります。 技術的なコーディングの知識は必要ありません。機能の操作は非常に簡単です。 さらに、実装はシームレスです。

ビジョンフレームワーク

ビジョンフレームワークを使用すると、コンピューターの詳細を含むあらゆるタスクを簡単に実装できます。 この構造は、顔と顔のランドマーク検出、バーコード認識、画像レジストレーション、一般的な特徴追跡、およびテキスト検出を実行します。 Visionでは、分類やオブ​​ジェクト検出などのタスクにカスタムCoreMLモデルを使用することもできます。

VN DetectTextRectanglesRequest

NS VN DetectTextRectanglesRequest 画像内の表示テキストの領域を見つける画像分析リクエストです。 この機能は、テキスト文字を原点とサイズの長方形の境界ボックスとして返します。

swiftの使用に慣れていて、しばらくプログラミングをしている場合は、画像やAVFoundationなどの他の機能がある場合にVisionをどのように使用するのか疑問に思われるかもしれません。 まあ、ビジョンはより正確でより簡単です。 この機能は、さまざまなプラットフォームでも利用できます。 ただし、Visionを使用すると、より多くの処理能力と処理時間が必要になる場合があります。

テキスト検出にVisionを使用するには、Xcode9とiOS11を実行するデバイスが必要です。

Avcaptureを使用したカメラの作成

まず、でカメラを作成する必要があります AVCapture; これは、1つのオブジェクトAVcapturesessionを初期化して、リアルタイムまたはオフラインのキャプチャを実行することによるものです。 その後、デバイス接続へのセッションを作成します。

アプリのUIを構築する時間を節約するために、スタータープロジェクトを用意することを検討してください。まず、これにより、Visionフレームワークの学習に集中する時間ができます。

  1. スタータープロジェクトを開きます。 ストーリーボードのビューはすべて準備ができており、設定されている必要があります。
  2. に ViewController.swift、 関数とアウトレットを含むコードセクションを探します。
  3. コンセントの下-ImageView、dのセッションを宣言する AVcapturesession –これは、ライブストリームに基づいてアクションを実行する場合に使用されます。
  4. をセットする AVcapturesession そしてその AVmediatype カメラ撮影を実行して継続的に実行できるようにするため、ビデオに
  5. 出力および入力デバイスを定義します
  6. 入力はカメラが見るものであり、出力はKCVPixelFormatType_32GRAの設定されたタイプ形式のビデオです。
  7. 最後に、 サブレイヤー にビデオが含まれています imageView セッションを開始します。 この機能は、 inViewdidload。 レイヤーのフレームも設定する必要があります。

で関数を呼び出します viewWillAppear 方法。

境界はまだ確定していないため、 viewDidLayoutSubviews() バインドされたレイヤーを更新するメソッド。

iOS 10のリリース後、Info.plistに追加のエントリが必要になります。これにより、カメラを使用する理由が得られます。 また、プライバシー-カメラの使用法の説明を設定する必要があります。

テキスト検出; ビジョンフレームワークのしくみ

アプリにVisionを実装するには3つのステップがあります。

  1. ハンドラー– これは、リクエストが呼び出された後にフレームワークに何かを実行させたい場合です。
  2. 観察– これは、1つのリクエストから始めて提供されたデータでやりたいことです
  3. リクエスト - これは、Detectフレームワークを要求するときです

理想的には、1つのテキストリクエストを次のように作成します VNdetecttextrectanglesrequest. これは一種です VNrequest それはテキストの周りに隣接しています。 フレームワークがアプリケーションを完了した後、呼び出しに進みます Dettexthandler 関数。 また、認識された正確なフレームを知りたい場合は、次のように設定します。 レポート文字ボックス= True。

その後、のすべての結果を含む観測値を定義します VNdetecttextrectanglesrequest、出力カメラにVisionを追加することを忘れないでください。 Visionは高レベルのAPIを公開しているため、Visionでの作業は安全です。

関数は、 Cmsamplebuffer 存在し、PutOut Avcaptureoutput. 次に、1つの変数の作成に進む必要があります Requestoptions 1つの辞書タイプとして VNimageoption. NS VNmage オプションは、カメラからのプロパティとデータを含む構造のタイプです。 次に、を作成する必要があります VNimagerequesthandler テキストリクエストを実行します。

検出されたテキストの周囲に境界線を描画する

フレームワークで2つのボックスを描画することから始めることができます。1つは検出するすべての文字用で、もう1つはすべての単語用です。 テーブルは、リクエストで見つかるすべての文字ボックスの組み合わせです。

  • ボックスの配置に役立つように、ビュー上のポイントを定義します。
  • その後、作成します CALayeNS; 使用する VNrectangleobservation 制約を定義して、ボックスの輪郭を描くプロセスを簡単にします。

これで、すべての機能がレイアウトされました。

ドットを接続するには、コードを非同期で実行することから始めます。 次に、結果内に地域が存在するかどうかを確認する必要があります VNTextObservation.

これで、関数を呼び出すことができます。これにより、領域内にボックスが描画されます。 リージョン内に文字ボックスがあるかどうかを確認してから、各文字の周りにボックスを表示するサービスを呼び出します。

その後、変数を作成します RequestOptions。 これで、 VNImageRequestHandler オブジェクトを作成し、作成したテキストリクエストを実行します。

最後に、最後のステップは、ライブストリームでビジョンコードを実行することです。 ビデオ出力を取得して、に変換する必要があります Cmsamplebuffer。

追加のヒント

  1. 常に画像をトリミングし、必要なセクションのみを処理するようにしてください。 これにより、処理時間とメモリフットプリントが削減されます
  2. 非数字を扱う場合は言語修正をオンにし、数字を扱う場合は言語修正をオフにします
  3. 認識された数値文字列の検証を含めて、正確性を確認し、ユーザーに誤った値を表示しないようにします。
  4. 書画カメラコントローラーは、画質がテキスト認識で重要な役割を果たすため、テキスト認識に最適なコンパニオンです。
  5. パフォーマンスを向上させるために、最小テキスト高さを設定することを検討してください。

Visionを使用すると、テキスト認識に必要なものがすべて揃っています。 Visionは使いやすく、実装に時間がかかるため、Visionを使用することはレゴで遊ぶこととほぼ同じです。 さまざまなオブジェクト、フォント、照明、サイズでアプリをテストしてみてください。 VisionとCoreMLを組み合わせることで、自分自身を感動させることもできます。