From 95a2d71af0a69c06a40e4d39d1f9f1286d726028 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 9 Jun 2022 09:23:17 +0200 Subject: [PATCH] RED-4114: Fixed text rotation for rotation = 0 and text direction = 180 --- .../parsing/model/TextPositionSequence.java | 8 ++++++ .../v1/server/RedactionIntegrationTest.java | 25 ++++++++++++++++++ .../src/test/resources/dictionaries/PII.txt | 2 ++ .../resources/files/new/RotateTestfile.pdf | Bin 0 -> 42840 bytes 4 files changed, 35 insertions(+) create mode 100644 redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestfile.pdf 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 704b383b..43501949 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 @@ -320,6 +320,14 @@ public class TextPositionSequence implements CharSequence { posYEnd = textPositions.get(textPositions.size() - 1) .getYDirAdj() - height + 2; + } else if (textPositions.get(0).getRotation() == 0 && textPositions.get(0).getDir() == 180f) { + posXInit = textPositions.get(0).getPageWidth() - getX1() + 1; + posXEnd = textPositions.get(0).getPageWidth() - getX2() + textPositions.get(0).getWidthDirAdj() - textPositions.get(textPositions.size() - 1) + .getWidthDirAdj() - 3; + posYInit = textPositions.get(0).getYDirAdj() - height + 2; + posYEnd = textPositions.get(textPositions.size() - 1) + .getYDirAdj() - height + 2; + } else { posXEnd = textPositions.get(textPositions.size() - 1) .getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 1; 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 a8810169..eb5a0691 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 @@ -807,6 +807,31 @@ public class RedactionIntegrationTest { } + @Test + public void testRotations() throws IOException { + + System.out.println("testTableRedaction"); + long start = System.currentTimeMillis(); + + AnalyzeRequest request = prepareStorage("files/new/RotateTestfile.pdf"); + analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); + AnalyzeResult result = analyzeService.analyze(request); + + AnnotateResponse annotateResponse = annotationService.annotate(AnnotateRequest.builder() + .dossierId(TEST_DOSSIER_ID) + .fileId(TEST_FILE_ID) + .build()); + + try (FileOutputStream fileOutputStream = new FileOutputStream(OsUtils.getTemporaryDirectory() + "/Annotated.pdf")) { + fileOutputStream.write(annotateResponse.getDocument()); + } + long end = System.currentTimeMillis(); + + System.out.println("duration: " + (end - start)); + System.out.println("numberOfPages: " + result.getNumberOfPages()); + } + + @Test public void testFindDictionaryEntryInResizedEntryPosition() throws IOException { 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 30af203a..e278ccaf 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 @@ -11,3 +11,5 @@ Sude Halide Nurullah Xinyi Y. Tao Dorn Prasher +RuleAnnotation270GradP +RuleAnnotation270GradLS \ No newline at end of file diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestfile.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestfile.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1848dc381a6ca68d42b324f5afd867e65cd1fa3f GIT binary patch literal 42840 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˴CBhy?)sI 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 literal 0 HcmV?d00001