diff --git a/.gitignore b/.gitignore index ef2a133..1867f0b 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ gradlew.bat gradlew gradle.properties gradle/ +.DS_Store +.DS_Store/ 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 92f3a73..c3666a6 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 @@ -221,9 +221,11 @@ public class DocstrumBlockificationService { public void mergeIntersectingBlocks(List blocks, float xThreshold, float yThreshold) { ListIterator itty = blocks.listIterator(); - Set toRemove = new HashSet<>(); while (itty.hasNext()) { AbstractPageBlock block = itty.next(); + if(block == null){ + continue; + } if (block instanceof TablePageBlock) { continue; } @@ -232,7 +234,7 @@ public class DocstrumBlockificationService { for (int i = 0; i < blocks.size(); i++) { - if (toRemove.contains(blocks.get(i))) { + if(blocks.get(i) == null){ continue; } if (blocks.get(i) == current) { @@ -249,13 +251,19 @@ public class DocstrumBlockificationService { boolean toDuplicate = current.isToDuplicate() || inner.isToDuplicate(); current.getSequences().addAll(inner.getSequences()); current = buildTextBlock(current.getSequences(), 0); + current.setToDuplicate(toDuplicate); - toRemove.add(inner); + blocks.set(i, null); itty.set(current); } } } - blocks.removeAll(toRemove); + var blocksIterator = blocks.iterator(); + while(blocksIterator.hasNext()){ + if(blocksIterator.next() == null){ + blocksIterator.remove(); + } + } }