【问题标题】:AWS textract with hand-written checkboxes带有手写复选框的 AWS 文本
【发布时间】:2020-03-12 03:50:02
【问题描述】:

我有 1000 份调查表需要扫描,然后上传到我的 C# 系统,以便提取数据并将其输入数据库。调查混合了手写的 1) 文本框和 2) 复选框。我目前正在使用 Azure Read Api 来提取应该可以正常工作的手写文本,例如下面的问题 #4 返回“Python”和“编码”。

所以我的问题;任何 AWS Textract 都可以让我提取已标记复选框的数据吗?例如请参阅下面的问题 #1 - 我需要一个字符串回复说“不同意”,这可以通过任何 AWS Textract API 实现吗?

不幸的是,Azure Read API 和 Google Vision OCR 不提供此功能,因此如果 AWS Textract 无法帮助我解决此问题,我将不得不手动执行一些操作,例如检查像素颜色的变化以检测勾选的复选框。

调查类型:

【问题讨论】:

    标签: c# amazon-web-services google-vision azure-cognitive-services amazon-textract


    【解决方案1】:

    是的,Amazon Textract 支持检测各种字段输入,例如复选框和单选按钮。您可以阅读有关详细信息 in the docs herehere 的更多信息。

    我编写了一个快速脚本,使用以下代码为您的图像调用 Textract,该代码正确识别了不同表单字段的键和值,此外还识别了给定字段是否被选中/取消选中。

    # python 3
    import boto3
    
    # instantiate client
    textract = boto3.client('textract')
    
    # read image bytes
    with open("textract-test.png", "rb") as image:
      f = image.read()
      image_data = bytearray(f)
      print(image_data[0])
    
    # call textract endpoint
    textract.analyze_document(Document={'Bytes': image_data}, FeatureTypes=['FORMS'])
    

    结果输出将是一系列“块”,代表文本或表单输入的各个块。解析这个 JSON,我们可以找到与选中的复选框对应的块,如下所示:

    "Id": "0abb6f4e-4512-4581-b261-a45f2426973f",
          "SelectionStatus": "SELECTED" // value of interest. Alternatively, "NOT_SELECTED"
        },
        {
          "BlockType": "SELECTION_ELEMENT",
          "Confidence": 54.00064468383789,
          "Geometry": {
            "BoundingBox": {
              "Width": 0.030619779601693153,
              "Height": 0.024501724168658257,
              "Left": 0.4210366904735565,
              "Top": 0.439885675907135
            },
            "Polygon": [
              {
                "X": 0.4210366904735565,
                "Y": 0.439885675907135
              },
              {
                "X": 0.4516564607620239,
                "Y": 0.439885675907135
              },
              {
                "X": 0.4516564607620239,
                "Y": 0.4643873870372772
              },
              {
                "X": 0.4210366904735565,
                "Y": 0.4643873870372772
              }
            ]
          },
    

    很抱歉没有在 C# 中创建示例,但您可以通过 CLIAWS .NET SDK 使用 Textract 以获得类似的效果。


    注意:如果您只是想了解一下 Amazon Textract 将为您的数据返回什么响应,您可以导航到 AWS 管理控制台中的 Amazon Textract 页面并使用图像在那里测试应用程序。您可以使用 GUI 来可视化一些结果,或者下载完整的 API 响应。

    【讨论】:

    • 非常感谢您的快速响应!我将考虑尝试获得一个在 c# 中工作的示例,以查看结果的准确度。关于手写; Textract 是否也可以从我的盒子中提取手写文本数据(例如上面问题 4 中的“Python”和“编码”)?这也让我免于使用 Azure Read API
    • 是的!它都可以作为分析文档方法下的结果。
    • 太棒了!非常感谢尼克。看起来 AWS 再次击败了 Azure 和 Google! :)
    • @darego101 Textract API 绝对可用:使用它的两种选择是运行subprocess call in C#AWS CLI,或者直接使用AWS Transcribe .NET SDK
    • @darego101 您是否尝试过安装awscli 并使用C# 的System.Diagnostics.Process.Start() 调用它?我在上一条评论中发布了对相关 SO 问题以及 start-transcription-job 命令的引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多