diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/docstrum/service/ReadingOrderService.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/docstrum/service/ReadingOrderService.java index 56fa167..1d320db 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/docstrum/service/ReadingOrderService.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/docstrum/service/ReadingOrderService.java @@ -127,6 +127,14 @@ public class ReadingOrderService { zonesPerColumn.forEach(list -> list.sort(Comparator.comparing(BoundingBox::getY, (o1, o2) -> DoubleUtils.compareDouble(o1, o2, THRESHOLD)) .thenComparing(BoundingBox::getX, (o1, o2) -> DoubleUtils.compareDouble(o1, o2, THRESHOLD)))); + zonesPerColumn.forEach(list -> list.sort(new Comparator() { + @Override + public int compare(Zone o1, Zone o2) { + + return Math.abs(o1.getMinY() - o2.getMinY()) < 5 && o1.getMinX() < o2.getMinX() == true ? -1 : 0; + } + })); + return zonesPerColumn.stream() .flatMap(Collection::stream) .toList(); diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/blockification/DocstrumBlockificationService.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/blockification/DocstrumBlockificationService.java index 13e0975..307bbda 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/blockification/DocstrumBlockificationService.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/blockification/DocstrumBlockificationService.java @@ -130,13 +130,13 @@ public class DocstrumBlockificationService { continue; } - if (current.intersectsY(previous) && current.horizontalDistance(previous) < 20) { + if (current.intersectsY(previous) && current.horizontalDistance(previous) < 50) { previous = combineBlocksAndResetIterator(previous, current, itty, true); continue; } - if (areTheOnlyTwoBlocksOnHeightsWithBothMoreThanTwoLines(previous, current, page)) { - previous = combineBlocksAndResetIterator(previous, current, itty, true); + if (isOnlyIntersectingYAndOnelineOrPrevoiusTwoLines(previous, current, page)) { + previous = combineBlocksAndResetIterator(previous, current, itty, previous.isToDuplicate()); continue; } @@ -321,7 +321,7 @@ public class DocstrumBlockificationService { continue; } - if (current.getDir() == inner.getDir() && current.intersects(inner, xThreshold, yThreshold)){ + if (current.getDir() == inner.getDir() && current.intersects(inner, xThreshold, yThreshold)) { boolean toDuplicate = current.isToDuplicate() || inner.isToDuplicate(); current.getSequences().addAll(inner.getSequences()); @@ -332,7 +332,8 @@ public class DocstrumBlockificationService { itty.set(current); } } - } var blocksIterator = blocks.iterator(); + } + var blocksIterator = blocks.iterator(); while (blocksIterator.hasNext()) { if (blocksIterator.next() == null) { blocksIterator.remove();