3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android の Camera2 API と Mobile Vision API を使って 文字列を検出する

Last updated at Posted at 2019-06-09

Android の Mobile Vision API を使って バーコードを検出する
の続きです。

概要

前回の記事では、カメラからの連続画像からバーコードを検出した。
今回の記事では、カメラからの連続画像から文字列 (Text) を検出する。

下記の公式サンプルコードでは、カメラの制御に 旧来の Cameara API を使っている。

googlesamples : ocr-reader

Cameara API

この記事では、Camera2 API を使って 同様の機能を持つ アプリを作成する。

前回の記事で作成したバーコード検出のアプリをベースにする。

余談 : 文字列検出 (Text Detection) のこともを OCR (光学的文字認識 Optical Character Recognition) とも言う。
(Text と Character, Detection とRecognition, 同じ意味合いだが、微妙な違いがある。

Mobile Vision API の設定

AndroidManifest.xml を変更する

AndroidManifest.xml

    <!-- バーコード検出のとき -->
        <meta-data
            android:name="com.google.android.gms.vision.DEPENDENCIES"
            android:value="face" />

    <!-- 文字列検出のとき -->
        <meta-data
            android:name="com.google.android.gms.vision.DEPENDENCIES"
            android:value="ocr" />

文字列を検出する

顔検出やバーコード検出のときと同様の処理を行う。

TextRecognizer

TextRecognizer を生成する

  OcrDetectorProcessor processor

        TextRecognizer textRecognizer = new TextRecognizer.Builder(this).build();

        textRecognizer.setProcessor( processor );

reference : TextRecognizer

余談 : 検出器 (Detector) の名称は、
顔検出 と バーコード検出のときは、 FaceDetector とBarcodeDetector ですが、文字列検出は TextRecognizer です。

FrameProcessor

カメラからの連続画像を受け取り TextRecognizer に渡すためのFrameProcessor クラスを作成する。

このクラスは、バーコード検出のものをそのまま流用する。

余談 : 検出の結果を受け取るための クラス は、
顔検出やバーコード検出のときは、Tracker を継承していて、
名称も Tracker です。
文字列検出だけ、やり方が違う理由は、わからない。

reference : Detector.Processor

検出した文字列の上に長方形を表示する

顔検出やバーコード検出のときと同様の処理を行う。

ViewGroup を継承した CameraSourcePreview を作成する。
CameraSourcePreview の子のビューとして、カメラのプレビュー画面を表示する TextureView と長方形を表示するオーバーレイ用の View を作成する。

複数の文字列から1つを選ぶ

画面をタッチして選択する。

タッチした画面の位置と文字列の長方形の位置から、近くにあるものを選択する。

余談 : バーコード検出と、コードが微妙に違うが、気にしないことに。

スクリーンショット

vision4.png

サンプルコードをgithub に公開した。
https://github.com/ohwada/Android_Samples/tree/master/Vision4

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?