ヘルプKaggleにTensorFlowグレートバリアリーフを保護チャレンジに参加

光学式文字認識(OCR)

光学式文字認識(OCR)は、コンピュータービジョンと機械学習技術を使用して画像から文字を認識するプロセスです。このリファレンスアプリは、TensorFlowLiteを使用してOCRを実行する方法をデモします。これは、の組み合わせ使用するテキスト検出モデルテキスト認識モデルをテキスト文字を認識するためにOCRパイプラインとして。

始めましょう

TensorFlow Liteを初めて使用し、Androidを使用している場合は、開始に役立つ次のサンプルアプリケーションを調べることをお勧めします。

Androidの例

あなたは、Android以外のプラットフォームを使用している、または既に精通している場合TensorFlow LiteのAPIは、あなたがからモデルをダウンロードすることができTFハブ

使い方

OCRタスクは多くの場合2つの段階に分けられます。まず、テキスト検出モデルを使用して、可能なテキストの周囲の境界ボックスを検出します。次に、処理されたバウンディングボックスをテキスト認識モデルにフィードして、バウンディングボックス内の特定の文字を決定します(テキスト認識の前に、非最大抑制、遠近法変換なども実行する必要があります)。この場合、両方のモデルはTensorFlow Hubからのものであり、FP16量子化モデルです。

パフォーマンスベンチマーク

パフォーマンスベンチマーク番号が記載ツールで生成され、ここで

モデル名モデルサイズ端末CPU GPU
テキスト検出45.9 Mb Pixel 4(Android 10) 181.93ms * 89.77ms *
テキスト認識16.8 Mb Pixel 4(Android 10) 338.33ms *該当なし**

* 4つのスレッドが使用されます。

**このモデルを実行するにはTensorFlowopsが必要なため、このモデルはGPUデリゲートを使用できませんでした

入力

テキスト検出モデルは、4-D受け付けるfloat32入力として(1、320、320、3)のテンソル。

テキスト認識モデルは、4-D受け付けるfloat32入力として(1、31、200、1)のテンソル。

出力

検出モデル戻り4-Dは、テキストfloat32バウンディングボックス及び4-Dのような形状のテンソル(1、80、80、5)はfloat32検出スコアのような形状のテンソル(1,80、80、5)。

テキスト認識モデルは、2-Dを返すfloat32アルファベットリスト「0123456789abcdefghijklmnopqrstuvwxyz」へのマッピングインデックスような形状のテンソル(1、48)

制限事項

  • 現在のテキスト認識モデルは、それほど英語のみがサポートされている、英語の文字と数字との合成データを使用して訓練されます。

  • モデルは、実際のOCRには十分に一般的ではありません(たとえば、低照明条件でスマートフォンのカメラによって撮影されたランダムな画像)。

そのため、TensorFlow LiteでOCRを実行する方法を示すために、3つのGoogle製品ロゴのみを選択しました。あなたはすぐに使用できる生産グレードのOCR製品を探している場合は、考慮すべきであるGoogleのMLキット。ほとんどのOCRユースケースでは、下にTFLiteを使用するMLキットで十分ですが、TFLiteを使用して独自のOCRソリューションを構築したい場合もあります。いくつかの例は次のとおりです。

  • 使用したい独自のテキスト検出/認識TFLiteモデルがあります
  • 特別なビジネス要件(つまり、逆さまのテキストの認識)があり、OCRパイプラインをカスタマイズする必要があります
  • MLキットでカバーされていない言語をサポートしたい
  • ターゲットユーザーのデバイスには、必ずしもGooglePlayサービスがインストールされているとは限りません。

参考文献