一些描述
项目描述
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种方式
- 在创建TextractStepFunctionsStartExecution时传入“EXPENSE”或“IDENTITY”作为默认分类,这将然后将默认值从Detect API更改为Expense或Identity。
- 上传一个清单文件
清单文件的格式定义如下
{
"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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 30fe7ed8bf584baf70573c6c87609244f82fca22f25bc540aedc935d224a17b0 |
|
MD5 | 66a10c53a5e1bb6c860b863ed7512e5e |
|
BLAKE2b-256 | 436e7d5e70eff22f6ebc7e178fe2940f21eefa8182585d98363b9aa103b95c9e |
schadem_cdk_construct_sfn_test-0.0.14-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | cd8b11e6c9a1f88560ce13cf4b36c681ceffb7094079c292c29050444b9c5962 |
|
MD5 | 48979368b4c3b48ef74ea17ab0db209c |
|
BLAKE2b-256 | 3e713a0a7695bc5df267c9f692e2c86eec8fa25ba4f83616359196654ebbb0b3 |