Search in sources :

Example 1 with BlockType

use of com.amazonaws.services.textract.model.BlockType in project amplify-android by aws-amplify.

the class AWSTextractService method processTextractBlocks.

private IdentifyDocumentTextResult processTextractBlocks(List<Block> blocks) {
    StringBuilder fullTextBuilder = new StringBuilder();
    List<String> rawLineText = new ArrayList<>();
    List<IdentifiedText> words = new ArrayList<>();
    List<IdentifiedText> lines = new ArrayList<>();
    List<Selection> selections = new ArrayList<>();
    List<Table> tables = new ArrayList<>();
    List<BoundedKeyValue> keyValues = new ArrayList<>();
    List<Block> tableBlocks = new ArrayList<>();
    List<Block> keyValueBlocks = new ArrayList<>();
    Map<String, Block> blockMap = new HashMap<>();
    for (Block block : blocks) {
        // This is the map that will be used for traversing the graph.
        // Each block can contain "relationships", which point to other blocks by ID.
        String id = block.getId();
        blockMap.put(id, block);
        BlockType type = BlockType.fromValue(block.getBlockType());
        switch(type) {
            case LINE:
                rawLineText.add(block.getText());
                lines.add(TextractResultTransformers.fetchIdentifiedText(block));
                continue;
            case WORD:
                fullTextBuilder.append(block.getText()).append(" ");
                words.add(TextractResultTransformers.fetchIdentifiedText(block));
                continue;
            case SELECTION_ELEMENT:
                selections.add(TextractResultTransformers.fetchSelection(block));
                continue;
            case TABLE:
                tableBlocks.add(block);
                continue;
            case KEY_VALUE_SET:
                keyValueBlocks.add(block);
                continue;
            default:
        }
    }
    for (Block tableBlock : tableBlocks) {
        Table table = TextractResultTransformers.fetchTable(tableBlock, blockMap);
        if (table != null) {
            tables.add(table);
        }
    }
    for (Block keyValueBlock : keyValueBlocks) {
        BoundedKeyValue keyValue = TextractResultTransformers.fetchKeyValue(keyValueBlock, blockMap);
        if (keyValue != null) {
            keyValues.add(keyValue);
        }
    }
    return IdentifyDocumentTextResult.builder().fullText(fullTextBuilder.toString().trim()).rawLineText(rawLineText).lines(lines).words(words).selections(selections).tables(tables).keyValues(keyValues).build();
}
Also used : BoundedKeyValue(com.amplifyframework.predictions.models.BoundedKeyValue) IdentifiedText(com.amplifyframework.predictions.models.IdentifiedText) Table(com.amplifyframework.predictions.models.Table) HashMap(java.util.HashMap) Selection(com.amplifyframework.predictions.models.Selection) ArrayList(java.util.ArrayList) BlockType(com.amazonaws.services.textract.model.BlockType) Block(com.amazonaws.services.textract.model.Block)

Aggregations

Block (com.amazonaws.services.textract.model.Block)1 BlockType (com.amazonaws.services.textract.model.BlockType)1 BoundedKeyValue (com.amplifyframework.predictions.models.BoundedKeyValue)1 IdentifiedText (com.amplifyframework.predictions.models.IdentifiedText)1 Selection (com.amplifyframework.predictions.models.Selection)1 Table (com.amplifyframework.predictions.models.Table)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1