Amazon Rekognitionで画像からテキストを抽出してみる

使い方などはこちら
https://hacknote.jp/archives/40229/

テキストの抽出

使い方は上記でわかったので、次は画像からテキストを抽出してみます。

SDKも使えますが、今回はAWS CLIを使います。

  • Amazon RekognitionのCLIのリファレンスはこちら
  • テキスト検出についてはこちら


テキスト検出のリファレンスを見ると日本語はまだ対応していないようです。

また検出できる条件などもあるので注意が必要です。

というわけで英語のテキストが写っているこちらの画像を使いたいと思います!

S3から読み込む場合

aws rekognition detect-text --image "S3Object={Bucket=BucketName,Name=ImageName}"

ローカルから読み込む場合

aws rekognition detect-text --image-bytes fileb://ImageName

レスポンス

{
    "TextDetections": [
        {
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.4783376157283783,
                    "Top": 0.22333332896232605,
                    "Left": 0.3499999940395355,
                    "Height": 0.1683286428451538
                },
                "Polygon": [
                    {
                        "Y": 0.22333332896232605,
                        "X": 0.3499999940395355
                    },
                    {
                        "Y": 0.22585685551166534,
                        "X": 0.8283376097679138
                    },
                    {
                        "Y": 0.39418551325798035,
                        "X": 0.8274495601654053
                    },
                    {
                        "Y": 0.39166197180747986,
                        "X": 0.34911197423934937
                    }
                ]
            },
            "Confidence": 98.01078796386719,
            "DetectedText": "English",
            "Type": "LINE",
            "Id": 0
        },
        {
            "Confidence": 98.01078796386719,
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.47834494709968567,
                    "Top": 0.22333332896232605,
                    "Left": 0.3499999940395355,
                    "Height": 0.16667500138282776
                },
                "Polygon": [
                    {
                        "Y": 0.22333332896232605,
                        "X": 0.3499999940395355
                    },
                    {
                        "Y": 0.2266666740179062,
                        "X": 0.82833331823349
                    },
                    {
                        "Y": 0.3933333456516266,
                        "X": 0.8266666531562805
                    },
                    {
                        "Y": 0.3916666805744171,
                        "X": 0.3499999940395355
                    }
                ]
            },
            "DetectedText": "English",
            "ParentId": 0,
            "Type": "WORD",
            "Id": 1
        }
    ]
}

以下のようになっているので、抽出することができました!

"DetectedText": "English"

また、[Type]がLINEやWORDになってると思いますが、行での認識と単語での認識と、2パターン行ってくれます。 ←便利!



フォントじゃなくてイラストでもしっかりと認識していてビックリです、、、!