diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionExtractorService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionExtractorService.java index 626a9d55..8f05ae63 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionExtractorService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionExtractorService.java @@ -58,7 +58,7 @@ public class RedactionExtractorService { Map> importedRedactionsMap = new HashMap<>(); for (int pageNumber = 1; pageNumber <= pageCount; pageNumber++) { PDPage page = pdfDocument.getPage(pageNumber - 1); - BufferedImage image = pageConvertToImage(pdfDocument, page, 144, ImageType.GRAY); + BufferedImage image = pageConvertToImage(pdfDocument, page, 200, ImageType.GRAY); Mat imageAsMat = bufferedImage2Mat(image); @@ -74,7 +74,7 @@ public class RedactionExtractorService { Mat blurred = new Mat(); Imgproc.GaussianBlur(imageAsMatINv,blurred, new Size(5, 5), 1); Mat thresh = new Mat(); - Imgproc.threshold(blurred, thresh, 250, 255, Imgproc.THRESH_BINARY); + Imgproc.threshold(blurred, thresh, 240, 255, Imgproc.THRESH_BINARY); Mat hierachy = new Mat(); @@ -85,12 +85,12 @@ public class RedactionExtractorService { System.out.println(contours); System.out.println(hierachy.size(3)); - var min_nomralized_area=600; + var min_nomralized_area=800; - hierachy = hierachy.row(0).row(0); - - System.out.println("Cont" +contours.size() + "Hier" + hierachy.cols()); + if(hierachy.rows() > 0 && hierachy.row(0).rows() > 0) { + hierachy = hierachy.row(0).row(0); + System.out.println("Cont" + contours.size() + "Hier" + hierachy.cols()); // for(int j = 0; j<= hierachy.cols(); j++){ // System.out.println("----> Col " + j); @@ -99,36 +99,31 @@ public class RedactionExtractorService { // } // } + int i = 0; + List filterd = new ArrayList<>(); + for (MatOfPoint contour : contours) { + if (isLikelyRedaction(contour, hierachy.get(0, i), min_nomralized_area)) { + filterd.add(contour); + } + i++; + } + Imgproc.drawContours(imageAsMat, filterd, -1, new Scalar(180), 2); - int i = 0; - List filterd = new ArrayList<>(); - for(MatOfPoint contour: contours){ - if(isLikelyRedaction(contour, hierachy.get(0,i), min_nomralized_area)){ - filterd.add(contour); - } - i++; - } + List importedRedactions = new ArrayList<>(); + for (MatOfPoint contour : filterd) { + Rect rect = Imgproc.boundingRect(contour); + importedRedactions.add(new ImportedRedaction(UUID.randomUUID().toString(), List.of(new Rectangle(new Point((float) (rect.x * page.getCropBox() + .getWidth() / image.getWidth()), (float) (page.getCropBox().getHeight() - rect.y * page.getCropBox() + .getWidth() / image.getWidth())), rect.width * page.getCropBox() + .getWidth() / image.getWidth(), -rect.height * page.getCropBox() + .getWidth() / image.getWidth(), pageNumber)))); + } - Imgproc.drawContours(imageAsMat, filterd, -1, new Scalar(180), 2); - - - List importedRedactions = new ArrayList<>(); - for(MatOfPoint contour : filterd){ - Rect rect = Imgproc.boundingRect(contour); - - importedRedactions.add(new ImportedRedaction(UUID.randomUUID().toString(), List.of( - new Rectangle(new Point((float) (rect.x * page.getCropBox().getWidth() / image.getWidth()), - (float) (page.getCropBox().getHeight() - rect.y * page.getCropBox().getWidth() / image.getWidth())), - rect.width * page.getCropBox().getWidth() / image.getWidth(), - -rect.height * page.getCropBox().getWidth() / image.getWidth(), - 1)))); - } - - - importedRedactionsMap.put(1, importedRedactions); + importedRedactionsMap.put(pageNumber, importedRedactions); + } // BufferedImage gray = new BufferedImage(imageAsMat.width(), imageAsMat.height(), BufferedImage.TYPE_BYTE_GRAY); // byte[] data = ((DataBufferByte) gray.getRaster().getDataBuffer()).getData(); @@ -141,6 +136,8 @@ public class RedactionExtractorService { // System.out.println(contours); } + pdfDocument.close(); + return new ImportedRedactions(importedRedactionsMap); } 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 7c2edc9b..066d258c 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 @@ -567,15 +567,16 @@ public class RedactionIntegrationTest { public void testImportRedactions() { nu.pattern.OpenCV.loadShared(); - ClassPathResource pdfFileResource = new ClassPathResource("files/redest_man_page.pdf"); + ClassPathResource pdfFileResource = new ClassPathResource("files/Metolachlor/S-Metolachlor_RAR_01_Volume_1_2018-09-06_redacted1.pdf"); ImportedRedactions importedRedactions = redactionExtractorService.extractRedaction(pdfFileResource.getInputStream()); String outputFileName = OsUtils.getTemporaryDirectory() + "/Annotated.pdf"; + ClassPathResource pdfFileResource2 = new ClassPathResource("files/Metolachlor/S-Metolachlor_RAR_01_Volume_1_2018-09-06.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(pdfFileResource2.getInputStream()); storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.IMPORTED_REDACTIONS), objectMapper.writeValueAsBytes(importedRedactions)); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/Metolachlor/S-Metolachlor_RAR_01_Volume_1_2018-09-06_redacted1.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/Metolachlor/S-Metolachlor_RAR_01_Volume_1_2018-09-06_redacted1.pdf new file mode 100644 index 00000000..488d02a3 Binary files /dev/null and b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/Metolachlor/S-Metolachlor_RAR_01_Volume_1_2018-09-06_redacted1.pdf differ