From 44d365ca8450acab595cb8de5a7411e727142b1e Mon Sep 17 00:00:00 2001 From: deiflaender Date: Tue, 17 Nov 2020 11:24:50 +0100 Subject: [PATCH] Fixed positions --- .../controller/RedactionController.java | 13 +++++- .../parsing/model/TextPositionSequence.java | 2 +- .../v1/server/RedactionIntegrationTest.java | 42 ++++++++++++++++++- 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java index a86fd12f..4295f01b 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java @@ -56,7 +56,18 @@ public class RedactionController implements RedactionResource { return convert(flatDocument, classifiedDoc.getPages().size(), classifiedDoc.getRedactionLogEntities()); } - return convert(pdDocument, classifiedDoc.getPages().size(), classifiedDoc.getRedactionLogEntities()); + RedactionResult result = convert(pdDocument, classifiedDoc.getPages().size(), classifiedDoc.getRedactionLogEntities()); + + + result.getRedactionLog().getRedactionLogEntry().forEach(entry -> { + entry.getPositions().forEach(pos -> { + if(pos.getPage() == 28 && entry.getValue().equals("Shults")){ + System.out.println(entry); + } + }); + }); + + return result; } catch (IOException e) { throw new RedactionException(e); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java index df58c9d1..cd43dfaa 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java @@ -210,7 +210,7 @@ public class TextPositionSequence implements CharSequence { .getYDirAdj() + 2; } - return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + height, page); + return new Rectangle(new Point(posXInit - 0.00001f, posYInit), posXEnd - posXInit , posYEnd - posYInit + height, page); } 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 ddcb4239..f4ac8d2b 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 @@ -25,6 +25,7 @@ import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.api.KieServices; @@ -40,6 +41,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; +import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.configuration.v1.api.model.Colors; import com.iqser.red.service.configuration.v1.api.model.DictionaryResponse; import com.iqser.red.service.configuration.v1.api.model.RulesResponse; @@ -342,13 +344,44 @@ public class RedactionIntegrationTest { System.out.println("numberOfPages: " + result.getNumberOfPages()); } + @Autowired + private ObjectMapper objectMapper; + @Ignore @Test public void testManualRedaction() throws IOException { + +// { +// "id": "fed70e44fafdfd814d8caf4738296aa7", +// "user": "9f649779-1b43-4ce1-926a-deadeecbdd94", +// "type": "manual", +// "value": "Shults", +// "reason": "the method of manufacture", +// "legalBasis": "Reg (EC) No 1107/2009 Art. 63 (2a)", +// "positions": [ +// { +// "topLeft": { +// "x": 167.04001, +// "y": 449.00894 +// }, +// "width": 30.494343, +// "height": 11.852395, +// "page": 28 +// } +// ], +// "status": "APPROVED", +// "addToDictionary": false, +// "requestDate": "2020-11-17T10:01:21Z", +// "processedDate": "2020-11-17T10:01:21Z" +// }, + + + + System.out.println("testManualRedaction"); long start = System.currentTimeMillis(); - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Single Table.pdf"); + ClassPathResource pdfFileResource = new ClassPathResource("files/21 Chlorothalonil RAR 11 Volume 3CA B 9 August 2017-server.pdf"); ManualRedactions manualRedactions = new ManualRedactions(); @@ -376,7 +409,7 @@ public class RedactionIntegrationTest { manualRedactionEntry.setReason("Manual Redaction"); manualRedactionEntry.setPositions(List.of(new Rectangle(new Point(375.61096f, 241.282f), 7.648041f, 43.72262f, 1), new Rectangle(new Point(384.83517f, 241.282f), 7.648041f, 17.043358f, 1))); - manualRedactions.getEntriesToAdd().add(manualRedactionEntry); +// manualRedactions.getEntriesToAdd().add(manualRedactionEntry); RedactionRequest request = RedactionRequest.builder() .document(IOUtils.toByteArray(pdfFileResource.getInputStream())) @@ -388,6 +421,11 @@ public class RedactionIntegrationTest { try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/Redacted.pdf")) { fileOutputStream.write(result.getDocument()); } + + try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/logX.txt")) { + fileOutputStream.write(objectMapper.writeValueAsBytes(result.getRedactionLog())); + } + long end = System.currentTimeMillis(); System.out.println("duration: " + (end - start));