跳转到主要内容

amazon-textract-idp-cdk-constructs

项目描述

Amazon Textract IDP CDK Constructs

---

Stability: Experimental

所有类均在积极开发中,并且在未来任何版本中可能进行不向后兼容的更改或删除。这些不受语义版本控制模型约束。这意味着虽然您可以使用它们,但在升级到此包的新版本时,您可能需要更新源代码。


上下文

此CDK构造可以用作Step Function任务,并异步调用Textract的DetectText和AnalyzeDocument API。

有关使用示例,请参阅Amazon Textact IDP CDK Stack Samples

输入

期望在'Payload'处有一个Manifest JSON。Manifest描述:https://pypi.ac.cn/project/schadem-tidp-manifest/

Python中调用示例

        textract_async_task = t_async.TextractGenericAsyncSfnTask(
            self,
            "textract-async-task",
            s3_output_bucket=s3_output_bucket,
            s3_temp_output_prefix=s3_temp_output_prefix,
            integration_pattern=sfn.IntegrationPattern.WAIT_FOR_TASK_TOKEN,
            lambda_log_level="DEBUG",
            timeout=Duration.hours(24),
            input=sfn.TaskInput.from_object({
                "Token":
                sfn.JsonPath.task_token,
                "ExecutionId":
                sfn.JsonPath.string_at('$$.Execution.Id'),
                "Payload":
                sfn.JsonPath.entire_payload,
            }),
            result_path="$.textract_result")

查询参数

示例

            input=sfn.TaskInput.from_object({
                "Token":
                sfn.JsonPath.task_token,
                "ExecutionId":
                sfn.JsonPath.string_at('$$.Execution.Id'),
                "Payload":
                sfn.JsonPath.entire_payload,
                "Query": [
                           {
                                'Text': 'string',
                                'Alias': 'string',
                                'Pages': [
                                    'string',
                                ]
                            },
                                {
                                "Text": "What is the name of the realestate company",
                                "Alias": "APP_COMPANY_NAME"
                            },
                            {
                                "Text": "What is the name of the applicant or the prospective tenant",
                                "Alias": "APP_APPLICANT_NAME"
                            },
                ]
            }),

文档:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/textract/client/start_document_analysis.html

为了将查询参数添加到Manifest JSON中,我们将利用'convert_manifest_queries_config_to_caller'。它将查询对象列表(如类型提示List[tm.Query]所示)转换为QueriesConfig对象(如返回类型tc.QueriesConfig所示)。

该函数期望输入一个查询对象列表。每个查询对象应具有以下属性

  • text(必需)
  • alias(可选)
  • pages(可选)

该函数创建一个新的QueriesConfig对象。如果输入列表不为空,它将创建一个列表推导式,为输入列表中的每个查询对象生成一个新的查询对象,保留相同的text、alias和pages值。如果输入列表为空,则仅创建一个具有空queries列表的QueriesConfig对象。

输出

将"TextractTempOutputJsonPath"添加到Step Function ResultPath。在此位置,Textract输出存储为单个JSON文件。使用CDK构造schadem-cdk-construct-sfn-textract-output-config-to-json将它们合并为一个JSON文件。

示例(ResultPath = textract_result,如上配置)

"textract_result": {
    "TextractTempOutputJsonPath": "s3://schademcdkstackpaystuban-schademcdkidpstackpaystu-bt0j5wq0zftu/textract-temp-output/c6e141e8f4e93f68321c17dcbc6bf7291d0c8cdaeb4869758604c387ce91a480"
  }

Spacy分类

期望在目录根目录处有一个Spacy textcat模型。调用脚本()来复制一个公共的,用于分类Paystub和W2。

aws s3 cp s3://amazon-textract-public-content/constructs/en_textcat_demo-0.0.0.tar.gz .

如何使用Workmail集成

为了演示此功能,我使用了以下架构,一旦传入邮件被投递到您的Amazon Workmail收件箱,并且如果模式匹配,它将调用规则操作,在这种情况下是调用lambda函数。您可以使用在'code'文件夹中提供的示例lambda Python(3.6)代码。

architecture

先决条件

  1. 由于我使用Python 3.6作为我的Lambda函数运行时,因此需要对Python 3版本有一定的了解。

步骤

  1. 首先,根据'入门'文档中提到的步骤设置一个Amazon Workmail站点,设置一个组织并创建用户访问。完成上述设置过程后,您将能够访问https://您的组织.awsapps.com/mail网络邮件地址,并可以使用您创建的用户名/密码登录以访问您的电子邮件。
  2. 现在我们将创建一个lambda函数,该函数将在传入邮件到达收件箱且邮件流规则模式匹配时被调用(更多内容请参阅以下步骤)。您可以使用在'code'文件夹中提供的示例lambda Python(3.6)代码(lambda_function.py)进行此操作。它将获取传入邮件的消息正文,然后将其正确解析以获取消息正文作为文本。一旦得到文本,您就可以对其进行各种操作。
  3. 入站电子邮件流规则,也称为规则操作,会自动应用于发送给Amazon WorkMail组织内部任何人的所有电子邮件。这与个人邮箱的电子邮件规则不同。现在,我们将设置电子邮件流规则来处理基于电子邮件地址或域的电子邮件流。电子邮件流规则基于发送者和接收者的电子邮件地址或域。

要创建电子邮件流规则,我们需要指定一个在匹配指定模式时应用于电子邮件的规则操作。请按照以下文档链接这里创建电子邮件流规则,该规则为您在上述第1步中创建的组织创建。您必须为您的规则选择“操作=运行Lambda”。以下是我创建的电子邮件流规则:

Email Flow Rule

现在,您可以按照以下文档链接这里创建需要满足以调用规则操作的模式/(在这种情况下,它将调用我们的Lambda函数)。对于这个示例代码功能,我已将我的电子邮件地址作为“来源”中的模式,将我的域作为“目的地”中的模式。因此,在这种情况下,只有在入站电子邮件发送者是我的电子邮件地址且目的地是我的域时,Lambda函数才会被调用。但是,您可以按需设置模式。以下屏幕截图显示了我的模式:

Origin pattern

Destnation pattern

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

构建分发

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面