From c151b4a94babbac679be0e255995d4f3e352eeff Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Tue, 9 May 2023 14:32:53 +0200 Subject: [PATCH] RED-6009 - Document Tree Structure * renamed terminal to leaf --- .../data/mapper/DocumentDataMapper.java | 4 +-- .../data/mapper/DocumentGraphMapper.java | 14 ++++---- .../factory/DocumentGraphFactory.java | 12 +++---- .../document/factory/TableNodeFactory.java | 16 +++++----- .../document/graph/DocumentTree.java | 2 +- .../document/graph/nodes/Document.java | 2 +- .../document/graph/nodes/Footer.java | 8 ++--- .../document/graph/nodes/Header.java | 8 ++--- .../document/graph/nodes/Headline.java | 8 ++--- .../document/graph/nodes/Image.java | 2 +- .../document/graph/nodes/Page.java | 2 +- .../document/graph/nodes/Paragraph.java | 8 ++--- .../document/graph/nodes/Section.java | 2 +- .../document/graph/nodes/SemanticNode.java | 32 +++++++++---------- .../document/graph/nodes/Table.java | 2 +- .../document/graph/nodes/TableCell.java | 10 +++--- 16 files changed, 66 insertions(+), 66 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentDataMapper.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentDataMapper.java index ee9b6307..e1d5f0ca 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentDataMapper.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentDataMapper.java @@ -60,8 +60,8 @@ public class DocumentDataMapper { Long[] atomicTextBlocks; - if (entry.getNode().isTerminal()) { - atomicTextBlocks = toAtomicTextBlockIds(entry.getNode().getTerminalTextBlock()); + if (entry.getNode().isLeaf()) { + atomicTextBlocks = toAtomicTextBlockIds(entry.getNode().getLeafTextBlock()); } else { atomicTextBlocks = new Long[]{}; } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentGraphMapper.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentGraphMapper.java index 74f7fc18..d4449929 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentGraphMapper.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/data/mapper/DocumentGraphMapper.java @@ -82,9 +82,9 @@ public class DocumentGraphMapper { default -> throw new UnsupportedOperationException("Not yet implemented for type " + entryData.getType()); }; - if (node.isTerminal()) { + if (node.isLeaf()) { TextBlock textBlock = toTextBlock(entryData.getAtomicBlocks(), context, node); - node.setTerminalTextBlock(textBlock); + node.setLeafTextBlock(textBlock); } List tocId = Arrays.stream(entryData.getTreeId()).boxed().toList(); node.setTreeId(tocId); @@ -104,7 +104,7 @@ public class DocumentGraphMapper { private Headline buildHeadline(Context context, boolean terminal) { - return Headline.builder().terminal(terminal).documentTree(context.documentTree()).build(); + return Headline.builder().leaf(terminal).documentTree(context.documentTree()).build(); } @@ -128,7 +128,7 @@ public class DocumentGraphMapper { TableCell.TableCellBuilder builder = TableCell.builder(); PropertiesMapper.parseTableCellProperties(properties, builder); - return builder.terminal(terminal).documentTree(context.documentTree()).build(); + return builder.leaf(terminal).documentTree(context.documentTree()).build(); } @@ -142,13 +142,13 @@ public class DocumentGraphMapper { private Footer buildFooter(Context context, boolean terminal) { - return Footer.builder().terminal(terminal).documentTree(context.documentTree()).build(); + return Footer.builder().leaf(terminal).documentTree(context.documentTree()).build(); } private Header buildHeader(Context context, boolean terminal) { - return Header.builder().terminal(terminal).documentTree(context.documentTree()).build(); + return Header.builder().leaf(terminal).documentTree(context.documentTree()).build(); } @@ -162,7 +162,7 @@ public class DocumentGraphMapper { private Paragraph buildParagraph(Context context, boolean terminal) { - return Paragraph.builder().terminal(terminal).documentTree(context.documentTree()).build(); + return Paragraph.builder().leaf(terminal).documentTree(context.documentTree()).build(); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/DocumentGraphFactory.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/DocumentGraphFactory.java index 34a45c20..b7341163 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/DocumentGraphFactory.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/DocumentGraphFactory.java @@ -94,12 +94,12 @@ public class DocumentGraphFactory { if (node instanceof Headline headline) { List tocId = context.documentTree.createNewChildEntryAndReturnId(parentNode.getTreeId(), NodeType.HEADLINE, node); - headline.setTerminalTextBlock(textBlock); + headline.setLeafTextBlock(textBlock); headline.setTreeId(tocId); } if (node instanceof Paragraph paragraph) { List tocId = context.documentTree.createNewChildEntryAndReturnId(parentNode.getTreeId(), NodeType.PARAGRAPH, node); - paragraph.setTerminalTextBlock(textBlock); + paragraph.setLeafTextBlock(textBlock); paragraph.setTreeId(tocId); } } @@ -166,7 +166,7 @@ public class DocumentGraphFactory { page); List tocId = context.getDocumentTree().createNewMainEntryAndReturnId(NodeType.FOOTER, footer); footer.setTreeId(tocId); - footer.setTerminalTextBlock(textBlock); + footer.setLeafTextBlock(textBlock); page.setFooter(footer); } @@ -182,7 +182,7 @@ public class DocumentGraphFactory { page); List tocId = context.getDocumentTree().createNewMainEntryAndReturnId(NodeType.HEADER, header); header.setTreeId(tocId); - header.setTerminalTextBlock(textBlock); + header.setLeafTextBlock(textBlock); page.setHeader(header); } @@ -194,7 +194,7 @@ public class DocumentGraphFactory { AtomicTextBlock textBlock = context.textBlockFactory.emptyTextBlock(footer, context, page); List tocId = context.getDocumentTree().createNewMainEntryAndReturnId(NodeType.FOOTER, footer); footer.setTreeId(tocId); - footer.setTerminalTextBlock(textBlock); + footer.setLeafTextBlock(textBlock); page.setFooter(footer); } @@ -206,7 +206,7 @@ public class DocumentGraphFactory { AtomicTextBlock textBlock = context.textBlockFactory.emptyTextBlock(header, 0, page); List tocId = context.getDocumentTree().createNewMainEntryAndReturnId(NodeType.HEADER, header); header.setTreeId(tocId); - header.setTerminalTextBlock(textBlock); + header.setLeafTextBlock(textBlock); page.setHeader(header); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/TableNodeFactory.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/TableNodeFactory.java index aeab14ac..11563c79 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/TableNodeFactory.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/factory/TableNodeFactory.java @@ -95,27 +95,27 @@ public class TableNodeFactory { tableCell.setTreeId(tocId); if (cell.getTextBlocks().isEmpty()) { - tableCell.setTerminalTextBlock(context.getTextBlockFactory().emptyTextBlock(parentNode, context, page)); - tableCell.setTerminal(true); + tableCell.setLeafTextBlock(context.getTextBlockFactory().emptyTextBlock(parentNode, context, page)); + tableCell.setLeaf(true); } else if (cell.getTextBlocks().size() == 1) { textBlock = context.getTextBlockFactory().buildAtomicTextBlock(cell.getTextBlocks().get(0).getSequences(), tableCell, context, page); - tableCell.setTerminalTextBlock(textBlock); - tableCell.setTerminal(true); + tableCell.setLeafTextBlock(textBlock); + tableCell.setLeaf(true); } else if (firstTextBlockIsHeadline(cell)) { SectionNodeFactory.addSection(tableCell, cell.getTextBlocks().stream().map(tb -> (AbstractPageBlock) tb).toList(), emptyList(), context); - tableCell.setTerminal(false); + tableCell.setLeaf(false); } else if (cellAreaIsSmallerThanPageAreaTimesThreshold(cell, page)) { List sequences = TextPositionOperations.mergeAndSortTextPositionSequenceByYThenX(cell.getTextBlocks()); textBlock = context.getTextBlockFactory().buildAtomicTextBlock(sequences, tableCell, context, page); - tableCell.setTerminalTextBlock(textBlock); - tableCell.setTerminal(true); + tableCell.setLeafTextBlock(textBlock); + tableCell.setLeaf(true); } else { cell.getTextBlocks().forEach(tb -> DocumentGraphFactory.addParagraphOrHeadline(tableCell, tb, context, emptyList())); - tableCell.setTerminal(false); + tableCell.setLeaf(false); } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/DocumentTree.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/DocumentTree.java index db3f948d..6fd8a1e5 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/DocumentTree.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/DocumentTree.java @@ -36,7 +36,7 @@ public class DocumentTree { public TextBlock buildTextBlock() { - return streamAllEntriesInOrder().map(Entry::getNode).filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + return streamAllEntriesInOrder().map(Entry::getNode).filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock).collect(new TextBlockCollector()); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Document.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Document.java index cf776b20..df6ab4d6 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Document.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Document.java @@ -52,7 +52,7 @@ public class Document implements SemanticNode { public Stream streamTerminalTextBlocksInOrder() { - return streamAllNodes().filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock); + return streamAllNodes().filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Footer.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Footer.java index c964da6d..b38fa09e 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Footer.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Footer.java @@ -24,10 +24,10 @@ import lombok.experimental.FieldDefaults; public class Footer implements SemanticNode { List treeId; - TextBlock terminalTextBlock; + TextBlock leafTextBlock; @Builder.Default - boolean terminal = true; + boolean leaf = true; @EqualsAndHashCode.Exclude DocumentTree documentTree; @@ -40,14 +40,14 @@ public class Footer implements SemanticNode { @Override public TextBlock buildTextBlock() { - return terminalTextBlock; + return leafTextBlock; } @Override public String toString() { - return treeId + ": " + NodeType.FOOTER + ": " + terminalTextBlock.buildSummary(); + return treeId + ": " + NodeType.FOOTER + ": " + leafTextBlock.buildSummary(); } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Header.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Header.java index a77f177b..8419ec06 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Header.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Header.java @@ -24,10 +24,10 @@ import lombok.experimental.FieldDefaults; public class Header implements SemanticNode { List treeId; - TextBlock terminalTextBlock; + TextBlock leafTextBlock; @Builder.Default - boolean terminal = true; + boolean leaf = true; @EqualsAndHashCode.Exclude DocumentTree documentTree; @@ -40,14 +40,14 @@ public class Header implements SemanticNode { @Override public TextBlock buildTextBlock() { - return terminalTextBlock; + return leafTextBlock; } @Override public String toString() { - return treeId + ": " + NodeType.HEADER + ": " + terminalTextBlock.buildSummary(); + return treeId + ": " + NodeType.HEADER + ": " + leafTextBlock.buildSummary(); } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Headline.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Headline.java index 20040e37..1c23a98e 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Headline.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Headline.java @@ -24,10 +24,10 @@ import lombok.experimental.FieldDefaults; public class Headline implements SemanticNode { List treeId; - TextBlock terminalTextBlock; + TextBlock leafTextBlock; @Builder.Default - boolean terminal = true; + boolean leaf = true; @EqualsAndHashCode.Exclude DocumentTree documentTree; @@ -40,14 +40,14 @@ public class Headline implements SemanticNode { @Override public TextBlock buildTextBlock() { - return terminalTextBlock; + return leafTextBlock; } @Override public String toString() { - return treeId + ": " + NodeType.HEADLINE + ": " + terminalTextBlock.buildSummary(); + return treeId + ": " + NodeType.HEADLINE + ": " + leafTextBlock.buildSummary(); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Image.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Image.java index 74970d6f..4e56a5d9 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Image.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Image.java @@ -58,7 +58,7 @@ public class Image implements SemanticNode { @Override public TextBlock buildTextBlock() { - return streamAllSubNodes().filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + return streamAllSubNodes().filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock).collect(new TextBlockCollector()); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Page.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Page.java index 6bf4ba38..a03723b0 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Page.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Page.java @@ -46,7 +46,7 @@ public class Page { public TextBlock getMainBodyTextBlock() { - return mainBody.stream().filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + return mainBody.stream().filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock).collect(new TextBlockCollector()); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Paragraph.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Paragraph.java index 27efff3b..327150f7 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Paragraph.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Paragraph.java @@ -22,10 +22,10 @@ import lombok.experimental.FieldDefaults; public class Paragraph implements SemanticNode { List treeId; - TextBlock terminalTextBlock; + TextBlock leafTextBlock; @Builder.Default - boolean terminal = true; + boolean leaf = true; @EqualsAndHashCode.Exclude DocumentTree documentTree; @@ -38,14 +38,14 @@ public class Paragraph implements SemanticNode { @Override public TextBlock buildTextBlock() { - return terminalTextBlock; + return leafTextBlock; } @Override public String toString() { - return treeId + ": " + NodeType.PARAGRAPH + ": " + terminalTextBlock.buildSummary(); + return treeId + ": " + NodeType.PARAGRAPH + ": " + leafTextBlock.buildSummary(); } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Section.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Section.java index 9149c358..24a2f270 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Section.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Section.java @@ -40,7 +40,7 @@ public class Section implements SemanticNode { public TextBlock buildTextBlock() { if (textBlock == null) { - textBlock = streamAllSubNodes().filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + textBlock = streamAllSubNodes().filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock).collect(new TextBlockCollector()); } return textBlock; } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/SemanticNode.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/SemanticNode.java index e6c717c8..3fe14fec 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/SemanticNode.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/SemanticNode.java @@ -22,7 +22,7 @@ public interface SemanticNode { /** * Searches all Nodes located underneath this Node in the DocumentTree and concatenates their AtomicTextBlocks into a single TextBlockEntity. * So, for a Section all TextBlocks of Subsections, Paragraphs, and Tables are concatenated into a single TextBlockEntity - * If the Node is Terminal, the TerminalTextBlock will be returned instead. + * If the Node is a Leaf, the LeafTextBlock will be returned instead. * * @return TextBlock containing all AtomicTextBlocks that are located under this Node. */ @@ -131,36 +131,36 @@ public interface SemanticNode { /** - * Terminal means a SemanticNode has direct access to a TextBlock, by default this is false and must be overridden. - * Currently only Sections, Images, and Tables are not terminal. - * A TableCell might be Terminal depending on its area compared to the page. + * Leaf means a SemanticNode has direct access to a TextBlock, by default this is false and must be overridden. + * Currently only Sections, Images, and Tables are not leaves. + * A TableCell might be a leaf depending on its area compared to the page. * * @return boolean, indicating if a Node has direct access to a TextBlock */ - default boolean isTerminal() { + default boolean isLeaf() { return false; } /** - * Terminal means a SemanticNode has direct access to a TextBlock, by default this is false and must be overridden. - * Currently only Sections and Tables are not terminal. + * Leaf means a SemanticNode has direct access to a TextBlock, by default this is false and must be overridden. + * Currently only Sections and Tables are no leaves. * * @return AtomicTextBlock */ - default TextBlock getTerminalTextBlock() { + default TextBlock getLeafTextBlock() { - throw new UnsupportedOperationException("Only terminal Nodes have access to TerminalTextBlocks!"); + throw new UnsupportedOperationException("Only leaf Nodes have access to LeafTextBlocks!"); } /** - * Should only be used during construction of the Graph. Sets the TerminalTextBlock of this SemanticNode. + * Should only be used during construction of the Graph. Sets the LeafTextBlock of this SemanticNode. * - * @param textBlock the TextBlock to set as the terminalTextBlock of this SemanticNode + * @param textBlock the TextBlock to set as the LeafTextBlock of this SemanticNode */ - default void setTerminalTextBlock(TextBlock textBlock) { + default void setLeafTextBlock(TextBlock textBlock) { throw new UnsupportedOperationException(); } @@ -345,7 +345,7 @@ public interface SemanticNode { /** - * If this Node is Terminal it will calculate the boundingBox of its TerminalTextBlock, otherwise it will calculate the Union of the BoundingBoxes of all its Children. + * If this Node is a Leaf it will calculate the boundingBox of its LeafTextBlock, otherwise it will calculate the Union of the BoundingBoxes of all its Children. * If called on the Document, it will return the cropbox of each page * * @return Rectangle2D fully encapsulating this Node for each page. @@ -353,8 +353,8 @@ public interface SemanticNode { default Map getBBox() { Map bBoxPerPage = new HashMap<>(); - if (isTerminal()) { - return getBBoxFromTerminalTextBlock(bBoxPerPage); + if (isLeaf()) { + return getBBoxFromLeafTextBlock(bBoxPerPage); } return getBBoxFromChildren(bBoxPerPage); @@ -397,7 +397,7 @@ public interface SemanticNode { * @param bBoxPerPage initial empty BoundingBox * @return The union of all BoundingBoxes of the TextBlock of this node */ - private Map getBBoxFromTerminalTextBlock(Map bBoxPerPage) { + private Map getBBoxFromLeafTextBlock(Map bBoxPerPage) { Map> atomicTextBlockPerPage = buildTextBlock().getAtomicTextBlocks().stream().collect(Collectors.groupingBy(AtomicTextBlock::getPage)); atomicTextBlockPerPage.forEach((page, atbs) -> bBoxPerPage.put(page, RectangleTransformations.bBoxUnionAtomicTextBlock(atbs))); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Table.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Table.java index 5817d9e4..b3359c49 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Table.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/Table.java @@ -174,7 +174,7 @@ public class Table implements SemanticNode { public TextBlock buildTextBlock() { if (textBlock == null) { - textBlock = streamAllSubNodes().filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + textBlock = streamAllSubNodes().filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock).collect(new TextBlockCollector()); } return textBlock; } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/TableCell.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/TableCell.java index 5021c18a..312a7d51 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/TableCell.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/nodes/TableCell.java @@ -34,8 +34,8 @@ public class TableCell implements SemanticNode { Rectangle2D bBox; @Builder.Default - boolean terminal = true; - TextBlock terminalTextBlock; + boolean leaf = true; + TextBlock leafTextBlock; TextBlock textBlock; @@ -59,12 +59,12 @@ public class TableCell implements SemanticNode { @Override public TextBlock buildTextBlock() { - if (terminal) { - return terminalTextBlock; + if (leaf) { + return leafTextBlock; } if (textBlock == null) { - textBlock = streamAllSubNodes().filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + textBlock = streamAllSubNodes().filter(SemanticNode::isLeaf).map(SemanticNode::getLeafTextBlock).collect(new TextBlockCollector()); } return textBlock; }