Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

AWS Textract Detect Document Text

See more AWS Misc Examples

Detects text in the input document. Amazon Textract can detect lines of text and the words that make up a line of text. The input document must be in one of the following image formats: JPEG, PNG, PDF, or TIFF.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.AuthAws,
  Chilkat.Rest,
  Chilkat.BinData,
  Chilkat.JsonObject,
  Chilkat.StringBuilder;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  rest: TRest;
  bTls: Boolean;
  port: Integer;
  bAutoReconnect: Boolean;
  authAws: TAuthAws;
  json: TJsonObject;
  bdPng: TBinData;
  sbRequestBody: TStringBuilder;
  sbResponseBody: TStringBuilder;
  respStatusCode: Integer;
  jResp: TJsonObject;
  BlockType: string;
  Height: string;
  Left: string;
  Top: string;
  Width: string;
  Id: string;
  Confidence: string;
  Text: string;
  TextType: string;
  j: Integer;
  count_j: Integer;
  X: string;
  Y: string;
  v_Type: string;
  k: Integer;
  count_k: Integer;
  strVal: string;
  DetectDocumentTextModelVersion: string;
  Pages: Integer;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  rest := TRest.Create;

  bTls := True;
  port := 443;
  bAutoReconnect := True;
  success := rest.Connect('textract.us-west-2.amazonaws.com',port,bTls,bAutoReconnect);

  //  Provide AWS credentials for the REST call.
  authAws := TAuthAws.Create;
  authAws.AccessKey := 'AWS_ACCESS_KEY';
  authAws.SecretKey := 'AWS_SECRET_KEY';
  //  the region should match our URL above..
  authAws.Region := 'us-west-2';
  authAws.ServiceName := 'textract';

  rest.SetAuthAws(authAws);

  //  Use this online tool to generate code from sample JSON:
  //  Generate Code to Create JSON

  json := TJsonObject.Create;

  //  The JSON can contain either the actual bytes of the JPG, PDF, PNG, etc.
  //  or a reference to the S3 object.
  //  
  //  {
  //     "Document": { 
  //        "Bytes": blob,
  //        "S3Object": { 
  //           "Bucket": "string",
  //           "Name": "string",
  //           "Version": "string"
  //        }
  //     }
  //  }

  //  In this example we'll send the Bytes.  The S3Object is omitted.

  bdPng := TBinData.Create;
  success := bdPng.LoadFile('qa_data/png/image_with_text.png');
  if (success = False) then
    begin
      WriteLn('Failed to load PNG file.');
      Exit;
    end;

  json.UpdateString('Document.Bytes',bdPng.GetEncoded('base64'));

  rest.AddHeader('Content-Type','application/x-amz-json-1.1');
  rest.AddHeader('X-Amz-Target','Textract.DetectDocumentText');

  sbRequestBody := TStringBuilder.Create;
  json.EmitSb(sbRequestBody);
  sbResponseBody := TStringBuilder.Create;
  success := rest.FullRequestSb('POST','/',sbRequestBody,sbResponseBody);
  if (success <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;
  respStatusCode := rest.ResponseStatusCode;
  WriteLn('response status code = ' + respStatusCode);

  jResp := TJsonObject.Create;
  jResp.EmitCompact := False;
  jResp.LoadSb(sbResponseBody);

  if (respStatusCode >= 400) then
    begin
      WriteLn('Response Status Code = ' + respStatusCode);
      WriteLn('Response Header:');
      WriteLn(rest.ResponseHeader);
      WriteLn('Response Body:');
      WriteLn(jResp.Emit());
      Exit;
    end;

  WriteLn('Response Body:');
  WriteLn(jResp.Emit());

  //  Sample response body is shown below.

  //  Use this online tool to generate parsing code from sample JSON: 
  //  Generate Parsing Code from JSON

  DetectDocumentTextModelVersion := jResp.StringOf('DetectDocumentTextModelVersion');
  Pages := jResp.IntOf('DocumentMetadata.Pages');
  i := 0;
  count_i := jResp.SizeOfArray('Blocks');
  while i < count_i do
    begin
      jResp.I := i;
      BlockType := jResp.StringOf('Blocks[i].BlockType');
      Height := jResp.StringOf('Blocks[i].Geometry.BoundingBox.Height');
      Left := jResp.StringOf('Blocks[i].Geometry.BoundingBox.Left');
      Top := jResp.StringOf('Blocks[i].Geometry.BoundingBox.Top');
      Width := jResp.StringOf('Blocks[i].Geometry.BoundingBox.Width');
      Id := jResp.StringOf('Blocks[i].Id');
      Confidence := jResp.StringOf('Blocks[i].Confidence');
      Text := jResp.StringOf('Blocks[i].Text');
      TextType := jResp.StringOf('Blocks[i].TextType');
      j := 0;
      count_j := jResp.SizeOfArray('Blocks[i].Geometry.Polygon');
      while j < count_j do
        begin
          jResp.J := j;
          X := jResp.StringOf('Blocks[i].Geometry.Polygon[j].X');
          Y := jResp.StringOf('Blocks[i].Geometry.Polygon[j].Y');
          j := j + 1;
        end;

      j := 0;
      count_j := jResp.SizeOfArray('Blocks[i].Relationships');
      while j < count_j do
        begin
          jResp.J := j;
          v_Type := jResp.StringOf('Blocks[i].Relationships[j].Type');
          k := 0;
          count_k := jResp.SizeOfArray('Blocks[i].Relationships[j].Ids');
          while k < count_k do
            begin
              jResp.K := k;
              strVal := jResp.StringOf('Blocks[i].Relationships[j].Ids[k]');
              k := k + 1;
            end;

          j := j + 1;
        end;

      i := i + 1;
    end;

  //  {
  //    "Blocks": [
  //      {
  //        "BlockType": "PAGE",
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 1.0,
  //            "Left": 0.0,
  //            "Top": 0.0,
  //            "Width": 1.0
  //          },
  //          "Polygon": [
  //            {
  //              "X": 7.334237466238847E-7,
  //              "Y": 0.0
  //            },
  //            {
  //              "X": 1.0,
  //              "Y": 2.065305579890264E-6
  //            },
  //            {
  //              "X": 1.0,
  //              "Y": 1.0
  //            },
  //            {
  //              "X": 0.0,
  //              "Y": 1.0
  //            }
  //          ]
  //        },
  //        "Id": "9d01c4e1-c7ee-46d3-a020-b5d691551542",
  //        "Relationships": [
  //          {
  //            "Ids": [
  //              "5d230339-1492-4715-b643-3c1c092b9601",
  //              "06eb9de7-c1b2-4de4-83d4-bf14c683bbbc",
  //              "e3708093-ddce-4ece-b51b-36e75ee0650a",
  //              "0b75416b-4c5a-47ee-af5f-38e86196d09d",
  //              "f8e53727-d359-40a1-9c7a-17212be5b62f"
  //            ],
  //            "Type": "CHILD"
  //          }
  //        ]
  //      },
  //      {
  //        "BlockType": "LINE",
  //        "Confidence": 99.96929168701172,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.1283034384250641,
  //            "Left": 0.02562711574137211,
  //            "Top": 0.04522315785288811,
  //            "Width": 0.7353771924972534
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.025710511952638626,
  //              "Y": 0.04522315785288811
  //            },
  //            {
  //              "X": 0.7610043287277222,
  //              "Y": 0.04609351605176926
  //            },
  //            {
  //              "X": 0.7609506249427795,
  //              "Y": 0.1735266000032425
  //            },
  //            {
  //              "X": 0.02562711574137211,
  //              "Y": 0.17263372242450714
  //            }
  //          ]
  //        },
  //        "Id": "5d230339-1492-4715-b643-3c1c092b9601",
  //        "Relationships": [
  //          {
  //            "Ids": [
  //              "d10275a1-6a07-4df3-836e-b8418c7302e1",
  //              "f9394a51-8386-4245-b8f6-a4b8889b16be",
  //              "4a422774-0db5-47b1-9d86-486ee4df7bc9",
  //              "5018930a-0cb5-4df2-a782-ccb40b98692e",
  //              "5decb4b9-fa44-4b74-a410-d753ca9da87e"
  //            ],
  //            "Type": "CHILD"
  //          }
  //        ],
  //        "Text": "It was the best of"
  //      },
  //      {
  //        "BlockType": "LINE",
  //        "Confidence": 99.95220184326172,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.15143845975399017,
  //            "Left": 0.02354392223060131,
  //            "Top": 0.23623499274253845,
  //            "Width": 0.9416812658309937
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.02364235743880272,
  //              "Y": 0.23623499274253845
  //            },
  //            {
  //              "X": 0.9652252197265625,
  //              "Y": 0.23739269375801086
  //            },
  //            {
  //              "X": 0.9651715755462646,
  //              "Y": 0.3876734673976898
  //            },
  //            {
  //              "X": 0.02354392223060131,
  //              "Y": 0.38648173213005066
  //            }
  //          ]
  //        },
  //        "Id": "06eb9de7-c1b2-4de4-83d4-bf14c683bbbc",
  //        "Relationships": [
  //          {
  //            "Ids": [
  //              "df38a25e-1237-4837-9c73-2628cf2a60d6",
  //              "4006856d-989a-413a-a19d-ba58464056c7",
  //              "0cefb90d-9771-4a62-b47b-f4653f5a5fdc",
  //              "b090e2a0-59cb-483a-8489-eb7367c3ec42",
  //              "584e024d-cdb8-4991-964a-a6c00a219b4d"
  //            ],
  //            "Type": "CHILD"
  //          }
  //        ],
  //        "Text": "times, it was the worst"
  //      },
  //      {
  //        "BlockType": "LINE",
  //        "Confidence": 99.97298431396484,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.1645825207233429,
  //            "Left": 0.023708077147603035,
  //            "Top": 0.42446625232696533,
  //            "Width": 0.958830714225769
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.023815063759684563,
  //              "Y": 0.42446625232696533
  //            },
  //            {
  //              "X": 0.9825388193130493,
  //              "Y": 0.42568835616111755
  //            },
  //            {
  //              "X": 0.9824814200401306,
  //              "Y": 0.5890488028526306
  //            },
  //            {
  //              "X": 0.023708077147603035,
  //              "Y": 0.5877890586853027
  //            }
  //          ]
  //        },
  //        "Id": "e3708093-ddce-4ece-b51b-36e75ee0650a",
  //        "Relationships": [
  //          {
  //            "Ids": [
  //              "9e7fcad8-5fac-497e-941c-6af065273c4f",
  //              "06fa7250-a384-44b1-a821-f4961437dab8",
  //              "a5856e1f-1c35-4fd8-9d5c-ec112ce446da",
  //              "5d92695a-2ef5-4175-8483-955bdd21c8c5",
  //              "145e3940-2b15-4b0f-a1ef-c1eec67bfd34",
  //              "979e61b4-b915-4001-8761-e417fb5bcc88"
  //            ],
  //            "Type": "CHILD"
  //          }
  //        ],
  //        "Text": "of times, it was the age"
  //      },
  //      {
  //        "BlockType": "LINE",
  //        "Confidence": 99.92354583740234,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.15201467275619507,
  //            "Left": 0.02298363670706749,
  //            "Top": 0.6132552623748779,
  //            "Width": 0.8867681622505188
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.02308245748281479,
  //              "Y": 0.6132552623748779
  //            },
  //            {
  //              "X": 0.909751832485199,
  //              "Y": 0.6144257187843323
  //            },
  //            {
  //              "X": 0.9096953868865967,
  //              "Y": 0.765269935131073
  //            },
  //            {
  //              "X": 0.02298363670706749,
  //              "Y": 0.7640674114227295
  //            }
  //          ]
  //        },
  //        "Id": "0b75416b-4c5a-47ee-af5f-38e86196d09d",
  //        "Relationships": [
  //          {
  //            "Ids": [
  //              "477b9395-e813-4f47-8f6c-bbc6fd2a1b1d",
  //              "cb715516-6798-4db7-922e-aaa05c999497",
  //              "ff4bbb55-0ab1-4c91-a910-c44da34f3702",
  //              "8eae93f4-70a2-4723-b532-e52dfdde18fc",
  //              "7a25756d-68e2-45ec-bef4-f919294fecb3"
  //            ],
  //            "Type": "CHILD"
  //          }
  //        ],
  //        "Text": "of wisdom, it was the"
  //      },
  //      {
  //        "BlockType": "LINE",
  //        "Confidence": 99.92982482910156,
  //        "Geometry": {
  //  
  //          "BoundingBox": {
  //            "Height": 0.1690569967031479,
  //            "Left": 0.02215408906340599,
  //            "Top": 0.7996805906295776,
  //            "Width": 0.7357001900672913
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.022264225408434868,
  //              "Y": 0.7996805906295776
  //            },
  //            {
  //              "X": 0.7578542828559875,
  //              "Y": 0.8006845116615295
  //            },
  //            {
  //              "X": 0.7577832937240601,
  //              "Y": 0.9687376022338867
  //            },
  //            {
  //              "X": 0.02215408906340599,
  //              "Y": 0.9677039980888367
  //            }
  //          ]
  //        },
  //        "Id": "f8e53727-d359-40a1-9c7a-17212be5b62f",
  //        "Relationships": [
  //          {
  //            "Ids": [
  //              "5763091d-4807-44b0-94d6-1f6fba7c66ad",
  //              "f08b6956-7c97-4877-83e2-f495b3983963",
  //              "275f5f9f-fcd6-4447-8242-c6e777fc762a"
  //            ],
  //            "Type": "CHILD"
  //          }
  //        ],
  //        "Text": "age of foolishness"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.95569610595703,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12361754477024078,
  //            "Left": 0.02562711574137211,
  //            "Top": 0.049105118960142136,
  //            "Width": 0.07332543283700943
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.025707971304655075,
  //              "Y": 0.049105118960142136
  //            },
  //            {
  //              "X": 0.09895254671573639,
  //              "Y": 0.04919188469648361
  //            },
  //            {
  //              "X": 0.09887456148862839,
  //              "Y": 0.17272266745567322
  //            },
  //            {
  //              "X": 0.02562711574137211,
  //              "Y": 0.17263372242450714
  //            }
  //          ]
  //        },
  //        "Id": "d10275a1-6a07-4df3-836e-b8418c7302e1",
  //        "Text": "It",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.91895294189453,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.07870253175497055,
  //            "Left": 0.12013984471559525,
  //            "Top": 0.09188469499349594,
  //            "Width": 0.15315164625644684
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.1201888844370842,
  //              "Y": 0.09188469499349594
  //            },
  //            {
  //              "X": 0.2732914984226227,
  //              "Y": 0.09206762909889221
  //            },
  //            {
  //              "X": 0.27324625849723816,
  //              "Y": 0.1705872267484665
  //            },
  //            {
  //              "X": 0.12013984471559525,
  //              "Y": 0.17040139436721802
  //            }
  //          ]
  //        },
  //        "Id": "f9394a51-8386-4245-b8f6-a4b8889b16be",
  //        "Text": "was",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9923095703125,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12304235994815826,
  //            "Left": 0.30181974172592163,
  //            "Top": 0.048208922147750854,
  //            "Width": 0.13491466641426086
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.30188941955566406,
  //              "Y": 0.048208922147750854
  //            },
  //            {
  //              "X": 0.4367344081401825,
  //              "Y": 0.04836862161755562
  //            },
  //            {
  //              "X": 0.4366699755191803,
  //              "Y": 0.17125128209590912
  //            },
  //            {
  //              "X": 0.30181974172592163,
  //              "Y": 0.1710876077413559
  //            }
  //          ]
  //        },
  //        "Id": "4a422774-0db5-47b1-9d86-486ee4df7bc9",
  //        "Text": "the",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9902114868164,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12650197744369507,
  //            "Left": 0.4637022018432617,
  //            "Top": 0.04641735553741455,
  //            "Width": 0.17412298917770386
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.46376731991767883,
  //              "Y": 0.04641735553741455
  //            },
  //            {
  //              "X": 0.6378251910209656,
  //              "Y": 0.046623412519693375
  //            },
  //            {
  //              "X": 0.6377670168876648,
  //              "Y": 0.17291933298110962
  //            },
  //            {
  //              "X": 0.4637022018432617,
  //              "Y": 0.17270798981189728
  //            }
  //          ]
  //        },
  //        "Id": "5018930a-0cb5-4df2-a782-ccb40b98692e",
  //        "Text": "best",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.98930358886719,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12482605874538422,
  //            "Left": 0.6641513109207153,
  //            "Top": 0.04597894102334976,
  //            "Width": 0.09685297310352325
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.6642076969146729,
  //              "Y": 0.04597894102334976
  //            },
  //            {
  //              "X": 0.7610043287277222,
  //              "Y": 0.04609351605176926
  //            },
  //            {
  //              "X": 0.7609517574310303,
  //              "Y": 0.17080500721931458
  //            },
  //            {
  //              "X": 0.6641513109207153,
  //              "Y": 0.17068752646446228
  //            }
  //          ]
  //        },
  //        "Id": "5decb4b9-fa44-4b74-a410-d753ca9da87e",
  //        "Text": "of",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.94082641601562,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.1432349979877472,
  //            "Left": 0.02354392223060131,
  //            "Top": 0.24356883764266968,
  //            "Width": 0.25458571314811707
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.023637553676962852,
  //              "Y": 0.24356883764266968
  //            },
  //            {
  //              "X": 0.2781296372413635,
  //              "Y": 0.2438821941614151
  //            },
  //            {
  //              "X": 0.2780475318431854,
  //              "Y": 0.38680383563041687
  //            },
  //            {
  //              "X": 0.02354392223060131,
  //              "Y": 0.38648173213005066
  //            }
  //          ]
  //        },
  //        "Id": "df38a25e-1237-4837-9c73-2628cf2a60d6",
  //        "Text": "times,",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.98735046386719,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.11849363893270493,
  //            "Left": 0.3037284016609192,
  //            "Top": 0.24306905269622803,
  //            "Width": 0.0635330006480217
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.3037954568862915,
  //              "Y": 0.24306905269622803
  //            },
  //            {
  //              "X": 0.3672614097595215,
  //              "Y": 0.24314717948436737
  //            },
  //            {
  //              "X": 0.3671967089176178,
  //              "Y": 0.36156269907951355
  //            },
  //            {
  //              "X": 0.3037284016609192,
  //              "Y": 0.36148273944854736
  //            }
  //          ]
  //        },
  //        "Id": "4006856d-989a-413a-a19d-ba58464056c7",
  //        "Text": "it",
  //        "TextType": "HANDWRITING"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9149398803711,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.08177535980939865,
  //            "Left": 0.38862472772598267,
  //            "Top": 0.27884912490844727,
  //            "Width": 0.15473271906375885
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.3886687457561493,
  //              "Y": 0.27884912490844727
  //            },
  //            {
  //              "X": 0.5433574318885803,
  //              "Y": 0.2790408730506897
  //            },
  //            {
  //              "X": 0.543317437171936,
  //              "Y": 0.3606244921684265
  //            },
  //            {
  //              "X": 0.38862472772598267,
  //              "Y": 0.36042970418930054
  //            }
  //          ]
  //        },
  //        "Id": "0cefb90d-9771-4a62-b47b-f4653f5a5fdc",
  //        "Text": "was",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.99311828613281,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12356647849082947,
  //            "Left": 0.5699390172958374,
  //            "Top": 0.2369067519903183,
  //            "Width": 0.13684332370758057
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.5699985027313232,
  //              "Y": 0.2369067519903183
  //            },
  //            {
  //              "X": 0.706782341003418,
  //              "Y": 0.23707492649555206
  //            },
  //            {
  //              "X": 0.7067282199859619,
  //              "Y": 0.3604732155799866
  //            },
  //            {
  //              "X": 0.5699390172958374,
  //              "Y": 0.3603009879589081
  //            }
  //          ]
  //        },
  //        "Id": "b090e2a0-59cb-483a-8489-eb7367c3ec42",
  //        "Text": "the",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.92478942871094,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.09358794242143631,
  //            "Left": 0.7283655405044556,
  //            "Top": 0.26839619874954224,
  //            "Width": 0.23684848845005035
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.7284058332443237,
  //              "Y": 0.26839619874954224
  //            },
  //            {
  //              "X": 0.9652140140533447,
  //              "Y": 0.2686891257762909
  //            },
  //            {
  //              "X": 0.9651807546615601,
  //              "Y": 0.36198413372039795
  //            },
  //            {
  //              "X": 0.7283655405044556,
  //              "Y": 0.3616859018802643
  //            }
  //          ]
  //        },
  //        "Id": "584e024d-cdb8-4991-964a-a6c00a219b4d",
  //        "Text": "worst",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9924087524414,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12504424154758453,
  //            "Left": 0.023733235895633698,
  //            "Top": 0.42446625232696533,
  //            "Width": 0.09820675849914551
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.023815063759684563,
  //              "Y": 0.42446625232696533
  //            },
  //            {
  //              "X": 0.1219399943947792,
  //              "Y": 0.4245913326740265
  //            },
  //            {
  //              "X": 0.12186205387115479,
  //              "Y": 0.5495104789733887
  //            },
  //            {
  //              "X": 0.023733235895633698,
  //              "Y": 0.5493824481964111
  //            }
  //          ]
  //        },
  //        "Id": "9e7fcad8-5fac-497e-941c-6af065273c4f",
  //        "Text": "of",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.96434020996094,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.14146748185157776,
  //            "Left": 0.1365714967250824,
  //            "Top": 0.43465203046798706,
  //            "Width": 0.2509154975414276
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.1366589069366455,
  //              "Y": 0.43465203046798706
  //            },
  //            {
  //              "X": 0.38748699426651,
  //              "Y": 0.43497234582901
  //            },
  //            {
  //              "X": 0.3874107897281647,
  //              "Y": 0.5761194825172424
  //            },
  //            {
  //              "X": 0.1365714967250824,
  //              "Y": 0.5757906436920166
  //            }
  //          ]
  //        },
  //        "Id": "06fa7250-a384-44b1-a821-f4961437dab8",
  //        "Text": "times,",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.98502349853516,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.11561936885118484,
  //            "Left": 0.4144190847873688,
  //            "Top": 0.43338337540626526,
  //            "Width": 0.06467052549123764
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.41448044776916504,
  //              "Y": 0.43338337540626526
  //            },
  //            {
  //              "X": 0.479089617729187,
  //              "Y": 0.4334658682346344
  //            },
  //            {
  //              "X": 0.4790306091308594,
  //              "Y": 0.5490027666091919
  //            },
  //            {
  //              "X": 0.4144190847873688,
  //              "Y": 0.5489184856414795
  //            }
  //          ]
  //        },
  //        "Id": "a5856e1f-1c35-4fd8-9d5c-ec112ce446da",
  //        "Text": "it",
  //        "TextType": "HANDWRITING"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.91905975341797,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.08224299550056458,
  //            "Left": 0.49934622645378113,
  //            "Top": 0.4678362309932709,
  //            "Width": 0.15544551610946655
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.49938759207725525,
  //              "Y": 0.4678362309932709
  //            },
  //            {
  //              "X": 0.6547917127609253,
  //              "Y": 0.4680359363555908
  //            },
  //            {
  //              "X": 0.6547544002532959,
  //              "Y": 0.5500792264938354
  //            },
  //            {
  //              "X": 0.49934622645378113,
  //              "Y": 0.5498764514923096
  //            }
  //          ]
  //        },
  //        "Id": "5d92695a-2ef5-4175-8483-955bdd21c8c5",
  //        "Text": "was",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.99500274658203,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12332675606012344,
  //            "Left": 0.6814824938774109,
  //            "Top": 0.4259999394416809,
  //            "Width": 0.13685987889766693
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.6815374493598938,
  //              "Y": 0.4259999394416809
  //            },
  //            {
  //              "X": 0.8183423280715942,
  //              "Y": 0.4261743724346161
  //            },
  //            {
  //              "X": 0.8182926774024963,
  //              "Y": 0.5493267178535461
  //            },
  //            {
  //              "X": 0.6814824938774109,
  //              "Y": 0.5491482615470886
  //            }
  //          ]
  //        },
  //        "Id": "145e3940-2b15-4b0f-a1ef-c1eec67bfd34",
  //        "Text": "the",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.98210144042969,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12430953234434128,
  //            "Left": 0.8426083326339722,
  //            "Top": 0.46473923325538635,
  //            "Width": 0.13991668820381165
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.8426574468612671,
  //              "Y": 0.46473923325538635
  //            },
  //            {
  //              "X": 0.9825250506401062,
  //              "Y": 0.464918851852417
  //            },
  //            {
  //              "X": 0.9824814200401306,
  //              "Y": 0.5890488028526306
  //            },
  //            {
  //              "X": 0.8426083326339722,
  //              "Y": 0.5888649821281433
  //            }
  //          ]
  //        },
  //        "Id": "979e61b4-b915-4001-8761-e417fb5bcc88",
  //        "Text": "age",
  //        "TextType": "HANDWRITING"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9930419921875,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12172402441501617,
  //            "Left": 0.023001601919531822,
  //            "Top": 0.6150603294372559,
  //            "Width": 0.09997083991765976
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.023081274703145027,
  //              "Y": 0.6150603294372559
  //            },
  //            {
  //              "X": 0.12297244369983673,
  //              "Y": 0.615192174911499
  //            },
  //            {
  //              "X": 0.12289661169052124,
  //              "Y": 0.7367843389511108
  //            },
  //            {
  //              "X": 0.023001601919531822,
  //              "Y": 0.7366495132446289
  //            }
  //          ]
  //        },
  //        "Id": "477b9395-e813-4f47-8f6c-bbc6fd2a1b1d",
  //        "Text": "of",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.74298858642578,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.14897798001766205,
  //            "Left": 0.12940004467964172,
  //            "Top": 0.6157097220420837,
  //            "Width": 0.3510173559188843
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.12949234247207642,
  //              "Y": 0.6157097220420837
  //            },
  //            {
  //              "X": 0.480417400598526,
  //              "Y": 0.6161730885505676
  //            },
  //            {
  //              "X": 0.4803416132926941,
  //              "Y": 0.7646876573562622
  //            },
  //            {
  //              "X": 0.12940004467964172,
  //              "Y": 0.7642117142677307
  //            }
  //          ]
  //        },
  //        "Id": "cb715516-6798-4db7-922e-aaa05c999497",
  //        "Text": "wisdom,",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.98406982421875,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.11607321351766586,
  //            "Left": 0.5076302886009216,
  //            "Top": 0.6217586398124695,
  //            "Width": 0.06478644162416458
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.5076884627342224,
  //              "Y": 0.6217586398124695
  //            },
  //            {
  //              "X": 0.5724167227745056,
  //              "Y": 0.6218441724777222
  //            },
  //            {
  //              "X": 0.5723609328269958,
  //              "Y": 0.7378318309783936
  //            },
  //            {
  //              "X": 0.5076302886009216,
  //              "Y": 0.7377444505691528
  //            }
  //          ]
  //        },
  //        "Id": "ff4bbb55-0ab1-4c91-a910-c44da34f3702",
  //        "Text": "it",
  //        "TextType": "HANDWRITING"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.90616607666016,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.08252032846212387,
  //            "Left": 0.5927665829658508,
  //            "Top": 0.655697226524353,
  //            "Width": 0.15431776642799377
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.5928056836128235,
  //              "Y": 0.655697226524353
  //            },
  //            {
  //              "X": 0.747084379196167,
  //              "Y": 0.6559024453163147
  //            },
  //            {
  //              "X": 0.7470493316650391,
  //              "Y": 0.7382175922393799
  //            },
  //            {
  //              "X": 0.5927665829658508,
  //              "Y": 0.7380093336105347
  //            }
  //          ]
  //        },
  //        "Id": "8eae93f4-70a2-4723-b532-e52dfdde18fc",
  //        "Text": "was",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9914321899414,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12222800403833389,
  //            "Left": 0.775054395198822,
  //            "Top": 0.6142479777336121,
  //            "Width": 0.13469739258289337
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.7751052975654602,
  //              "Y": 0.6142479777336121
  //            },
  //            {
  //              "X": 0.909751832485199,
  //              "Y": 0.6144257187843323
  //            },
  //            {
  //              "X": 0.9097061157226562,
  //              "Y": 0.736475944519043
  //            },
  //            {
  //              "X": 0.775054395198822,
  //              "Y": 0.7362942695617676
  //            }
  //          ]
  //        },
  //        "Id": "7a25756d-68e2-45ec-bef4-f919294fecb3",
  //        "Text": "the",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.98051452636719,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12403102964162827,
  //            "Left": 0.02215408906340599,
  //            "Top": 0.8438721299171448,
  //            "Width": 0.1418474167585373
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.022235259413719177,
  //              "Y": 0.8438721299171448
  //            },
  //            {
  //              "X": 0.16400150954723358,
  //              "Y": 0.8440671563148499
  //            },
  //            {
  //              "X": 0.163925901055336,
  //              "Y": 0.967903196811676
  //            },
  //            {
  //              "X": 0.02215408906340599,
  //              "Y": 0.9677039980888367
  //            }
  //          ]
  //        },
  //        "Id": "5763091d-4807-44b0-94d6-1f6fba7c66ad",
  //        "Text": "age",
  //        "TextType": "PRINTED"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.9867935180664,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12490887939929962,
  //            "Left": 0.18867632746696472,
  //            "Top": 0.7999078035354614,
  //            "Width": 0.09571950137615204
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.18875153362751007,
  //              "Y": 0.7999078035354614
  //            },
  //            {
  //              "X": 0.28439584374427795,
  //              "Y": 0.8000383377075195
  //            },
  //            {
  //              "X": 0.28432440757751465,
  //              "Y": 0.9248167276382446
  //            },
  //            {
  //              "X": 0.18867632746696472,
  //              "Y": 0.9246832728385925
  //            }
  //          ]
  //        },
  //        "Id": "f08b6956-7c97-4877-83e2-f495b3983963",
  //        "Text": "of",
  //        "TextType": "HANDWRITING"
  //      },
  //      {
  //        "BlockType": "WORD",
  //        "Confidence": 99.82215881347656,
  //        "Geometry": {
  //          "BoundingBox": {
  //            "Height": 0.12534499168395996,
  //            "Left": 0.3012242317199707,
  //            "Top": 0.8001948595046997,
  //            "Width": 0.4566299617290497
  //          },
  //          "Polygon": [
  //            {
  //              "X": 0.3012949526309967,
  //              "Y": 0.8001948595046997
  //            },
  //            {
  //              "X": 0.7578542232513428,
  //              "Y": 0.8008179664611816
  //            },
  //            {
  //              "X": 0.7578015327453613,
  //              "Y": 0.9255398511886597
  //            },
  //            {
  //              "X": 0.3012242317199707,
  //              "Y": 0.9249030947685242
  //            }
  //          ]
  //        },
  //        "Id": "275f5f9f-fcd6-4447-8242-c6e777fc762a",
  //        "Text": "foolishness",
  //        "TextType": "PRINTED"
  //      }
  //    ],
  //    "DetectDocumentTextModelVersion": "1.0",
  //    "DocumentMetadata": {
  //      "Pages": 1
  //    }
  //  }


  rest.Free;
  authAws.Free;
  json.Free;
  bdPng.Free;
  sbRequestBody.Free;
  sbResponseBody.Free;
  jResp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.