📃

【Amazon Rekognition】 aws-sdk-goでテキストを検出する

2021/11/29に公開

はじめに

Amazon Rekognitionについて前回に続いての、アウトプットです。
今回はテキストを検出してみます。

環境

  • go 1.17
  • github.com/aws/aws-sdk-go v1.42.9

今回検証する画像

1枚目

2枚目

3枚目

この3枚の写真からどのテキストが検出されるか検証してみます。
最初の画像はAWS Rekognitonのサンプル画像です。
2枚目はAWS Rekogntionページです。
3枚目は家にあった割り箸です。

では、早速やってみます。

ソースコード

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/rekognition"
)

const path = "image/"

//ここで画像の名前を定義します
var imageName1 = path + "cup.png"
var imageName2 = path + "Rekognition.png"
var imageName3 = path + "割り箸.jpg"

func main() {
	// AWSセッション作成
	sess := session.Must(session.NewSession())

	// Rekognitionクライアントを作成
	svc := rekognition.New(sess, aws.NewConfig().WithRegion("ap-northeast-1"))

	// 画像ファイルを取得。ここに上記で指定した画像の名前を入力する
	file, err := os.Open(imageName3)
	if err != nil {
		log.Fatal(err)
	}
	// 最後に画像ファイルを閉じます
	defer file.Close()

	// 画像ファイルのデータを読み込み
	bytes, err := ioutil.ReadAll(file)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	// svc.DetectTextに渡すパラメータを設定
	params := &rekognition.DetectTextInput{
		Image: &rekognition.Image{
			Bytes: bytes,
		},
	}

	// svc.DetectTextを実行
	result, err := svc.DetectText(params)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	
	//取得出来たテキストだけ出力
	for _, text := range result.TextDetections {
		fmt.Println(*text.DetectedText)
	}
}

画像を配列にしてfor文で回すと、どの画像のテキストか分からなくなると思ったので、
1枚ずつ実行しました。

以下が結果です。

出力結果

1枚目

IT'S
MONDAY
but keep
Smiling
IT'S
MONDAY
but
keep
Smiling

2枚目

Amazon Rekognition
X
Rekognition X- <a target='_blank'
href='https://docs.aws.amazon.com/rekognition/latest/dg/text-detection.h<a> Learn more
-
Amazon
Rekognition
X
Rekognition
X-
<a
target='_blank'
href='https://docs.aws.amazon.com/rekognition/latest/dg/text-detection.h<a>
Learn
more
-

3枚目

:bb
:PP
Otemoto B
:bb
:PP
Otemoto
B

という結果でした。
残念ながら日本語は検出出来ないようです。
otemotoは検出出来ました。
今回の写真にはありませんでしたが、英字の他に数字も検出出来るようです。
詳細はこちらをご覧ください。
https://docs.aws.amazon.com/ja_jp/rekognition/latest/dg/text-detection.html

さいごに

Rekognitonは簡単に使えて便利ですね。
日本語も検出してくれたら、もっと使い道が広がるのになぁ〜と思いました。
カスタムラベルというのがあって、日本語を機械学習させる方法もあるらしいです。

参考

https://docs.aws.amazon.com/ja_jp/rekognition/latest/dg/text-detection.html
https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectText.html

Discussion