1

大家好,我已经使用 java SDK 从 AWS texttract 异步调用中提取了文档元数据,但是元数据被分成多个块,而且非常庞大。

如何使用 java 代码分别提取置信度得分、值及其字段名称我想提取如下结果:


[{
  "Field" : "FirstName",
  "Value" : "XXXXX",
  "confidence Score" : "98.88"
},
{
  "Field" : "LastName",
  "Value" : "XXXXX",
  "confidence Score" : "65.98"
}]

谁能建议如何从 aws texttract文档元数据中提取字段、值及其置信度分数?

有人对此有任何想法吗?

4

2 回答 2

1

AWS 提供了一个在 python 中映射键值对的示例。您可以使用此代码来理解逻辑并在 JAVA 中编写自己的代码。

来源:https ://docs.aws.amazon.com/textract/latest/dg/examples-extract-kvp.html

于 2020-01-12T14:12:52.417 回答
0

我也刚刚开始使用 Java 中的 AWS Textract,哇,真是一个很棒的工具!如果您想看一下,我已在此链接的答案中包含代码:)

它提取键和值。我建议您创建一个具有键、值和置信度分数的模型,然后为每个键值对创建一个对象

    public static ArrayList<KVPair> getKVObjects(List<Block> keyMap, List<Block> valueMap, List<Block> blockMap ) {
    ArrayList<KVPair> labelValues = new ArrayList<>();

    Block value_block;


    for (Block key_block : keyMap) {

        value_block = findValueBlock(key_block, valueMap);
        String key = getText(key_block, blockMap);
        Float top = value_block.getGeometry().getBoundingBox().getTop();
        Float left = value_block.getGeometry().getBoundingBox().getLeft();
        Float confidenceScore = value_block.getConfidence();


        Optional<KVPair> label= (labelValues.stream().filter(x-> x.getLabel().equals(key)).findFirst());

        Property property = new Property();
        property.setValue(getText(value_block, blockMap));
        property.setLocationLeft(left);
        property.setLocationTop(top);
        property.setConfidenceScore(confidenceScore);
        if(label.isPresent()){
            label.get().setProperties(property);
        }else{
            KVPair KVPair = new KVPair();
            KVPair.setLabel(key);
            KVPair.setProperties(property);
            labelValues.add(KVPair);
     }



    }

    return labelValues;

}

AWS-Textract-Key-Value-Pair Java - 线程“主”java.lang.NullPointerException

于 2020-06-23T07:59:09.520 回答