Amazon Rekognition

2020/02/17 - Amazon Rekognition - 2 new 1 updated api methods

Changes  This update adds the ability to detect text in videos and adds filters to image and video text detection.

GetTextDetection (new) Link ¶

Gets the text detection results of a Amazon Rekognition Video analysis started by StartTextDetection.

Text detection with Amazon Rekognition Video is an asynchronous operation. You start text detection by calling StartTextDetection which returns a job identifier ( JobId ) When the text detection operation finishes, Amazon Rekognition publishes a completion status to the Amazon Simple Notification Service topic registered in the initial call to StartTextDetection . To get the results of the text detection operation, first check that the status value published to the Amazon SNS topic is SUCCEEDED . if so, call GetTextDetection and pass the job identifier ( JobId ) from the initial call of StartLabelDetection .

GetTextDetection returns an array of detected text ( TextDetections ) sorted by the time the text was detected, up to 50 words per frame of video.

Each element of the array includes the detected text, the precentage confidence in the acuracy of the detected text, the time the text was detected, bounding box information for where the text was located, and unique identifiers for words and their lines.

Use MaxResults parameter to limit the number of text detections returned. If there are more results than specified in MaxResults , the value of NextToken in the operation response contains a pagination token for getting the next set of results. To get the next page of results, call GetTextDetection and populate the NextToken request parameter with the token value returned from the previous call to GetTextDetection .

See also: AWS API Documentation

Request Syntax

client.get_text_detection(
    JobId='string',
    MaxResults=123,
    NextToken='string'
)
type JobId

string

param JobId

[REQUIRED]

Job identifier for the label detection operation for which you want results returned. You get the job identifer from an initial call to StartTextDetection .

type MaxResults

integer

param MaxResults

Maximum number of results to return per paginated call. The largest value you can specify is 1000.

type NextToken

string

param NextToken

If the previous response was incomplete (because there are more labels to retrieve), Amazon Rekognition Video returns a pagination token in the response. You can use this pagination token to retrieve the next set of text.

rtype

dict

returns

Response Syntax

{
    'JobStatus': 'IN_PROGRESS'|'SUCCEEDED'|'FAILED',
    'StatusMessage': 'string',
    'VideoMetadata': {
        'Codec': 'string',
        'DurationMillis': 123,
        'Format': 'string',
        'FrameRate': ...,
        'FrameHeight': 123,
        'FrameWidth': 123
    },
    'TextDetections': [
        {
            'Timestamp': 123,
            'TextDetection': {
                'DetectedText': 'string',
                'Type': 'LINE'|'WORD',
                'Id': 123,
                'ParentId': 123,
                'Confidence': ...,
                'Geometry': {
                    'BoundingBox': {
                        'Width': ...,
                        'Height': ...,
                        'Left': ...,
                        'Top': ...
                    },
                    'Polygon': [
                        {
                            'X': ...,
                            'Y': ...
                        },
                    ]
                }
            }
        },
    ],
    'NextToken': 'string',
    'TextModelVersion': 'string'
}

Response Structure

  • (dict) --

    • JobStatus (string) --

      Current status of the text detection job.

    • StatusMessage (string) --

      If the job fails, StatusMessage provides a descriptive error message.

    • VideoMetadata (dict) --

      Information about a video that Amazon Rekognition analyzed. Videometadata is returned in every page of paginated responses from a Amazon Rekognition video operation.

      • Codec (string) --

        Type of compression used in the analyzed video.

      • DurationMillis (integer) --

        Length of the video in milliseconds.

      • Format (string) --

        Format of the analyzed video. Possible values are MP4, MOV and AVI.

      • FrameRate (float) --

        Number of frames per second in the video.

      • FrameHeight (integer) --

        Vertical pixel dimension of the video.

      • FrameWidth (integer) --

        Horizontal pixel dimension of the video.

    • TextDetections (list) --

      An array of text detected in the video. Each element contains the detected text, the time in milliseconds from the start of the video that the text was detected, and where it was detected on the screen.

      • (dict) --

        Information about text detected in a video. Incudes the detected text, the time in milliseconds from the start of the video that the text was detected, and where it was detected on the screen.

        • Timestamp (integer) --

          The time, in milliseconds from the start of the video, that the text was detected.

        • TextDetection (dict) --

          Details about text detected in a video.

          • DetectedText (string) --

            The word or line of text recognized by Amazon Rekognition.

          • Type (string) --

            The type of text that was detected.

          • Id (integer) --

            The identifier for the detected text. The identifier is only unique for a single call to DetectText .

          • ParentId (integer) --

            The Parent identifier for the detected text identified by the value of ID . If the type of detected text is LINE , the value of ParentId is Null .

          • Confidence (float) --

            The confidence that Amazon Rekognition has in the accuracy of the detected text and the accuracy of the geometry points around the detected text.

          • Geometry (dict) --

            The location of the detected text on the image. Includes an axis aligned coarse bounding box surrounding the text and a finer grain polygon for more accurate spatial information.

            • BoundingBox (dict) --

              An axis-aligned coarse representation of the detected item's location on the image.

              • Width (float) --

                Width of the bounding box as a ratio of the overall image width.

              • Height (float) --

                Height of the bounding box as a ratio of the overall image height.

              • Left (float) --

                Left coordinate of the bounding box as a ratio of overall image width.

              • Top (float) --

                Top coordinate of the bounding box as a ratio of overall image height.

            • Polygon (list) --

              Within the bounding box, a fine-grained polygon around the detected item.

              • (dict) --

                The X and Y coordinates of a point on an image. The X and Y values returned are ratios of the overall image size. For example, if the input image is 700x200 and the operation returns X=0.5 and Y=0.25, then the point is at the (350,50) pixel coordinate on the image.

                An array of Point objects, Polygon , is returned by DetectText and by DetectCustomLabels. Polygon represents a fine-grained polygon around a detected item. For more information, see Geometry in the Amazon Rekognition Developer Guide.

                • X (float) --

                  The value of the X coordinate for a point on a Polygon .

                • Y (float) --

                  The value of the Y coordinate for a point on a Polygon .

    • NextToken (string) --

      If the response is truncated, Amazon Rekognition Video returns this token that you can use in the subsequent request to retrieve the next set of text.

    • TextModelVersion (string) --

      Version number of the text detection model that was used to detect text.

StartTextDetection (new) Link ¶

Starts asynchronous detection of text in a stored video.

Amazon Rekognition Video can detect text in a video stored in an Amazon S3 bucket. Use Video to specify the bucket name and the filename of the video. StartTextDetection returns a job identifier ( JobId ) which you use to get the results of the operation. When text detection is finished, Amazon Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic that you specify in NotificationChannel .

To get the results of the text detection operation, first check that the status value published to the Amazon SNS topic is SUCCEEDED . if so, call GetTextDetection and pass the job identifier ( JobId ) from the initial call to StartTextDetection .

See also: AWS API Documentation

Request Syntax

client.start_text_detection(
    Video={
        'S3Object': {
            'Bucket': 'string',
            'Name': 'string',
            'Version': 'string'
        }
    },
    ClientRequestToken='string',
    NotificationChannel={
        'SNSTopicArn': 'string',
        'RoleArn': 'string'
    },
    JobTag='string',
    Filters={
        'WordFilter': {
            'MinConfidence': ...,
            'MinBoundingBoxHeight': ...,
            'MinBoundingBoxWidth': ...
        },
        'RegionsOfInterest': [
            {
                'BoundingBox': {
                    'Width': ...,
                    'Height': ...,
                    'Left': ...,
                    'Top': ...
                }
            },
        ]
    }
)
type Video

dict

param Video

[REQUIRED]

Video file stored in an Amazon S3 bucket. Amazon Rekognition video start operations such as StartLabelDetection use Video to specify a video for analysis. The supported file formats are .mp4, .mov and .avi.

  • S3Object (dict) --

    The Amazon S3 bucket name and file name for the video.

    • Bucket (string) --

      Name of the S3 bucket.

    • Name (string) --

      S3 object key name.

    • Version (string) --

      If the bucket is versioning enabled, you can specify the object version.

type ClientRequestToken

string

param ClientRequestToken

Idempotent token used to identify the start request. If you use the same token with multiple StartTextDetection requests, the same JobId is returned. Use ClientRequestToken to prevent the same job from being accidentaly started more than once.

type NotificationChannel

dict

param NotificationChannel

The Amazon Simple Notification Service topic to which Amazon Rekognition publishes the completion status of a video analysis operation. For more information, see api-video.

  • SNSTopicArn (string) -- [REQUIRED]

    The Amazon SNS topic to which Amazon Rekognition to posts the completion status.

  • RoleArn (string) -- [REQUIRED]

    The ARN of an IAM role that gives Amazon Rekognition publishing permissions to the Amazon SNS topic.

type JobTag

string

param JobTag

An identifier returned in the completion status published by your Amazon Simple Notification Service topic. For example, you can use JobTag to group related jobs and identify them in the completion notification.

type Filters

dict

param Filters

Optional parameters that let you set criteria the text must meet to be included in your response.

  • WordFilter (dict) --

    Filters focusing on qualities of the text, such as confidence or size.

    • MinConfidence (float) --

      Sets confidence of word detection. Words with detection confidence below this will be excluded from the result. Values should be between 0.5 and 1 as Text in Video will not return any result below 0.5.

    • MinBoundingBoxHeight (float) --

      Sets the minimum height of the word bounding box. Words with bounding box heights lesser than this value will be excluded from the result. Value is relative to the video frame height.

    • MinBoundingBoxWidth (float) --

      Sets the minimum width of the word bounding box. Words with bounding boxes widths lesser than this value will be excluded from the result. Value is relative to the video frame width.

  • RegionsOfInterest (list) --

    Filter focusing on a certain area of the frame. Uses a BoundingBox object to set the region of the screen.

    • (dict) --

      Specifies a location within the frame that Rekognition checks for text. Uses a BoundingBox object to set a region of the screen.

      A word is included in the region if the word is more than half in that region. If there is more than one region, the word will be compared with all regions of the screen. Any word more than half in a region is kept in the results.

      • BoundingBox (dict) --

        The box representing a region of interest on screen.

        • Width (float) --

          Width of the bounding box as a ratio of the overall image width.

        • Height (float) --

          Height of the bounding box as a ratio of the overall image height.

        • Left (float) --

          Left coordinate of the bounding box as a ratio of overall image width.

        • Top (float) --

          Top coordinate of the bounding box as a ratio of overall image height.

rtype

dict

returns

Response Syntax

{
    'JobId': 'string'
}

Response Structure

  • (dict) --

    • JobId (string) --

      Identifier for the text detection job. Use JobId to identify the job in a subsequent call to GetTextDetection .

DetectText (updated) Link ¶
Changes (request, response)
Request
{'Filters': {'RegionsOfInterest': [{'BoundingBox': {'Height': 'float',
                                                    'Left': 'float',
                                                    'Top': 'float',
                                                    'Width': 'float'}}],
             'WordFilter': {'MinBoundingBoxHeight': 'float',
                            'MinBoundingBoxWidth': 'float',
                            'MinConfidence': 'float'}}}
Response
{'TextModelVersion': 'string'}

Detects text in the input image and converts it into machine-readable text.

Pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If you use the AWS CLI to call Amazon Rekognition operations, you must pass it as a reference to an image in an Amazon S3 bucket. For the AWS CLI, passing image bytes is not supported. The image must be either a .png or .jpeg formatted file.

The DetectText operation returns text in an array of TextDetection elements, TextDetections . Each TextDetection element provides information about a single word or line of text that was detected in the image.

A word is one or more ISO basic latin script characters that are not separated by spaces. DetectText can detect up to 50 words in an image.

A line is a string of equally spaced words. A line isn't necessarily a complete sentence. For example, a driver's license number is detected as a line. A line ends when there is no aligned text after it. Also, a line ends when there is a large gap between words, relative to the length of the words. This means, depending on the gap between words, Amazon Rekognition may detect multiple lines in text aligned in the same direction. Periods don't represent the end of a line. If a sentence spans multiple lines, the DetectText operation returns multiple lines.

To determine whether a TextDetection element is a line of text or a word, use the TextDetection object Type field.

To be detected, text must be within +/- 90 degrees orientation of the horizontal axis.

For more information, see DetectText in the Amazon Rekognition Developer Guide.

See also: AWS API Documentation

Request Syntax

client.detect_text(
    Image={
        'Bytes': b'bytes',
        'S3Object': {
            'Bucket': 'string',
            'Name': 'string',
            'Version': 'string'
        }
    },
    Filters={
        'WordFilter': {
            'MinConfidence': ...,
            'MinBoundingBoxHeight': ...,
            'MinBoundingBoxWidth': ...
        },
        'RegionsOfInterest': [
            {
                'BoundingBox': {
                    'Width': ...,
                    'Height': ...,
                    'Left': ...,
                    'Top': ...
                }
            },
        ]
    }
)
type Image

dict

param Image

[REQUIRED]

The input image as base64-encoded bytes or an Amazon S3 object. If you use the AWS CLI to call Amazon Rekognition operations, you can't pass image bytes.

If you are using an AWS SDK to call Amazon Rekognition, you might not need to base64-encode image bytes passed using the Bytes field. For more information, see Images in the Amazon Rekognition developer guide.

  • Bytes (bytes) --

    Blob of image bytes up to 5 MBs.

  • S3Object (dict) --

    Identifies an S3 object as the image source.

    • Bucket (string) --

      Name of the S3 bucket.

    • Name (string) --

      S3 object key name.

    • Version (string) --

      If the bucket is versioning enabled, you can specify the object version.

type Filters

dict

param Filters

Optional parameters that let you set the criteria that the text must meet to be included in your response.

  • WordFilter (dict) --

    A set of parameters that allow you to filter out certain results from your returned results.

    • MinConfidence (float) --

      Sets confidence of word detection. Words with detection confidence below this will be excluded from the result. Values should be between 0.5 and 1 as Text in Video will not return any result below 0.5.

    • MinBoundingBoxHeight (float) --

      Sets the minimum height of the word bounding box. Words with bounding box heights lesser than this value will be excluded from the result. Value is relative to the video frame height.

    • MinBoundingBoxWidth (float) --

      Sets the minimum width of the word bounding box. Words with bounding boxes widths lesser than this value will be excluded from the result. Value is relative to the video frame width.

  • RegionsOfInterest (list) --

    A Filter focusing on a certain area of the image. Uses a BoundingBox object to set the region of the image.

    • (dict) --

      Specifies a location within the frame that Rekognition checks for text. Uses a BoundingBox object to set a region of the screen.

      A word is included in the region if the word is more than half in that region. If there is more than one region, the word will be compared with all regions of the screen. Any word more than half in a region is kept in the results.

      • BoundingBox (dict) --

        The box representing a region of interest on screen.

        • Width (float) --

          Width of the bounding box as a ratio of the overall image width.

        • Height (float) --

          Height of the bounding box as a ratio of the overall image height.

        • Left (float) --

          Left coordinate of the bounding box as a ratio of overall image width.

        • Top (float) --

          Top coordinate of the bounding box as a ratio of overall image height.

rtype

dict

returns

Response Syntax

{
    'TextDetections': [
        {
            'DetectedText': 'string',
            'Type': 'LINE'|'WORD',
            'Id': 123,
            'ParentId': 123,
            'Confidence': ...,
            'Geometry': {
                'BoundingBox': {
                    'Width': ...,
                    'Height': ...,
                    'Left': ...,
                    'Top': ...
                },
                'Polygon': [
                    {
                        'X': ...,
                        'Y': ...
                    },
                ]
            }
        },
    ],
    'TextModelVersion': 'string'
}

Response Structure

  • (dict) --

    • TextDetections (list) --

      An array of text that was detected in the input image.

      • (dict) --

        Information about a word or line of text detected by DetectText.

        The DetectedText field contains the text that Amazon Rekognition detected in the image.

        Every word and line has an identifier ( Id ). Each word belongs to a line and has a parent identifier ( ParentId ) that identifies the line of text in which the word appears. The word Id is also an index for the word within a line of words.

        For more information, see Detecting Text in the Amazon Rekognition Developer Guide.

        • DetectedText (string) --

          The word or line of text recognized by Amazon Rekognition.

        • Type (string) --

          The type of text that was detected.

        • Id (integer) --

          The identifier for the detected text. The identifier is only unique for a single call to DetectText .

        • ParentId (integer) --

          The Parent identifier for the detected text identified by the value of ID . If the type of detected text is LINE , the value of ParentId is Null .

        • Confidence (float) --

          The confidence that Amazon Rekognition has in the accuracy of the detected text and the accuracy of the geometry points around the detected text.

        • Geometry (dict) --

          The location of the detected text on the image. Includes an axis aligned coarse bounding box surrounding the text and a finer grain polygon for more accurate spatial information.

          • BoundingBox (dict) --

            An axis-aligned coarse representation of the detected item's location on the image.

            • Width (float) --

              Width of the bounding box as a ratio of the overall image width.

            • Height (float) --

              Height of the bounding box as a ratio of the overall image height.

            • Left (float) --

              Left coordinate of the bounding box as a ratio of overall image width.

            • Top (float) --

              Top coordinate of the bounding box as a ratio of overall image height.

          • Polygon (list) --

            Within the bounding box, a fine-grained polygon around the detected item.

            • (dict) --

              The X and Y coordinates of a point on an image. The X and Y values returned are ratios of the overall image size. For example, if the input image is 700x200 and the operation returns X=0.5 and Y=0.25, then the point is at the (350,50) pixel coordinate on the image.

              An array of Point objects, Polygon , is returned by DetectText and by DetectCustomLabels. Polygon represents a fine-grained polygon around a detected item. For more information, see Geometry in the Amazon Rekognition Developer Guide.

              • X (float) --

                The value of the X coordinate for a point on a Polygon .

              • Y (float) --

                The value of the Y coordinate for a point on a Polygon .

    • TextModelVersion (string) --

      The model version used to detect text.