From 4f40c9dbc9eea8c844cda63c3c88ac24964cb415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Wed, 18 Sep 2024 11:20:02 +0200 Subject: [PATCH] RED-9975: Fixed missing section numbers in layout grid --- .../processor/visualization/LayoutGrid.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/visualization/LayoutGrid.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/visualization/LayoutGrid.java index 3c0d9bd..a0c2e33 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/visualization/LayoutGrid.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/visualization/LayoutGrid.java @@ -88,10 +88,19 @@ public class LayoutGrid extends LayoutGridLayerConfig { public void addTreeId(SemanticNode semanticNode) { Page page = semanticNode.getFirstPage(); - if (semanticNode.getBBox().get(page) == null) { + if (semanticNode.getBBox() + .get(page) == null) { return; } - addPlacedText(page, semanticNode.getBBox().get(page), semanticNode.getBBox().get(page), buildTreeIdString(semanticNode), 1, treeIds, TREEID_COLOR); + addPlacedText(page, + semanticNode.getBBox() + .get(page), + semanticNode.getBBox() + .get(page), + buildTreeIdString(semanticNode), + 1, + treeIds, + TREEID_COLOR); } @@ -120,7 +129,8 @@ public class LayoutGrid extends LayoutGridLayerConfig { .toList(); Integer maxChildDepth = subSections.stream() .map(node -> node.getTreeId().size()) - .max(Integer::compareTo).orElse(section.getTreeId().size()); + .max(Integer::compareTo) + .orElse(section.getTreeId().size()); int ownDepth = section.getTreeId().size(); Page firstPage = section.getFirstPage(); @@ -205,7 +215,8 @@ public class LayoutGrid extends LayoutGridLayerConfig { PlacedText newText = PlacedText.textFacingUp(s, upperLeftCorner, FONT_SIZE, color, FONT); float threshold = 1.5f * FONT_SIZE; Optional conflictingText = placedTexts.stream() - .filter(pt -> Math.abs(pt.lineStart().getY() - newText.lineStart().getY()) <= threshold || Math.abs(pt.lineStart().getX() - newText.lineStart().getX()) <= threshold) + .filter(pt -> Math.abs(pt.lineStart().getY() - newText.lineStart().getY()) <= threshold + && Math.abs(pt.lineStart().getX() - newText.lineStart().getX()) <= threshold) .findFirst(); if (conflictingText.isPresent()) { @@ -286,7 +297,8 @@ public class LayoutGrid extends LayoutGridLayerConfig { List coloredLines = getOrCreateVisualizationsOnPage(page.getNumber(), sections).getColoredLines(); int lineWidthModifier = maxChildDepth - ownDepth; - Rectangle2D r = RectangleTransformations.pad(semanticNode.getBBox().get(page), LINE_WIDTH * (1 + lineWidthModifier), LINE_WIDTH * (1 + lineWidthModifier)); + Rectangle2D r = RectangleTransformations.pad(semanticNode.getBBox() + .get(page), LINE_WIDTH * (1 + lineWidthModifier), LINE_WIDTH * (1 + lineWidthModifier)); SemanticNode highestParent = semanticNode.getHighestParent(); Rectangle2D highestParentRect = rectangleMap.get(new RectangleIdentifier(highestParent.getTreeId(), page.getNumber())); @@ -335,7 +347,8 @@ public class LayoutGrid extends LayoutGridLayerConfig { List ys = yStream.collect(Collectors.toList()); ys.remove(0); - Rectangle2D tableBBox = table.getBBox().get(page); + Rectangle2D tableBBox = table.getBBox() + .get(page); List coloredLines = getOrCreateVisualizationsOnPage(page.getNumber(), tables).getColoredLines(); xs.forEach(x -> {