From efa3d75479febd0d1eab77cdb4a69641443c4e65 Mon Sep 17 00:00:00 2001 From: Corina Olariu Date: Wed, 25 Oct 2023 09:16:47 +0300 Subject: [PATCH] RED-7806 - Specific customer document cannot be processed - check for font name null before using to avoid the NPE --- .../processor/LayoutParsingPipeline.java | 14 +++++++------- .../processor/model/text/TextPositionSequence.java | 7 +++++-- .../factory/SearchTextWithTextPositionFactory.java | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/LayoutParsingPipeline.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/LayoutParsingPipeline.java index 8418e89..3ec8d47 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/LayoutParsingPipeline.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/LayoutParsingPipeline.java @@ -143,13 +143,13 @@ public class LayoutParsingPipeline { return String.format("%d pages with %d sections, %d headlines, %d paragraphs, %d tables with %d cells, %d headers, and %d footers parsed", numberOfPages, - semanticNodeCounts.get(NodeType.SECTION), - semanticNodeCounts.get(NodeType.HEADLINE), - semanticNodeCounts.get(NodeType.PARAGRAPH), - semanticNodeCounts.get(NodeType.TABLE), - semanticNodeCounts.get(NodeType.TABLE_CELL), - semanticNodeCounts.get(NodeType.HEADER), - semanticNodeCounts.get(NodeType.FOOTER)); + semanticNodeCounts.get(NodeType.SECTION) == null ? 0 : semanticNodeCounts.get(NodeType.SECTION), + semanticNodeCounts.get(NodeType.HEADLINE) == null ? 0 : semanticNodeCounts.get(NodeType.HEADLINE), + semanticNodeCounts.get(NodeType.PARAGRAPH) == null ? 0 : semanticNodeCounts.get(NodeType.PARAGRAPH), + semanticNodeCounts.get(NodeType.TABLE) == null ? 0 : semanticNodeCounts.get(NodeType.TABLE), + semanticNodeCounts.get(NodeType.TABLE_CELL) == null ? 0 : semanticNodeCounts.get(NodeType.TABLE_CELL), + semanticNodeCounts.get(NodeType.HEADER) == null ? 0 : semanticNodeCounts.get(NodeType.HEADER), + semanticNodeCounts.get(NodeType.FOOTER) == null ? 0 : semanticNodeCounts.get(NodeType.FOOTER)); } diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/model/text/TextPositionSequence.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/model/text/TextPositionSequence.java index 807383b..42afcce 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/model/text/TextPositionSequence.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/model/text/TextPositionSequence.java @@ -224,6 +224,8 @@ public class TextPositionSequence implements CharSequence { @JsonAttribute(ignore = true) public String getFont() { + if (textPositions.get(0).getFontName() == null) + return "none"; return textPositions.get(0).getFontName().toLowerCase(Locale.ROOT).replaceAll(",bold", "").replaceAll(",italic", ""); } @@ -231,7 +233,9 @@ public class TextPositionSequence implements CharSequence { @JsonIgnore @JsonAttribute(ignore = true) public String getFontStyle() { - + if (textPositions.get(0).getFontName() == null) { + return "standard"; + } String lowercaseFontName = textPositions.get(0).getFontName().toLowerCase(Locale.ROOT); if (lowercaseFontName.contains("bold") && lowercaseFontName.contains("italic")) { @@ -243,7 +247,6 @@ public class TextPositionSequence implements CharSequence { } else { return "standard"; } - } diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/factory/SearchTextWithTextPositionFactory.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/factory/SearchTextWithTextPositionFactory.java index e14b55e..7ebc737 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/factory/SearchTextWithTextPositionFactory.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/services/factory/SearchTextWithTextPositionFactory.java @@ -133,7 +133,7 @@ public class SearchTextWithTextPositionFactory { private static void addTextPositionWithFontType(RedTextPosition currentTextPosition, String fontType, List fontTypePositions, int stringIdx) { - if (currentTextPosition.getFontName().toLowerCase(Locale.ROOT).contains(fontType)) { + if (currentTextPosition.getFontName() != null && currentTextPosition.getFontName().toLowerCase(Locale.ROOT).contains(fontType)) { fontTypePositions.add(stringIdx); } }