use of com.amplifyframework.predictions.models.Selection in project amplify-android by aws-amplify.
the class TextractResultTransformersTest method testSelectionConversion.
/**
* Tests that the individual block from Textract is properly
* converted to an Amplify selection item.
*/
@Test
public void testSelectionConversion() {
Block block;
Selection selection;
// Assert that SELECTED sets it to selected
block = new Block().withSelectionStatus(SelectionStatus.SELECTED).withGeometry(randomGeometry());
selection = TextractResultTransformers.fetchSelection(block);
assertTrue(selection.isSelected());
// Assert that NOT_SELECTED sets it to not selected
block = new Block().withSelectionStatus(SelectionStatus.NOT_SELECTED).withGeometry(randomGeometry());
selection = TextractResultTransformers.fetchSelection(block);
assertFalse(selection.isSelected());
}
use of com.amplifyframework.predictions.models.Selection 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();
}
Aggregations