当前位置: 首页 > 知识库问答 >
问题:

使用AWS文本将多页表解析为CSV文件

夏侯瑞
2023-03-14

我完全是一个AWS新手,试图用AWS Textract将多页文件表解析为CSV文件。在本页中,我尝试使用AWS的示例,但是当我们处理多页文件时,response=client。分析_文档(document={'Bytes':Bytes_test},FeatureTypes=['TABLES'])中断,因为在这些情况下我们需要异步处理,正如您在这里的文档中看到的那样。正确的调用函数应该是client。启动_document _analysis并在运行后使用客户端检索文件。获取文档分析(JobId)

所以,我用这个逻辑修改了他们的例子,而不是使用client.analyze_document函数,修改后的代码看起来像这样:

client = boto3.client('textract')

response = client.start_document_analysis(Document={'Bytes': bytes_test}, FeatureTypes=['TABLES'])

jobid=response['JobId']

jobstatus="IN_PROGRESS"
while jobstatus=="IN_PROGRESS":
    response=client.get_document_analysis(JobId=jobid)
    jobstatus=response['JobStatus']
    if jobstatus == "IN_PROGRESS": print("IN_PROGRESS")
    time.sleep(5)

但是当我运行时,我得到以下错误:

Traceback (most recent call last):
  File "/Users/santanna_santanna/PycharmProjects/KlooksExplore/PDFWork/textract_python_table_parser.py", line 125, in <module>
    main(file_name)
  File "/Users/santanna_santanna/PycharmProjects/KlooksExplore/PDFWork/textract_python_table_parser.py", line 112, in main
    table_csv = get_table_csv_results(file_name)
  File "/Users/santanna_santanna/PycharmProjects/KlooksExplore/PDFWork/textract_python_table_parser.py", line 62, in get_table_csv_results
    response = client.start_document_analysis(Document={'Bytes': bytes_test}, FeatureTypes=['TABLES'])
  File "/Users/santanna_santanna/anaconda3/lib/python3.6/site-packages/botocore/client.py", line 316, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/Users/santanna_santanna/anaconda3/lib/python3.6/site-packages/botocore/client.py", line 608, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/Users/santanna_santanna/anaconda3/lib/python3.6/site-packages/botocore/client.py", line 656, in _convert_to_request_dict
    api_params, operation_model)
  File "/Users/santanna_santanna/anaconda3/lib/python3.6/site-packages/botocore/validate.py", line 297, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Missing required parameter in input: "DocumentLocation"
Unknown parameter in input: "Document", must be one of: DocumentLocation, FeatureTypes, ClientRequestToken, JobTag, NotificationChannel

这是因为调用start_document_analysis的标准方法是将S3文件与这种Syntax一起使用:

    response = client.start_document_analysis(
        DocumentLocation={
            'S3Object': {
                'Bucket': s3BucketName,
                'Name': documentName
            }
        },
        FeatureTypes=["TABLES"])

然而,如果我这样做,我将打破AWS示例中提出的命令行逻辑:

python textract\u python\u table\u解析器。py文件。pdf

问题是:如何调整AWS示例以能够处理多页文件?

共有1个答案

孔宇
2023-03-14

考虑使用两种不同的lambda。一个用于调用textract,另一个用于处理结果。

请阅读这份文件

https://aws.amazon.com/blogs/compute/getting-started-with-rpa-using-aws-step-functions-and-amazon-textract/

检查一下这个仓库

https://github.com/aws-samples/aws-step-functions-rpa

要处理JSON,您可以将此示例用作参考https://github.com/aws-samples/amazon-textract-response-parser或直接将其用作库。

python -m pip install amazon-textract-response-parser
 类似资料:
  • 问题内容: 我有一系列使用Beautiful Soup解析为单个文本文件的HTML文件。HTML文件的格式设置为使其输出始终为文本文件中的三行,因此输出将类似于: 但这很容易 换句话说,HTML文件的内容在每个文件中并不是真正的标准,但是它们始终会产生三行。 因此,我想知道如果我想从Beautiful Soup生成的文本文件然后将其解析为带有以下内容的列的CSV文件(使用上面的示例),应该从哪里开

  • 我必须解析一个csv文件,并将其内容转储到mysql表中。 第一输出 在第二个输出中,我需要自定义标头水平对齐。例如 对于第二个输出,它可以是我选择的任何一组标题。然后,我可以使用load data infile将这两个输出数据加载到mysql表中。正在寻找awk脚本来实现这一点。如果你还需要什么,请告诉我。德克萨斯州。

  • 问题内容: 使用nodejs,我想解析一个包含10000条记录的.csv文件,并对每一行进行一些操作。我尝试使用http://www.adaltas.com/projects/node- csv 。我无法让它在每一行暂停。这只会读取所有10000条记录。我需要执行以下操作: 逐行读取csv 在每条线上执行耗时的操作 转到下一行 有人可以在这里提出其他建议吗? 问题答案: 好像您需要使用一些基于流的

  • 使用nodejs,我想解析一个包含10000条记录的.csv文件,并对每一行执行一些操作。我尝试使用http://www.adaltas.com/projects/node-csv。我不能让它每排都停下来。这只是读取所有的10000个记录。我需要做到以下几点: 逐行读取csv 对每行执行耗时操作 转到下一行

  • 我读过以下关于csv解析的留档http://gatling.io/docs/2.0.1/session/feeder.html#feeder 我仍然无法捕获以下实现: 如何在Scala中创建变量,代表csv文件中的每一列 如果有两个用户按顺序运行,Gatling如何为这两个用户解析CSV文件?在第一个值被解析后,它会自动查找下一个值吗 我想要达到的目标是: > Gatling读取包含SIM序列号和

  • 问题内容: 假设我有一个包含以下内容的文件: 如何通过PHP解析内容? 问题答案: 只需使用该功能即可解析CSV文件