diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java index 47b09af1..78a6c6f3 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java @@ -56,6 +56,8 @@ public class Entity implements ReasonHolder { private EntityType entityType; + private boolean resized; + public Entity(String word, String type, boolean redaction, String redactionReason, List positionSequences, String headline, int matchedRule, int sectionNumber, diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java index ef863327..a727c710 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java @@ -901,10 +901,13 @@ public class Section { if (resize.getAnnotationId().equals(pos.getId()) && resize.getValue().length() < e.getWord().length() && e.getWord().contains(resize.getValue())) { int start = e.getWord().indexOf(resize.getValue()); e.setStart(e.getStart() + start); - e.setEnd(e.getEnd() - resize.getValue().length()); + e.setEnd(e.getStart() + resize.getValue().length()); + e.setResized(true); + e.setWord(resize.getValue()); } }); })); + return entitiesWithPositions; } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java index 26cdb062..1e93e145 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java @@ -112,7 +112,11 @@ public class EntitySearchUtils { wordsToRemove.add(word); } else if(!(inner.getEntityType() == EntityType.FALSE_RECOMMENDATION && word.getEntityType() == EntityType.ENTITY || inner.getEntityType() == EntityType.ENTITY && word.getEntityType() == EntityType.FALSE_RECOMMENDATION)) { - wordsToRemove.add(inner); + if(inner.isResized()){ + wordsToRemove.add(word); + } else { + wordsToRemove.add(inner); + } } } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java index a67ce82e..7ab86e73 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java @@ -822,21 +822,22 @@ public class RedactionIntegrationTest { long start = System.currentTimeMillis(); - AnalyzeRequest request = prepareStorage("files/new/ResizeRedactionTestDoc.pdf"); + AnalyzeRequest request = prepareStorage("files/new/S157.pdf"); ManualRedactions manualRedactions = new ManualRedactions(); + manualRedactions.getResizeRedactions() .add(ManualResizeRedaction.builder() - .annotationId("fd5ee82900beb7383f00480dea417569") + .annotationId("ca2b437e2480a4b5966cb8386020d454") .fileId(TEST_FILE_ID) .status(AnnotationStatus.APPROVED) .requestDate(OffsetDateTime.of(2022, 05, 23, 8, 30, 07, 475479, ZoneOffset.UTC)) .processedDate(OffsetDateTime.of(2022, 05, 23, 8, 30, 07, 483651, ZoneOffset.UTC)) - .value("Regina") - .positions(List.of(new Rectangle(147.86f, 225.9895f, 31.17696f, 10.048125f, 1))) - .textBefore("Switzerland Contact point: ") - .textAfter(" Dorn Phone:") + .value("Bera P") + .positions(List.of(new Rectangle(382.12485f, 235.94246f, 8.768621f, -21.632504f, 1))) + .textBefore("") + .textAfter("") .build()); request.setManualRedactions(manualRedactions); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/PII.txt b/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/PII.txt index 141cd1fe..30af203a 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/PII.txt +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/PII.txt @@ -10,3 +10,4 @@ Naka-27 Aomachi, Nomi, Ishikawa 923-1101, Japan, JP Sude Halide Nurullah Xinyi Y. Tao Dorn +Prasher diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/S157.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/S157.pdf new file mode 100644 index 00000000..2c61e3b3 Binary files /dev/null and b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/S157.pdf differ