As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Chamando operações assíncronas do Amazon Textract
O Amazon Textract fornece uma API assíncrona que você pode usar para processar documentos de várias páginas no formato PDF ou TIFF. Você também pode usar operações assíncronas para processar documentos de página única em formato JPEG, PNG, TIFF ou PDF.
As informações neste tópico usam operações de detecção de texto para mostrar como você deve usar as operações assíncronas do Amazon Textract. Você pode usar a mesma abordagem com as operações de análise de texto de StartDocumentAnalysisGetDocumentAnalysise. Também funciona da mesma forma com StartExpenseAnalysisGetExpenseAnalysise.
Para ver um exemplo, consulte Detectando ou analisando texto em um documento de várias páginas.
Se você estiver analisando documentos de empréstimo, você pode usar a StartLendingAnalysis operação para classificar páginas de documentos e enviar as páginas classificadas para uma operação de análise do Amazon Textract. As páginas são encaminhadas para operações de análise, dependendo da classe atribuída.
Você pode recuperar resultados de páginas individuais usando a GetLendingAnalysis operação ou recuperar um resumo da análise com. GetLendingAnalysisSummary
O Amazon Textract processa de forma assíncrona um documento armazenado em um bucket do Amazon S3. Você inicia o processamento chamando uma Start operação, como StartDocumentTextDetection. O status de conclusão da solicitação é publicado em um tópico do Amazon Simple Notification Service (Amazon SNS). Para obter o status de conclusão do tópico do Amazon SNS, você pode usar uma fila ou uma função do Amazon Simple Queue Service (Amazon SQS). AWS Lambda Ao receber o status de conclusão, chame uma operação Get, como a GetDocumentTextDetection para obter os resultados da solicitação.
Por padrão, os resultados das chamadas assíncronas são criptografados e armazenados por 7 dias em um bucket de propriedade da Amazon Textract, a menos que você especifique um bucket do Amazon S3 usando o argumento de uma operação. OutputConfig Para obter informações sobre como permitir que o Amazon Textract envie documentos criptografados para seu bucket do Amazon S3, consulte. Permissões para configuração de saída
A tabela a seguir mostra as operações Start e Get correspondentes para os diferentes tipos de processamento assíncrono suportados pelo Amazon Textract:
| Tipo de processamento | Iniciar API | Obtenha a API |
|---|---|---|
| Detecção de texto | StartDocumentTextDetection | GetDocumentTextDetection |
| Análise de texto | StartDocumentAnalysis | GetDocumentAnalysis |
| Análise de despesas | StartExpenseAnalysis | GetExpenseAnalysis |
| Análise de empréstimos | StartLendingAnalysis | GetLendingAnalysis, GetLendingAnalysisSummary |
Para ver um exemplo que usa AWS Lambda funções, consulte Processamento de documentos em grande escala com o Amazon Textract
O diagrama a seguir mostra o processo de detecção do texto do documento em uma imagem do documento armazenada em um bucket do Amazon S3. No diagrama, uma fila do Amazon SQS obtém o status de conclusão do tópico Amazon SNS.
O processo exibido pelo diagrama anterior é o mesmo para analisar texto e. invoices/receipts Você começa a analisar o texto ligando StartDocumentAnalysise começa a analisar invoices/receipts ligando. StartExpenseAnalysisVocê obtém os resultados ligando GetDocumentAnalysisou GetExpenseAnalysisrespectivamente.
Iniciando a detecção de texto
Você inicia uma solicitação de detecção de texto do Amazon Textract ligando. StartDocumentTextDetection Veja a seguir um exemplo de uma solicitação JSON que é transmitida por StartDocumentTextDetection.
{ "DocumentLocation": { "S3Object": { "Bucket": "bucket", "Name": "image.pdf" } }, "ClientRequestToken": "DocumentDetectionToken", "NotificationChannel": { "SNSTopicArn": "arn:aws:sns:us-east-1:nnnnnnnnnn:topic", "RoleArn": "arn:aws:iam::nnnnnnnnnn:role/roleTopic" }, "JobTag": "Receipt" }
O parâmetro de entrada DocumentLocation fornece o nome do arquivo do documento e o bucket do Amazon S3 para recuperá-lo. NotificationChannelcontém o Amazon Resource Name (ARN) do tópico do Amazon SNS que o Amazon Textract notifica quando a solicitação de detecção de texto termina. O tópico do Amazon SNS deve estar na mesma região da AWS do endpoint Amazon Textract que você está chamando. NotificationChanneltambém contém o ARN de uma função que permite que o Amazon Textract publique no tópico do Amazon SNS. Você concede permissões de publicação do Amazon Textract para seus tópicos do Amazon SNS criando uma função de serviço do IAM. Para obter mais informações, consulte Configurando o Amazon Textract para operações assíncronas.
Você também pode especificar um parâmetro de entrada opcionalJobTag,, que permite identificar o trabalho, ou grupos de trabalhos, no status de conclusão publicado no tópico do Amazon SNS. Por exemplo, você pode usar JobTag para identificar o tipo de documento que está sendo processado, como um formulário fiscal ou recibo.
Para evitar a duplicação acidental de trabalhos de análise, você pode opcionalmente fornecer um token de idempotência, ClientRequestToken. Se você fornecer um valor paraClientRequestToken, a Start operação retornará o mesmo JobId para várias chamadas idênticas à Start operação, comoStartDocumentTextDetection. Um token ClientRequestToken tem uma vida útil de 7 dias. Depois de 7 dias, você pode reutilizá-lo. Se você reutilizar o token durante a vida útil, o seguinte acontecerá:
-
Se você reutilizar o token com a mesma operação
Starte os mesmos parâmetros de entrada, o mesmoJobIdserá retornado. O trabalho não é realizado novamente e o Amazon Textract não envia um status de conclusão para o tópico registrado do Amazon SNS. -
Se você reutilizar o token com a mesma operação
Starte uma pequena alteração no parâmetro de entrada, você receberá uma exceçãoidempotentparametermismatchexception(código de status HTTP: 400). -
Se você reutilizar o token com uma operação
Startdiferente, a operação será bem-sucedida.
Outro parâmetro opcional disponível éOutputConfig, que permite ajustar onde sua saída será colocada. Por padrão, o Amazon Textract armazenará os resultados internamente e só poderá ser acessado pelas operações da API Get. Com OutputConfig ativado, você pode definir o nome do bucket para o qual a saída será enviada e o prefixo do arquivo dos resultados, onde você pode baixar seus resultados. Além disso, você pode definir o KMSKeyID parâmetro como uma chave gerenciada pelo cliente para criptografar sua saída. Sem esse conjunto de parâmetros, o Amazon Textract criptografará o lado do servidor usando o para o Amazon S3 Chave gerenciada pela AWS
nota
Antes de usar esse parâmetro, verifique se você tem a PutObject permissão para o bucket de saída. Além disso, verifique se você tem as DescribeKey permissões Decrypt, ReEncrypt, GenerateDataKey, e para a AWS KMS chave, caso decida usá-la.
A resposta à operação StartDocumentTextDetection é um identificador de trabalho (JobId). Use JobId para rastrear solicitações e obter os resultados da análise depois que o Amazon Textract publicar o status de conclusão no tópico do Amazon SNS. Este é um exemplo:
{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}
Se você iniciar muitos trabalhos simultaneamente, ligue para StartDocumentTextDetection gerar uma LimitExceededException exceção (código de status HTTP: 400) até que o número de trabalhos em execução simultânea esteja abaixo do limite de serviços do Amazon Textract.
Se você achar que LimitExceededException as exceções surgem com picos de atividade, considere usar uma fila do Amazon SQS para gerenciar as solicitações recebidas. Entre em contato com o AWS
Support se você descobrir que seu número médio de solicitações simultâneas não pode ser gerenciado por uma fila do Amazon SQS e você ainda está recebendo exceções. LimitExceededException
Obter o status de conclusão de uma solicitação de análise do Amazon Textract
O Amazon Textract envia uma notificação de conclusão da análise para o tópico registrado do Amazon SNS. A notificação inclui o identificador do trabalho e o status de conclusão da operação em uma string JSON. Uma solicitação de detecção de texto bem-sucedida tem um SUCCEEDED status. Por exemplo, o resultado a seguir mostra o processamento bem-sucedido de um trabalho de detecção de texto.
{ "JobId": "642492aea78a86a40665555dc375ee97bc963f342b29cd05030f19bd8fd1bc5f", "Status": "SUCCEEDED", "API": "StartDocumentTextDetection", "JobTag": "Receipt", "Timestamp": 1543599965969, "DocumentLocation": { "S3ObjectName": "document", "S3Bucket": "bucket" } }
Para obter mais informações, consulte Notificação de resultados do Amazon Textract.
Para obter as informações de status publicadas no tópico do Amazon SNS pelo Amazon Textract, use uma das seguintes opções:
-
AWS Lambda — Você pode assinar uma função AWS Lambda que você escreve em um tópico do Amazon SNS. A função é chamada quando o Amazon Textract notifica o tópico do Amazon SNS de que a solicitação foi concluída. Use uma função Lambda se quiser que o código do lado do servidor processe os resultados de uma solicitação de detecção de texto. Por exemplo, talvez você queira usar o código do lado do servidor para anotar a imagem ou criar um relatório sobre o texto detectado antes de devolver as informações a um aplicativo cliente.
-
Amazon SQS — Você pode inscrever uma fila do Amazon SQS em um tópico do Amazon SNS. Em seguida, você pesquisa a fila do Amazon SQS para recuperar o status de conclusão publicado pelo Amazon Textract quando uma solicitação de detecção de texto é concluída. Para obter mais informações, consulte Detectando ou analisando texto em um documento de várias páginas. Use uma fila do Amazon SQS se quiser chamar as operações do Amazon Textract somente a partir de um aplicativo cliente.
Importante
Não recomendamos obter o status de conclusão da solicitação chamando repetidamente a operação do Amazon Textract. Get Isso ocorre porque o Amazon Textract acelera a Get operação se muitas solicitações forem feitas. Se você estiver processando vários documentos ao mesmo tempo, é mais simples e eficiente monitorar uma fila do SQS para a notificação de conclusão do que consultar o Amazon Textract para saber o status de cada trabalho individualmente.
Se você configurou sua conta para receber uma notificação de resultados de um tópico do Amazon Simple Notification Service (Amazon SNS) ou por meio de uma fila do Amazon SQS, você deve garantir que sua conta esteja segura limitando o escopo do acesso do Amazon Textract apenas aos recursos que você está usando. Isso pode ser feito anexando uma política de confiança à suo perfil de serviço do IAM. Para obter informações sobre como fazer isso, consulte Prevenção delegada Cross-service confusa.
Obtendo resultados de detecção de texto do Amazon Textract
Para obter os resultados de uma solicitação de detecção de texto, primeiro certifique-se de que o status de conclusão recuperado do tópico do Amazon SNS seja. SUCCEEDED Em seguida, chame GetDocumentTextDetection, que transmite o valor JobId que é retornado de StartDocumentTextDetection. O JSON solicitado é semelhante ao exemplo a seguir:
{ "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3", "MaxResults": 10, "SortBy": "TIMESTAMP" }
JobIdé o identificador da operação de detecção de texto. Como a detecção de texto pode gerar grandes quantidades de dados, use MaxResults para especificar o número máximo de resultados a serem retornados em uma única Get operação. O valor padrão para MaxResults é 1.000. Se você especificar um valor maior que 1.000, somente 1.000 resultados serão retornados. Se a operação não retornar todos os resultados, um token de paginação para a próxima página será retornado. Para obter a próxima página de resultados, especifique o token no NextToken parâmetro.
nota
Os resultados podem ser recuperados somente até 7 dias do tempo de inicialização do trabalho.
A resposta da GetDocumentTextDetection operação JSON é semelhante à seguinte. O número total de páginas detectadas é retornado emDocumentMetadata. O texto detectado é retornado na Blocks matriz. Para obter informações sobre Block objetos, consulteObjetos de resposta para detecção de texto e análise de documentos.
{ "DocumentMetadata": { "Pages": 1 }, "JobStatus": "SUCCEEDED", "Blocks": [ { "BlockType": "PAGE", "Geometry": { "BoundingBox": { "Width": 1.0, "Height": 1.0, "Left": 0.0, "Top": 0.0 }, "Polygon": [ { "X": 0.0, "Y": 0.0 }, { "X": 1.0, "Y": 0.0 }, { "X": 1.0, "Y": 1.0 }, { "X": 0.0, "Y": 1.0 } ] }, "Id": "64533157-c47e-401a-930e-7ca1bb3ac3fa", "Relationships": [ { "Type": "CHILD", "Ids": [ "4297834d-dcb1-413b-8908-3b96866ebbb5", "1d85ba24-2877-4d09-b8b2-393833d769e9", "193e9c47-fd87-475a-ba09-3fda210d8784", "bd8aeb62-961b-4b47-b78a-e4ed9eeecd0f" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 53.301639556884766, "Text": "ellooworio", "Geometry": { "BoundingBox": { "Width": 0.9999999403953552, "Height": 0.5365243554115295, "Left": 0.0, "Top": 0.46347561478614807 }, "Polygon": [ { "X": 0.0, "Y": 0.46347561478614807 }, { "X": 0.9999999403953552, "Y": 0.46347561478614807 }, { "X": 0.9999999403953552, "Y": 1.0 }, { "X": 0.0, "Y": 1.0 } ] }, "Id": "4297834d-dcb1-413b-8908-3b96866ebbb5", "Relationships": [ { "Type": "CHILD", "Ids": [ "170c3eb9-5155-4bec-8c44-173bba537e70" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 89.15632629394531, "Text": "He llo,", "Geometry": { "BoundingBox": { "Width": 0.33642634749412537, "Height": 0.49159330129623413, "Left": 0.13885067403316498, "Top": 0.17169663310050964 }, "Polygon": [ { "X": 0.13885067403316498, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.6632899641990662 }, { "X": 0.13885067403316498, "Y": 0.6632899641990662 } ] }, "Id": "1d85ba24-2877-4d09-b8b2-393833d769e9", "Relationships": [ { "Type": "CHILD", "Ids": [ "516ae823-3bab-4f9a-9d74-ad7150d128ab", "6bcf4ea8-bbe8-4686-91be-b98dd63bc6a6" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 82.44834899902344, "Text": "worlo", "Geometry": { "BoundingBox": { "Width": 0.33182239532470703, "Height": 0.3766750991344452, "Left": 0.5091826915740967, "Top": 0.23131252825260162 }, "Polygon": [ { "X": 0.5091826915740967, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.607987642288208 }, { "X": 0.5091826915740967, "Y": 0.607987642288208 } ] }, "Id": "193e9c47-fd87-475a-ba09-3fda210d8784", "Relationships": [ { "Type": "CHILD", "Ids": [ "ed135c3b-35dd-4085-8f00-26aedab0125f" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 88.50325775146484, "Text": "world", "Geometry": { "BoundingBox": { "Width": 0.35004907846450806, "Height": 0.19635874032974243, "Left": 0.527581512928009, "Top": 0.30100569128990173 }, "Polygon": [ { "X": 0.527581512928009, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.49736443161964417 }, { "X": 0.527581512928009, "Y": 0.49736443161964417 } ] }, "Id": "bd8aeb62-961b-4b47-b78a-e4ed9eeecd0f", "Relationships": [ { "Type": "CHILD", "Ids": [ "9e28834d-798e-4a62-8862-a837dfd895a6" ] } ], "Page": 1 }, { "BlockType": "WORD", "Confidence": 53.301639556884766, "Text": "ellooworio", "Geometry": { "BoundingBox": { "Width": 1.0, "Height": 0.5365243554115295, "Left": 0.0, "Top": 0.46347561478614807 }, "Polygon": [ { "X": 0.0, "Y": 0.46347561478614807 }, { "X": 1.0, "Y": 0.46347561478614807 }, { "X": 1.0, "Y": 1.0 }, { "X": 0.0, "Y": 1.0 } ] }, "Id": "170c3eb9-5155-4bec-8c44-173bba537e70", "Page": 1 }, { "BlockType": "WORD", "Confidence": 88.46246337890625, "Text": "He", "Geometry": { "BoundingBox": { "Width": 0.15350718796253204, "Height": 0.29955607652664185, "Left": 0.13885067403316498, "Top": 0.21856294572353363 }, "Polygon": [ { "X": 0.13885067403316498, "Y": 0.21856294572353363 }, { "X": 0.292357861995697, "Y": 0.21856294572353363 }, { "X": 0.292357861995697, "Y": 0.5181190371513367 }, { "X": 0.13885067403316498, "Y": 0.5181190371513367 } ] }, "Id": "516ae823-3bab-4f9a-9d74-ad7150d128ab", "Page": 1 }, { "BlockType": "WORD", "Confidence": 89.8501968383789, "Text": "llo,", "Geometry": { "BoundingBox": { "Width": 0.17724157869815826, "Height": 0.49159327149391174, "Left": 0.2980354428291321, "Top": 0.17169663310050964 }, "Polygon": [ { "X": 0.2980354428291321, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.6632899045944214 }, { "X": 0.2980354428291321, "Y": 0.6632899045944214 } ] }, "Id": "6bcf4ea8-bbe8-4686-91be-b98dd63bc6a6", "Page": 1 }, { "BlockType": "WORD", "Confidence": 82.44834899902344, "Text": "worlo", "Geometry": { "BoundingBox": { "Width": 0.33182239532470703, "Height": 0.3766750991344452, "Left": 0.5091826915740967, "Top": 0.23131252825260162 }, "Polygon": [ { "X": 0.5091826915740967, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.607987642288208 }, { "X": 0.5091826915740967, "Y": 0.607987642288208 } ] }, "Id": "ed135c3b-35dd-4085-8f00-26aedab0125f", "Page": 1 }, { "BlockType": "WORD", "Confidence": 88.50325775146484, "Text": "world", "Geometry": { "BoundingBox": { "Width": 0.35004907846450806, "Height": 0.19635874032974243, "Left": 0.527581512928009, "Top": 0.30100569128990173 }, "Polygon": [ { "X": 0.527581512928009, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.49736443161964417 }, { "X": 0.527581512928009, "Y": 0.49736443161964417 } ] }, "Id": "9e28834d-798e-4a62-8862-a837dfd895a6", "Page": 1 } ] }
Usando um adaptador
Com o Amazon Textract, você pode usar um adaptador ao chamar a StartDocumentAnalysisoperação. Para usar um adaptador, você deve primeiro criar e treinar um adaptador usando o console do Amazon Textract. Para aplicar seu adaptador, forneça seu ID ao chamar a operação StartDocumentAnalysisda API. Ao chamar a StartDocumentAnalysisoperação, você pode usar até um adaptador por página.
"AdaptersConfig": { "Adapters": [ { "AdapterId": "2e9bf1c4aa31", "Version": "1", "Pages": [ "1" ] } ] }