跳转到主要内容

一些描述

项目描述

TL;DR

此构造允许作为AWS Step Function工作流的一部分调用Amazon Textract。仍在开发中,因此接口可能(很可能)会更改。但在我看来是一个很好的起点,并愿意听取反馈。

使用https://projen.io/构建 - GitHub在:https://github.com/projen/projen

使用方法

目前作为NPM包部署,用于TypeScript,以及作为PyPI包用于基于Python的CDK堆栈。

Step Function流程期望包含要处理文件位置信息的消息

{
  "s3_bucket": "<somebucket>",
  "s3_key": "someprefix/someobject.somesuffix"
}

对象可以是支持文档类型(PDF,PNG,JPEG,TIFF)的默认流程,该流程调用[https://docs.aws.amazon.com/textract/latest/dg/API_Operations.html](DetectDocumentText)以处理单页文档或https://docs.aws.amazon.com/textract/latest/dg/API_Operations.html以处理多页文档。

输出格式如下

{
  "TextractOutputJsonPath": "s3://somebucket/someoutputprefix/randomuuid/inputfilename.json"
}

并包括来自Textract的完整JSON返回值。它已将分页结果合并到一个JSON文件中。

要调用其他功能,如表单、表格、查询、分析ID或分析费用,有2种方式

  1. 在创建TextractStepFunctionsStartExecution时传入“EXPENSE”或“IDENTITY”作为默认分类,这将然后将默认值从Detect API更改为Expense或Identity。
  2. 上传一个清单文件

清单文件的格式定义如下

{
    "S3Path": "s3://sdx-textract-us-east-1/employeeapp20210510.png",
    "TextractFeatures": [
        "FORMS",
        "TABLES",
        "QUERIES"
    ],
    "QueriesConfig": [{
        "Text": "What is the applicant full name?",
        "Alias": "FULL_NAME",
        "Pages": ["*"]
    }],
    "Classification":"SOMECLASSIFICATION"
}

至少需要一个TextractFeature和一个S3Path,用于AnalyzeDocument API。要执行Expense API,分类必须设置为“EXPENSE”。

对于身份验证API,需要以下格式:

{
    "DocumentPages": ["s3://sdx-textract-us-east-1/driverlicense.png"],
    "Classification":"IDENTITY"
}

对于身份,可以传递2页文档。

TypeScript 示例

使用 Textract 构建的 GitHub 项目示例:https://github.com/schadem/schadem-cdk-stack-test

使用时,将其作为依赖项添加

  "dependencies": {
    "schadem-cdk-construct-sfn-test": "0.0.12"
  },
const textract_task = new tstep.TextractStepFunctionsStartExecution(this, 'textract-task', {
    s3OutputBucket: documentBucket.bucketName,
    s3OutputPrefix: textractS3OutputPrefix,
    s3TempOutputPrefix: textractTemporaryS3OutputPrefix,
});
const workflow_chain = sfn.Chain.start(textract_task)
const stateMachine = new sfn.StateMachine(this, 'IDPWorkflow', {
    definition: workflow_chain,
    timeout: Duration.minutes(240),
});

Python 示例

使用 Textract 构建的 Stack 的 GitHub 项目示例:https://github.com/schadem/schadem-cdk-idp-stack-python-sample

包名:schadem-cdk-construct-sfn-test

textract_task = sfctc.TextractStepFunctionsStartExecution(
    self,
    "textract-task",
    s3_output_bucket=document_bucket.bucket_name,
    s3_temp_output_prefix=s3_temp_prefix,
    s3_output_prefix=s3_output_prefix)
workflow_chain = sfn.Chain.start(textract_task)

state_machine = sfn.StateMachine(self,
                                'IDPWorkflowPython',
                                definition=workflow_chain)

该构建实现与 sfn.TaskStateBase 类似于 StepFunctionsStartExecution,因此用作 Step Function 工作流的一部分。请参阅堆栈中的使用示例。

开发

目前基本上只需做以下操作

npx projen build

来生成包。

当将/合并到 GitHub 的主分支时,将启动一个管道,该管道增加版本号并将包部署到 PyPI 和 NPM(目前可以添加 nugen 和 maven)。

我在堆栈中的脚本中引用的包 - 目前硬编码了包在我本地系统上的位置。显然,当我们将包推出去时,这将发生变化。

项目详情


下载文件

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

源分布

schadem-cdk-construct-sfn-test-0.0.14.tar.gz (70.9 kB 查看散列)

上传时间

构建分布

schadem_cdk_construct_sfn_test-0.0.14-py3-none-any.whl (69.0 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面