diff --git a/redaction-service-v1/redaction-service-api-v1/pom.xml b/redaction-service-v1/redaction-service-api-v1/pom.xml index c82f4d40..35d87a66 100644 --- a/redaction-service-v1/redaction-service-api-v1/pom.xml +++ b/redaction-service-v1/redaction-service-api-v1/pom.xml @@ -12,7 +12,7 @@ redaction-service-api-v1 - 1.254.0 + 1.299.0 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 11497a05..54f24af5 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 @@ -48,7 +48,7 @@ public class RedactionController implements RedactionResource { var storedObjectStream = redactionStorageService.getStoredObject(RedactionStorageService.StorageIdUtils.getStorageId(redactionRequest.getDossierId(), redactionRequest.getFileId(), FileType.ORIGIN)); try { - Document classifiedDoc = pdfSegmentationService.parseDocument(storedObjectStream, null); + Document classifiedDoc = pdfSegmentationService.parseDocument(redactionRequest.getDossierId(), redactionRequest.getFileId(), storedObjectStream, null); storedObjectStream = redactionStorageService.getStoredObject(RedactionStorageService.StorageIdUtils.getStorageId(redactionRequest.getDossierId(), redactionRequest.getFileId(), FileType.ORIGIN)); try (PDDocument pdDocument = PDDocument.load(storedObjectStream)) { @@ -74,7 +74,7 @@ public class RedactionController implements RedactionResource { var storedObjectStream = redactionStorageService.getStoredObject(RedactionStorageService.StorageIdUtils.getStorageId(redactionRequest.getDossierId(), redactionRequest.getFileId(), FileType.ORIGIN)); try { - Document classifiedDoc = pdfSegmentationService.parseDocument(storedObjectStream, null); + Document classifiedDoc = pdfSegmentationService.parseDocument(redactionRequest.getDossierId(), redactionRequest.getFileId(), storedObjectStream, null); storedObjectStream = redactionStorageService.getStoredObject(RedactionStorageService.StorageIdUtils.getStorageId(redactionRequest.getDossierId(), redactionRequest.getFileId(), FileType.ORIGIN)); try (PDDocument pdDocument = PDDocument.load(storedObjectStream)) { @@ -101,7 +101,7 @@ public class RedactionController implements RedactionResource { try { var storedObjectStream = redactionStorageService.getStoredObject(RedactionStorageService.StorageIdUtils.getStorageId(redactionRequest.getDossierId(), redactionRequest.getFileId(), FileType.ORIGIN)); - classifiedDoc = pdfSegmentationService.parseDocument(storedObjectStream, null); + classifiedDoc = pdfSegmentationService.parseDocument(redactionRequest.getDossierId(), redactionRequest.getFileId(), storedObjectStream, null); } catch (Exception 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/redaction/model/PdfTable.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfTable.java new file mode 100644 index 00000000..b55fde7f --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfTable.java @@ -0,0 +1,17 @@ +package com.iqser.red.service.redaction.v1.server.redaction.model; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Data; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +@Data +@RequiredArgsConstructor +public class PdfTable { + + @NonNull + private List tableCells = new ArrayList<>(); + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfTableCell.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfTableCell.java new file mode 100644 index 00000000..df3ca322 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfTableCell.java @@ -0,0 +1,21 @@ +package com.iqser.red.service.redaction.v1.server.redaction.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@RequiredArgsConstructor +public class PdfTableCell { + + private float x0; + private float y0; + private float x1; + private float y1; + private float width; + private float height; + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/PageInfo.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/PageInfo.java new file mode 100644 index 00000000..f2ec8d6b --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/PageInfo.java @@ -0,0 +1,16 @@ +package com.iqser.red.service.redaction.v1.server.redaction.model.table; + +import com.dslplatform.json.CompiledJson; + +import lombok.Data; + +@Data +@CompiledJson +public class PageInfo { + + private int number; + private int rotation; + private float width; + private float height; + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableCells.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableCells.java new file mode 100644 index 00000000..00f0a138 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableCells.java @@ -0,0 +1,18 @@ +package com.iqser.red.service.redaction.v1.server.redaction.model.table; + +import com.dslplatform.json.CompiledJson; + +import lombok.Data; + +@Data +@CompiledJson +public class TableCells { + + private float x0; + private float y0; + private float x1; + private float y1; + private float width; + private float height; + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableData.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableData.java new file mode 100644 index 00000000..ac5c01a9 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableData.java @@ -0,0 +1,17 @@ +package com.iqser.red.service.redaction.v1.server.redaction.model.table; + +import java.util.ArrayList; +import java.util.List; + +import com.dslplatform.json.CompiledJson; + +import lombok.Data; + +@Data +@CompiledJson +public class TableData { + + private PageInfo pageInfo; + private List tableCells = new ArrayList<>(); + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableServiceResponse.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableServiceResponse.java new file mode 100644 index 00000000..435938c0 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/table/TableServiceResponse.java @@ -0,0 +1,21 @@ +package com.iqser.red.service.redaction.v1.server.redaction.model.table; + +import java.util.ArrayList; +import java.util.List; + +import com.dslplatform.json.CompiledJson; + +import lombok.Data; + +@Data +@CompiledJson +public class TableServiceResponse { + private String dossierId; + private String fileId; + private String operation; + private String targetFileExtension; + private String responseFileExtension; + + private List data = new ArrayList<>(); + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java index 76cc1b33..9f5fa3e2 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java @@ -96,7 +96,8 @@ public class AnalyzeService { if (redactionServiceSettings.isEnableImageClassification()) { pdfImages = imageService.convertImages(analyzeRequest.getDossierId(), analyzeRequest.getFileId()); } - classifiedDoc = pdfSegmentationService.parseDocument(storedObjectStream, pdfImages); + + classifiedDoc = pdfSegmentationService.parseDocument(analyzeRequest.getDossierId(), analyzeRequest.getFileId(), storedObjectStream, pdfImages); pageCount = classifiedDoc.getPages().size(); } catch (Exception 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/segmentation/PdfSegmentationService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationService.java index efbf1b5e..c98bf6c6 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationService.java @@ -9,6 +9,7 @@ import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.PosixFilePermissions; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -29,6 +30,8 @@ import com.iqser.red.service.redaction.v1.server.classification.service.Classifi import com.iqser.red.service.redaction.v1.server.parsing.PDFLinesTextStripper; import com.iqser.red.service.redaction.v1.server.parsing.model.TextPositionSequence; import com.iqser.red.service.redaction.v1.server.redaction.model.PdfImage; +import com.iqser.red.service.redaction.v1.server.redaction.model.PdfTableCell; +import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettings; import com.iqser.red.service.redaction.v1.server.tableextraction.model.AbstractTextContainer; import com.iqser.red.service.redaction.v1.server.tableextraction.model.CleanRulings; import com.iqser.red.service.redaction.v1.server.tableextraction.service.RulingCleaningService; @@ -42,15 +45,17 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor public class PdfSegmentationService { + private final RedactionServiceSettings redactionServiceSettings; private final RulingCleaningService rulingCleaningService; private final TableExtractionService tableExtractionService; private final BlockificationService blockificationService; private final ClassificationService classificationService; private final SectionsBuilderService sectionsBuilderService; private final ImageService imageService; + private final TableService tableService; - public Document parseDocument(InputStream documentInputStream, Map> pdfImages) throws IOException { + public Document parseDocument(String dossierId, String fileId, InputStream documentInputStream, Map> pdfImages) throws IOException { PDDocument pdDocument = null; try { @@ -67,6 +72,11 @@ public class PdfSegmentationService { tempFile.setExecutable(true, true); } + Map> pdfTableCells = new HashMap<>(); + if (redactionServiceSettings.isCvServiceEnabled()) { + pdfTableCells = tableService.convertTables(dossierId, fileId); + } + try (var fos = new FileOutputStream(tempFile)) { IOUtils.copy(documentInputStream, fos); @@ -94,12 +104,8 @@ public class PdfSegmentationService { int rotation = pdPage.getRotation(); boolean isRotated = rotation != 0 && rotation != 360; - CleanRulings cleanRulings = rulingCleaningService.getCleanRulings(stripper.getRulings(), stripper.getMinCharWidth(), stripper - .getMaxCharHeight()); - - Page page = blockificationService.blockify(stripper.getTextPositionSequences(), cleanRulings.getHorizontal(), cleanRulings - .getVertical()); - + CleanRulings cleanRulings = rulingCleaningService.getCleanRulings(pdfTableCells.get(pageNumber), stripper.getRulings(), stripper.getMinCharWidth(), stripper.getMaxCharHeight()); + Page page = blockificationService.blockify(stripper.getTextPositionSequences(), cleanRulings.getHorizontal(), cleanRulings.getVertical()); PDRectangle cropbox = pdPage.getCropBox(); float cropboxArea = cropbox.getHeight() * cropbox.getWidth(); @@ -109,7 +115,6 @@ public class PdfSegmentationService { page.setLandscape(isLandscape || isRotated); page.setPageNumber(pageNumber); - tableExtractionService.extractTables(cleanRulings, page); buildPageStatistics(page); increaseDocumentStatistics(page, document); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/TableService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/TableService.java new file mode 100644 index 00000000..658cc6b0 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/TableService.java @@ -0,0 +1,54 @@ +package com.iqser.red.service.redaction.v1.server.segmentation; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; +import com.iqser.red.service.redaction.v1.server.redaction.model.PdfTableCell; +import com.iqser.red.service.redaction.v1.server.redaction.model.table.TableCells; +import com.iqser.red.service.redaction.v1.server.redaction.model.table.TableServiceResponse; +import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TableService { + + private final ObjectMapper objectMapper; + private final RedactionStorageService redactionStorageService; + + + @SneakyThrows + public Map> convertTables(String dossierId, String fileId) { + + var tableClassificationStream = redactionStorageService.getStoredObject(RedactionStorageService.StorageIdUtils.getStorageId(dossierId, fileId, FileType.TABLES)); + + TableServiceResponse tableServiceResponse = objectMapper.readValue(tableClassificationStream, TableServiceResponse.class); + + Map> tableCells = new HashMap<>(); + tableServiceResponse.getData().forEach(tableData -> tableCells.computeIfAbsent(tableData.getPageInfo().getNumber(), tableCell -> new ArrayList<>()).addAll(convertTableCells(tableData.getTableCells()))); + + return tableCells; + } + + + private Collection convertTableCells(List tableCells) { + + List pdfTableCells = new ArrayList<>(); + + tableCells.forEach(t -> pdfTableCells.add(PdfTableCell.builder().y0(t.getY0()).x1(t.getX1()).y1(t.getY1()).x0(t.getX0()).width(t.getWidth()).height(t.getHeight()).build())); + + return pdfTableCells; + } + +} \ No newline at end of file diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java index 07e59d54..210c5768 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java @@ -14,6 +14,8 @@ public class RedactionServiceSettings { private boolean enableImageClassification = true; + private boolean cvServiceEnabled = true; + private float maxImageCropboxRatio = 0.9f; private int analysisVersion = 1; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/service/RulingCleaningService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/service/RulingCleaningService.java index 6f6ea80a..f8447f55 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/service/RulingCleaningService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/service/RulingCleaningService.java @@ -1,18 +1,29 @@ package com.iqser.red.service.redaction.v1.server.tableextraction.service; -import com.iqser.red.service.redaction.v1.server.tableextraction.model.CleanRulings; -import com.iqser.red.service.redaction.v1.server.tableextraction.model.Ruling; -import com.iqser.red.service.redaction.v1.server.tableextraction.utils.Utils; -import org.springframework.stereotype.Service; - import java.awt.geom.Line2D; import java.awt.geom.Point2D; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.redaction.v1.server.redaction.model.PdfTableCell; +import com.iqser.red.service.redaction.v1.server.tableextraction.model.CleanRulings; +import com.iqser.red.service.redaction.v1.server.tableextraction.model.Ruling; +import com.iqser.red.service.redaction.v1.server.tableextraction.utils.Utils; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j @Service public class RulingCleaningService { - public CleanRulings getCleanRulings(List rulings, float minCharWidth, float maxCharHeight) { + public CleanRulings getCleanRulings(List pdfTableCells, List rulings, float minCharWidth, float maxCharHeight) { if (!rulings.isEmpty()) { snapPoints(rulings, minCharWidth, maxCharHeight); @@ -24,6 +35,7 @@ public class RulingCleaningService { vrs.add(vr); } } + vrs.addAll(extractVerticalRulings(pdfTableCells)); List verticalRulingLines = collapseOrientedRulings(vrs); List hrs = new ArrayList<>(); @@ -32,6 +44,7 @@ public class RulingCleaningService { hrs.add(hr); } } + hrs.addAll(extractHorizontalRulings(pdfTableCells)); List horizontalRulingLines = collapseOrientedRulings(hrs); return CleanRulings.builder().vertical(verticalRulingLines).horizontal(horizontalRulingLines).build(); @@ -113,6 +126,39 @@ public class RulingCleaningService { } + private Collection extractVerticalRulings(List pdfTableCells) { + + List vrs = new ArrayList<>(); + + if (pdfTableCells != null) { + for (PdfTableCell pdfTableCell : pdfTableCells) { + Ruling leftLine = new Ruling(new Point2D.Float(pdfTableCell.getX0(), pdfTableCell.getY0()), new Point2D.Float(pdfTableCell.getX0(), pdfTableCell.getY1())); + Ruling rightLine = new Ruling(new Point2D.Float(pdfTableCell.getX1(), pdfTableCell.getY0()), new Point2D.Float(pdfTableCell.getX1(), pdfTableCell.getY1())); + vrs.add(leftLine); + vrs.add(rightLine); + } + } + return vrs; + } + + + private Collection extractHorizontalRulings(List pdfTableCells) { + + List hrs = new ArrayList<>(); + + if (pdfTableCells != null) { + for (PdfTableCell pdfTableCell : pdfTableCells) { + Ruling topLine = new Ruling(new Point2D.Float(pdfTableCell.getX0(), pdfTableCell.getY1()), new Point2D.Float(pdfTableCell.getX1(), pdfTableCell.getY1())); + Ruling baseLine = new Ruling(new Point2D.Float(pdfTableCell.getX0(), pdfTableCell.getY0()), new Point2D.Float(pdfTableCell.getX1(), pdfTableCell.getY0())); + hrs.add(topLine); + hrs.add(baseLine); + } + } + + return hrs; + } + + private List collapseOrientedRulings(List lines) { int COLINEAR_OR_PARALLEL_PIXEL_EXPAND_AMOUNT = 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 fe31be8b..1f32e9be 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 @@ -1,36 +1,29 @@ package com.iqser.red.service.redaction.v1.server; -import com.amazonaws.services.s3.AmazonS3; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.Comment; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.Rectangle; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.*; -import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; -import com.iqser.red.service.redaction.v1.model.*; -import com.iqser.red.service.redaction.v1.server.annotate.AnnotateRequest; -import com.iqser.red.service.redaction.v1.server.annotate.AnnotateResponse; -import com.iqser.red.service.redaction.v1.server.annotate.AnnotationService; -import com.iqser.red.service.redaction.v1.server.classification.model.SectionText; -import com.iqser.red.service.redaction.v1.server.client.DictionaryClient; -import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient; -import com.iqser.red.service.redaction.v1.server.client.RulesClient; -import com.iqser.red.service.redaction.v1.server.controller.RedactionController; -import com.iqser.red.service.redaction.v1.server.redaction.service.AnalyzeService; -import com.iqser.red.service.redaction.v1.server.redaction.service.ManualRedactionSurroundingTextService; -import com.iqser.red.service.redaction.v1.server.redaction.utils.OsUtils; -import com.iqser.red.service.redaction.v1.server.redaction.utils.ResourceLoader; -import com.iqser.red.service.redaction.v1.server.redaction.utils.TextNormalizationUtilities; -import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; -import com.iqser.red.storage.commons.StorageAutoConfiguration; -import com.iqser.red.storage.commons.service.StorageService; -import lombok.SneakyThrows; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + import org.junit.After; import org.junit.Before; import org.junit.Ignore; @@ -55,16 +48,49 @@ import org.springframework.context.annotation.Primary; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; -import java.io.*; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.time.OffsetDateTime; -import java.time.ZoneOffset; -import java.util.*; -import java.util.stream.Collectors; +import com.amazonaws.services.s3.AmazonS3; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.Comment; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.Rectangle; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.IdRemoval; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualForceRedaction; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualImageRecategorization; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualLegalBasisChange; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualRedactionEntry; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualResizeRedaction; +import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; +import com.iqser.red.service.redaction.v1.model.AnalyzeRequest; +import com.iqser.red.service.redaction.v1.model.AnalyzeResult; +import com.iqser.red.service.redaction.v1.model.FileAttribute; +import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; +import com.iqser.red.service.redaction.v1.model.RedactionRequest; +import com.iqser.red.service.redaction.v1.model.RedactionResult; +import com.iqser.red.service.redaction.v1.model.StructureAnalyzeRequest; +import com.iqser.red.service.redaction.v1.server.annotate.AnnotateRequest; +import com.iqser.red.service.redaction.v1.server.annotate.AnnotateResponse; +import com.iqser.red.service.redaction.v1.server.annotate.AnnotationService; +import com.iqser.red.service.redaction.v1.server.classification.model.SectionText; +import com.iqser.red.service.redaction.v1.server.client.DictionaryClient; +import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient; +import com.iqser.red.service.redaction.v1.server.client.RulesClient; +import com.iqser.red.service.redaction.v1.server.controller.RedactionController; +import com.iqser.red.service.redaction.v1.server.redaction.service.AnalyzeService; +import com.iqser.red.service.redaction.v1.server.redaction.service.ManualRedactionSurroundingTextService; +import com.iqser.red.service.redaction.v1.server.redaction.utils.OsUtils; +import com.iqser.red.service.redaction.v1.server.redaction.utils.ResourceLoader; +import com.iqser.red.service.redaction.v1.server.redaction.utils.TextNormalizationUtilities; +import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; +import com.iqser.red.storage.commons.StorageAutoConfiguration; +import com.iqser.red.storage.commons.service.StorageService; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; +import lombok.SneakyThrows; @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -268,9 +294,8 @@ public class RedactionIntegrationTest { public void testMergedImages() throws IOException { long start = System.currentTimeMillis(); - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/merge_images.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Minimal Examples/merge_images.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -313,8 +338,7 @@ public class RedactionIntegrationTest { // F. Lastname, J. Doe, M. Mustermann // Lastname M., Doe J., Mustermann M. - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/ExpansionTest.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Minimal Examples/ExpansionTest.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -334,8 +358,7 @@ public class RedactionIntegrationTest { @Test public void titleExtraction() throws IOException { - ClassPathResource pdfFileResource = new ClassPathResource("files/RSS/32 - Emamectin Benzoate Technical - Acute Oral Toxicity - Mouse.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/RSS/32 - Emamectin Benzoate Technical - Acute Oral Toxicity - Mouse.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -367,8 +390,7 @@ public class RedactionIntegrationTest { System.out.println("testIgnoreHint"); - ClassPathResource pdfFileResource = new ClassPathResource("files/new/test-ignore-hint.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/new/test-ignore-hint.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); analyzeService.analyze(request); @@ -426,7 +448,7 @@ public class RedactionIntegrationTest { } for (File path : input) { - AnalyzeRequest request = prepareStorage(new FileInputStream((path))); + AnalyzeRequest request = prepareStorage(path.getPath()); System.out.println("Redacting file : " + path.getName()); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); @@ -471,8 +493,7 @@ public class RedactionIntegrationTest { String outputFileName = OsUtils.getTemporaryDirectory() + "/AnnotatedRedactionTestSeparatedRedaction.pdf"; long start = System.currentTimeMillis(); - ClassPathResource pdfFileResource = new ClassPathResource(fileName); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(fileName); request.setExcludedPages(Set.of(1)); request.setFileAttributes(List.of(FileAttribute.builder() @@ -582,8 +603,7 @@ public class RedactionIntegrationTest { String fileName = "files/new/test1S1T1.pdf"; String outputFileName = OsUtils.getTemporaryDirectory() + "/Annotated.pdf"; - ClassPathResource pdfFileResource = new ClassPathResource(fileName); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(fileName); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); analyzeService.analyze(request); @@ -637,8 +657,7 @@ public class RedactionIntegrationTest { storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.NER_ENTITIES), responseJson.getInputStream()); long start = System.currentTimeMillis(); - ClassPathResource pdfFileResource = new ClassPathResource(fileName); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(fileName); request.setExcludedPages(Set.of(1)); request.setFileAttributes(List.of(FileAttribute.builder() @@ -836,6 +855,33 @@ public class RedactionIntegrationTest { } + @Test + public void testTableRedactionWithCvTableService() throws IOException { + + long start = System.currentTimeMillis(); + + String fileName = "files/RulesTest/RuleTestDocument.pdf"; + String tableServiceResponseFile = "files/cv_service_response_for_RuleTestDocument.json"; + + AnalyzeRequest request = prepareStorage(fileName, tableServiceResponseFile); + 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 testUnicodeProblem() throws IOException { @@ -1005,7 +1051,7 @@ public class RedactionIntegrationTest { System.out.println("testManualRedaction"); long start = System.currentTimeMillis(); - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Single Table.pdf"); + String pdfFile = "files/Minimal Examples/Single Table.pdf"; ManualRedactions manualRedactions = new ManualRedactions(); @@ -1053,7 +1099,7 @@ public class RedactionIntegrationTest { .page(1) .build())); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(pdfFile); request.setManualRedactions(manualRedactions); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -1094,9 +1140,8 @@ public class RedactionIntegrationTest { public void classificationTest() throws IOException { System.out.println("classificationTest"); - ClassPathResource pdfFileResource = new ClassPathResource("files/RSS/01 - CGA100251 - Acute Oral Toxicity (Up and Down Procedure) - Rat (1).pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/RSS/01 - CGA100251 - Acute Oral Toxicity (Up and Down Procedure) - Rat (1).pdf"); RedactionRequest redactionRequest = RedactionRequest.builder() .dossierId(request.getDossierId()) @@ -1116,9 +1161,8 @@ public class RedactionIntegrationTest { public void sectionsTest() throws IOException { System.out.println("sectionsTest"); - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Single Table.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Minimal Examples/Single Table.pdf"); RedactionRequest redactionRequest = RedactionRequest.builder() .dossierId(request.getDossierId()) @@ -1138,9 +1182,7 @@ public class RedactionIntegrationTest { public void htmlTablesTest() throws IOException { System.out.println("htmlTablesTest"); - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Single Table.pdf"); - - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Minimal Examples/Single Table.pdf"); RedactionRequest redactionRequest = RedactionRequest.builder() .dossierId(request.getDossierId()) @@ -1160,9 +1202,8 @@ public class RedactionIntegrationTest { public void htmlTableRotationTest() throws IOException { System.out.println("htmlTableRotationTest"); - ClassPathResource pdfFileResource = new ClassPathResource("files/Metolachlor/S-Metolachlor_RAR_02_Volume_2_2018-09-06.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Metolachlor/S-Metolachlor_RAR_02_Volume_2_2018-09-06.pdf"); RedactionRequest redactionRequest = RedactionRequest.builder() .dossierId(request.getDossierId()) @@ -1181,9 +1222,7 @@ public class RedactionIntegrationTest { @Test public void phantomCellsDocumentTest() throws IOException { - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Phantom Cells.pdf"); - - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Minimal Examples/Phantom Cells.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -1202,9 +1241,8 @@ public class RedactionIntegrationTest { public void sponsorCompanyTest() throws IOException { long start = System.currentTimeMillis(); - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/sponsor_companies.pdf"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/Minimal Examples/sponsor_companies.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -1228,7 +1266,7 @@ public class RedactionIntegrationTest { @Ignore public void resizeRedactionTest() throws IOException { - ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Single Table.pdf"); + String pdfFile = "files/Minimal Examples/Single Table.pdf"; ManualRedactions manualRedactions = new ManualRedactions(); @@ -1284,7 +1322,7 @@ public class RedactionIntegrationTest { // manualRedactions.getEntriesToAdd().add(manualRedactionEntry); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(pdfFile); request.setManualRedactions(manualRedactions); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -1384,7 +1422,7 @@ public class RedactionIntegrationTest { @Ignore public void testManualSurroundingText() throws IOException { - ClassPathResource pdfFileResource = new ClassPathResource("files/new/S4.pdf"); + String pdfFile = "files/new/S4.pdf"; ManualRedactions manualRedactions = new ManualRedactions(); @@ -1437,7 +1475,7 @@ public class RedactionIntegrationTest { manualRedactions.getEntriesToAdd().add(manualRedactionEntry2); manualRedactions.getEntriesToAdd().add(manualRedactionEntry3); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(pdfFile); request.setManualRedactions(manualRedactions); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); @@ -1791,10 +1829,9 @@ public class RedactionIntegrationTest { public void testImportedRedactions() throws IOException { String outputFileName = OsUtils.getTemporaryDirectory() + "/Annotated.pdf"; - ClassPathResource pdfFileResource = new ClassPathResource("files/ImportedRedactions/RotateTestFile_without_highlights.pdf"); ClassPathResource importedRedactions = new ClassPathResource("files/ImportedRedactions/RotateTestFile_without_highlights.IMPORTED_REDACTIONS.json"); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage("files/ImportedRedactions/RotateTestFile_without_highlights.pdf"); storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.IMPORTED_REDACTIONS), importedRedactions.getInputStream()); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); @@ -1838,8 +1875,7 @@ public class RedactionIntegrationTest { String fileName = "files/mr-mrs.pdf"; String outputFileName = OsUtils.getTemporaryDirectory() + "/Annotated.pdf"; - ClassPathResource pdfFileResource = new ClassPathResource(fileName); - AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + AnalyzeRequest request = prepareStorage(fileName); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); analyzeService.analyze(request); @@ -1866,7 +1902,7 @@ public class RedactionIntegrationTest { @SneakyThrows - private AnalyzeRequest prepareStorage(InputStream stream) { + private AnalyzeRequest prepareStorage(InputStream fileStream, InputStream cvServiceResponseFileStream) { AnalyzeRequest request = AnalyzeRequest.builder() .dossierTemplateId(TEST_DOSSIER_TEMPLATE_ID) @@ -1875,7 +1911,8 @@ public class RedactionIntegrationTest { .lastProcessed(OffsetDateTime.now()) .build(); - storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.ORIGIN), stream); + storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.TABLES), cvServiceResponseFileStream); + storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.ORIGIN), fileStream); return request; @@ -1885,9 +1922,16 @@ public class RedactionIntegrationTest { @SneakyThrows private AnalyzeRequest prepareStorage(String file) { - ClassPathResource pdfFileResource = new ClassPathResource(file); + return prepareStorage(file, "files/cv_service_empty_response.json"); + } - return prepareStorage(pdfFileResource.getInputStream()); + @SneakyThrows + private AnalyzeRequest prepareStorage(String file, String cvServiceResponseFile) { + + ClassPathResource pdfFileResource = new ClassPathResource(file); + ClassPathResource cvServiceResponseFileResource = new ClassPathResource(cvServiceResponseFile); + + return prepareStorage(pdfFileResource.getInputStream(), cvServiceResponseFileResource.getInputStream()); } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RulesTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RulesTest.java index c33dbbbf..43915527 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RulesTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RulesTest.java @@ -555,6 +555,7 @@ public class RulesTest { .lastProcessed(OffsetDateTime.now()) .build(); + storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.TABLES), new ClassPathResource("files/cv_service_empty_response.json").getInputStream()); storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.ORIGIN), stream); return request; diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java index 18307012..86ee900f 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java @@ -20,14 +20,18 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; import com.amazonaws.services.s3.AmazonS3; import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.redaction.v1.server.Application; +import com.iqser.red.service.redaction.v1.server.FileSystemBackedStorageService; import com.iqser.red.service.redaction.v1.server.classification.model.Document; import com.iqser.red.service.redaction.v1.server.classification.service.BlockificationService; import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient; @@ -35,10 +39,13 @@ import com.iqser.red.service.redaction.v1.server.redaction.model.ImageType; import com.iqser.red.service.redaction.v1.server.redaction.model.PdfImage; import com.iqser.red.service.redaction.v1.server.redaction.model.RedRectangle2D; import com.iqser.red.service.redaction.v1.server.redaction.model.image.ImageServiceResponse; +import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; import com.iqser.red.service.redaction.v1.server.tableextraction.model.Cell; import com.iqser.red.service.redaction.v1.server.tableextraction.model.Table; import com.iqser.red.service.redaction.v1.server.tableextraction.service.RulingCleaningService; import com.iqser.red.service.redaction.v1.server.tableextraction.service.TableExtractionService; +import com.iqser.red.storage.commons.StorageAutoConfiguration; +import com.iqser.red.storage.commons.service.StorageService; import lombok.SneakyThrows; @@ -71,13 +78,24 @@ public class PdfSegmentationServiceTest { @MockBean private LegalBasisClient legalBasisClient; + @Autowired + private StorageService storageService; + @Autowired private ObjectMapper objectMapper; - @Configuration - @EnableAutoConfiguration(exclude = { RabbitAutoConfiguration.class}) - public static class TestConfiguration { + private final static String TEST_DOSSIER_ID = "123"; + private final static String TEST_FILE_ID = "123"; + @Configuration + @EnableAutoConfiguration(exclude = { RabbitAutoConfiguration.class, StorageAutoConfiguration.class}) + public static class TestConfiguration { + @Bean + @Primary + public StorageService inmemoryStorage() { + + return new FileSystemBackedStorageService(); + } } @@ -85,6 +103,7 @@ public class PdfSegmentationServiceTest { @SneakyThrows public void testMapping() { + prepareStorage(); ClassPathResource responseJson = new ClassPathResource("files/image_response.json"); ImageServiceResponse imageServiceResponse = objectMapper.readValue(responseJson.getInputStream(), ImageServiceResponse.class); @@ -103,9 +122,10 @@ public class PdfSegmentationServiceTest { @Test public void testPDFSegmentationWithComplexTable() throws IOException { + prepareStorage(); ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Spanning Cells.pdf"); - Document document = pdfSegmentationService.parseDocument(pdfFileResource.getInputStream(), null); + Document document = pdfSegmentationService.parseDocument(TEST_DOSSIER_ID, TEST_FILE_ID, pdfFileResource.getInputStream(), null); assertThat(document.getParagraphs() .stream() .flatMap(paragraph -> paragraph.getTables().stream()) @@ -124,9 +144,10 @@ public class PdfSegmentationServiceTest { @Test public void testTableExtraction() throws IOException { + prepareStorage(); ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Merge Table.pdf"); - Document document = pdfSegmentationService.parseDocument(pdfFileResource.getInputStream(), null); + Document document = pdfSegmentationService.parseDocument(TEST_DOSSIER_ID, TEST_FILE_ID, pdfFileResource.getInputStream(), null); assertThat(document.getParagraphs() .stream() .flatMap(paragraph -> paragraph.getTables().stream()) @@ -162,9 +183,10 @@ public class PdfSegmentationServiceTest { @Test public void testMultiPageMetadataPropagation() throws IOException { + prepareStorage(); ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Merge Multi Page Table.pdf"); - Document document = pdfSegmentationService.parseDocument(pdfFileResource.getInputStream(), null); + Document document = pdfSegmentationService.parseDocument(TEST_DOSSIER_ID, TEST_FILE_ID, pdfFileResource.getInputStream(), null); assertThat(document.getParagraphs() .stream() .flatMap(paragraph -> paragraph.getTables().stream()) @@ -200,9 +222,10 @@ public class PdfSegmentationServiceTest { @Test public void testHeaderCellsForRotatedTable() throws IOException { + prepareStorage(); ClassPathResource pdfFileResource = new ClassPathResource("files/Minimal Examples/Rotated Table Headers.pdf"); - Document document = pdfSegmentationService.parseDocument(pdfFileResource.getInputStream(), null); + Document document = pdfSegmentationService.parseDocument(TEST_DOSSIER_ID, TEST_FILE_ID, pdfFileResource.getInputStream(), null); assertThat(document.getParagraphs() .stream() .flatMap(paragraph -> paragraph.getTables().stream()) @@ -235,4 +258,10 @@ public class PdfSegmentationServiceTest { } + @SneakyThrows + private void prepareStorage() { + + storageService.storeObject(RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.TABLES), new ClassPathResource("files/cv_service_empty_response.json").getInputStream()); + } + } diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/RedactionLog/files/RulesTest/RuleTestDocument.json b/redaction-service-v1/redaction-service-server-v1/src/test/resources/RedactionLog/files/RulesTest/RuleTestDocument.json new file mode 100644 index 00000000..8ebf55d7 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/RedactionLog/files/RulesTest/RuleTestDocument.json @@ -0,0 +1 @@ +{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[{"id":"3f892d90df0a3cb3cbcab48935c44e67","type":"PII","value":"Özgür U. Reyhan","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":378.52798},"width":56.143997,"height":-10.428009,"page":1}],"sectionNumber":5,"textBefore":"923-1101, Japan, JP ","textAfter":" Sude Halide","comments":[],"startOffset":78,"endOffset":93,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"e96fbdf528fb751cf759cd40e954728d","type":"CBI_author","value":"Doe","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":230.2,"y":472.42798},"width":13.336014,"height":-10.428009,"page":1}],"sectionNumber":3,"textBefore":"Slash David Ksenia ","textAfter":" M. Mustermann","comments":[],"startOffset":216,"endOffset":219,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"9dc60f2f06c10b33740a46a51440768e","type":"PII","value":"Xinyi Y. Tao","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":360.128},"width":40.368027,"height":-10.428009,"page":1}],"sectionNumber":5,"textBefore":null,"textAfter":null,"comments":[],"startOffset":115,"endOffset":127,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"3facdde738ebe7181c9489359d936c8e","type":"PII","value":"B. Rahim","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":406.128},"width":30.59999,"height":-10.428009,"page":1}],"sectionNumber":5,"textBefore":null,"textAfter":" C. J.","comments":[],"startOffset":4,"endOffset":12,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"abc9a04339ce3ba71b4ddca2988b76fb","type":"CBI_address","value":"Netherlands","reason":"Address found for non vertebrate study","matchedRule":3,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Text in table","color":[0.8,0.8,0.8],"positions":[{"topLeft":{"x":337.13605,"y":542.328},"width":38.67206,"height":-10.428009,"page":1}],"sectionNumber":2,"textBefore":"7232 CX Warnsveld, ","textAfter":", N","comments":[],"startOffset":296,"endOffset":307,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"67012f64a35979a07d94cfb9529cc10b","type":"PII","value":"David","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":481.628},"width":19.584015,"height":-10.428009,"page":1}],"sectionNumber":3,"textBefore":"1234 with Slash ","textAfter":" Ksenia Doe","comments":[],"startOffset":203,"endOffset":208,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"3fc4319faa6bd6da221f0ed254b9726e","type":"PII","value":"C. J. Alfred","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":396.92798},"width":36.86403,"height":-10.428009,"page":1}],"sectionNumber":5,"textBefore":"B. Rahim ","textAfter":" Naka-27 Aomachi,","comments":[],"startOffset":13,"endOffset":25,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"3e0d4491a6f29fee7f2ff4600a475260","type":"CBI_author","value":"M. Mustermann","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":230.2,"y":463.22797},"width":51.56804,"height":-10.428009,"page":1}],"sectionNumber":3,"textBefore":"David Ksenia Doe ","textAfter":" Ranya Eikenboom","comments":[],"startOffset":220,"endOffset":233,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"00ac3ed9b409f2ed8e9c735d98735011","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":1}],"sectionNumber":46,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"42ad2094f9c5f17fcbe73e8cc268daf5","type":"PII","value":"Naka-27 Aomachi, Nomi, Ishikawa 923-1101, Japan, JP","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":387.72797},"width":179.60017,"height":-10.428009,"page":1}],"sectionNumber":5,"textBefore":"C. J. Alfred ","textAfter":" Özgür U.","comments":[],"startOffset":26,"endOffset":77,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2799b1ba467b5d3b6d9a3e424cbd314c","type":"PII","value":"Sude Halide Nurullah","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":230.2,"y":369.32797},"width":69.75212,"height":-10.428009,"page":1}],"sectionNumber":5,"textBefore":"Özgür U. Reyhan ","textAfter":" Xinyi Y.","comments":[],"startOffset":94,"endOffset":114,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2d9e1b1baaca3fac422c05c0d9721937","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":1}],"sectionNumber":55,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f2e0cd2b8329d310362302aecc40c76c","type":"PII","value":"annotation","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":241.67998,"y":198.63495},"width":42.169907,"height":-11.534973,"page":1}],"sectionNumber":9,"textBefore":"effect or their ","textAfter":" types change","comments":[],"startOffset":675,"endOffset":685,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"0cce1d703a23b8a9f3470ee95948295b","type":"CBI_author","value":"Doe J.","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Last Update: 28-01-2022","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":126.076,"y":670.742},"width":30.58799,"height":-12.641998,"page":2}],"sectionNumber":10,"textBefore":"Mustermann Lastname M., ","textAfter":", Mustermann M.","comments":[],"startOffset":123,"endOffset":129,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d8b821220916bf878bf818e445f9978a","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":2}],"sectionNumber":56,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"6c70f9625a77d4e2f3556533a5dad338","type":"CBI_author","value":"Doe","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Last Update: 28-01-2022","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":131.776,"y":684.54205},"width":20.003998,"height":-12.641998,"page":2}],"sectionNumber":10,"textBefore":"F. Lastname, J. ","textAfter":", M. Mustermann","comments":[],"startOffset":91,"endOffset":94,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"4e7367d93d50d59a78fab69f2d9d6287","type":"CBI_author","value":"Mustermann","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 1/2: Redact CBI Authors based on Dict","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":81.796005,"y":549.442},"width":60.576004,"height":-12.641998,"page":2}],"sectionNumber":11,"textBefore":"David Ksenia Max ","textAfter":" Ranya Eikenboom","comments":[],"startOffset":131,"endOffset":141,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"a2ece335e53d61e7ec4c2a15e39133ff","type":"PII","value":"David","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 1/2: Redact CBI Authors based on Dict","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":56.8,"y":563.242},"width":29.291996,"height":-12.641998,"page":2}],"sectionNumber":11,"textBefore":"Study is No ","textAfter":" Ksenia Max","comments":[],"startOffset":114,"endOffset":119,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"db5d1b211384d25764a0ddc2e6008850","type":"CBI_address","value":"Netherlands","reason":"Address found for non vertebrate study","matchedRule":3,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 3/4: Redact (not) CBI Address based on Dict","color":[0.8,0.8,0.8],"positions":[{"topLeft":{"x":217.252,"y":414.34204},"width":57.86403,"height":-12.641998,"page":2}],"sectionNumber":12,"textBefore":"7232 CX Warnsveld, ","textAfter":", NL Institut","comments":[],"startOffset":173,"endOffset":184,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"4d7e41d8f0903ccf13b56b7ddf92447f","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":2}],"sectionNumber":47,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"db853dfd6454a849724b45e764e6bd8c","type":"CBI_author","value":"F. Lastname","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Last Update: 28-01-2022","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":56.8,"y":684.54205},"width":58.295994,"height":-12.641998,"page":2}],"sectionNumber":10,"textBefore":"with firstname initials ","textAfter":", J. Doe,","comments":[],"startOffset":75,"endOffset":86,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"27773fcfa41849cff34a58a64118a486","type":"CBI_author","value":"Mustermann","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Last Update: 28-01-2022","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":162.66399,"y":670.742},"width":60.588013,"height":-12.641998,"page":2}],"sectionNumber":10,"textBefore":"M., Doe J., ","textAfter":" M.","comments":[],"startOffset":131,"endOffset":141,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"dbf9e94b6480fc3f75774d9ed82858cd","type":"CBI_author","value":"M. Mustermann","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Last Update: 28-01-2022","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":157.768,"y":684.54205},"width":77.268005,"height":-12.641998,"page":2}],"sectionNumber":10,"textBefore":"Lastname, J. Doe, ","textAfter":" Lastname M.,","comments":[],"startOffset":96,"endOffset":109,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"24dc761e44c38b5879b6d52f4aaa5cd5","type":"CBI_author","value":"Lastname","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Last Update: 28-01-2022","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":56.8,"y":670.742},"width":46.595997,"height":-12.641998,"page":2}],"sectionNumber":10,"textBefore":"Doe, M. Mustermann ","textAfter":" M., Doe","comments":[],"startOffset":110,"endOffset":118,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"8887c35a097727ec08fdd93f51b51151","type":"CBI_author","value":"Desiree","reason":"Author found","matchedRule":14,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 14/15: Redact and add recommendation for et al.","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":324.28015,"y":295.84204},"width":36.57602,"height":-12.642029,"page":3}],"sectionNumber":21,"textBefore":"consectetur adipiscing elit ","textAfter":" et al","comments":[],"startOffset":212,"endOffset":219,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"6297da8bcb4ad9fda3729af2bfd0aa61","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":3}],"sectionNumber":48,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"b6bcc107fac241a5c2a063e88a65d268","type":"CBI_author","value":"Desiree","reason":"Author found","matchedRule":14,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 14/15: Redact and add recommendation for et al.","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":115.27,"y":308.13498},"width":30.700005,"height":-11.535004,"page":3}],"sectionNumber":21,"textBefore":"Redact Term “","textAfter":"”, “Melanie” and","comments":[],"startOffset":66,"endOffset":73,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"833634063294adb5597f010384350e9a","type":"vertebrate","value":"mouse","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 16/17: Add recommendation for Addresses in Test Organism/Animals\nsections","color":[1.0,0.52156866,0.96862745],"positions":[{"topLeft":{"x":318.60403,"y":169.94202},"width":32.603973,"height":-12.642029,"page":3}],"sectionNumber":22,"textBefore":null,"textAfter":null,"comments":[],"startOffset":325,"endOffset":330,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"8e794918f00108e6f4b91f547d961b1e","type":"CBI_author","value":"Melanie","reason":"Author found","matchedRule":14,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 14/15: Redact and add recommendation for et al.","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":162.12,"y":308.13498},"width":32.710007,"height":-11.535004,"page":3}],"sectionNumber":21,"textBefore":"Term “Desiree”, “","textAfter":"” and add","comments":[],"startOffset":77,"endOffset":84,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"17617db6d127ba54c35b047312b8a242","type":"CBI_author","value":"Melanie","reason":"Author found","matchedRule":14,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 14/15: Redact and add recommendation for et al.","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":214.66,"y":282.04205},"width":39.300003,"height":-12.642029,"page":3}],"sectionNumber":21,"textBefore":"dolore magna aliqua ","textAfter":" et al.","comments":[],"startOffset":292,"endOffset":299,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"fe6934fd66e2c5b3440667157d050d19","type":"CBI_author","value":"Funnarie B.","reason":"Author found","matchedRule":6,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 6-11 (Authors Table)","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":140.0,"y":611.81177},"width":49.48651,"height":-11.811752,"page":3}],"sectionNumber":16,"textBefore":null,"textAfter":null,"comments":[],"startOffset":7,"endOffset":18,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f334f16549061c2be9f8c872deb762fa","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":3}],"sectionNumber":57,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"16be7d4927f9b1af67379c7219c340b2","type":"vertebrate","value":"mouse","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 16/17: Add recommendation for Addresses in Test Organism/Animals\nsections","color":[1.0,0.52156866,0.96862745],"positions":[{"topLeft":{"x":318.60403,"y":156.14203},"width":32.603973,"height":-12.642029,"page":3}],"sectionNumber":22,"textBefore":null,"textAfter":null,"comments":[],"startOffset":411,"endOffset":416,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"8ec05310090119c656f07ffd7d94ac6a","type":"CBI_author","value":"Feuer A.","reason":"Author found","matchedRule":6,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 6-11 (Authors Table)","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":146.8,"y":582.11176},"width":36.193512,"height":-11.811752,"page":3}],"sectionNumber":17,"textBefore":null,"textAfter":null,"comments":[],"startOffset":6,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"4f1933f160f41958dda3e9c0ad610a22","type":"CBI_author","value":"Michael N.","reason":"Author found","matchedRule":6,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 6-11 (Authors Table)","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":141.2,"y":641.61176},"width":47.197525,"height":-11.811752,"page":3}],"sectionNumber":15,"textBefore":null,"textAfter":null,"comments":[],"startOffset":7,"endOffset":17,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"70002b1808719351098cb56c0cffa2d2","type":"PII","value":"B. Rahim","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 19/20: Redacted PII Personal Identification Information based on Dict","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":56.8,"y":275.44202},"width":45.91199,"height":-12.642029,"page":4}],"sectionNumber":26,"textBefore":"Özgür U. Reyhan ","textAfter":" C. J.","comments":[],"startOffset":235,"endOffset":243,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"91d7be488f4750c1919315b948976949","type":"vertebrate","value":"mouse","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 16/17: (2/2 additional negative test)","color":[1.0,0.52156866,0.96862745],"positions":[{"topLeft":{"x":323.92007,"y":563.242},"width":32.603973,"height":-12.641998,"page":4}],"sectionNumber":24,"textBefore":null,"textAfter":null,"comments":[],"startOffset":195,"endOffset":200,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"fac8e1e43f45f3400bf159a1209fb9be","type":"CBI_author","value":"Liu","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 18: Do not redact Names and Addresses if Published Information\nfound","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":449.4521,"y":410.54202},"width":16.596039,"height":-12.641998,"page":4}],"sectionNumber":25,"textBefore":"Zhou Mah, Ning ","textAfter":", Lei W.","comments":[],"startOffset":507,"endOffset":510,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"e833fe4d029f8a7313f9e327bae3041f","type":"PII","value":"Sude Halide Nurullah","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 19/20: Redacted PII Personal Identification Information based on Dict","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":56.8,"y":303.04202},"width":104.556015,"height":-12.641998,"page":4}],"sectionNumber":26,"textBefore":"923-1101, Japan, JP ","textAfter":" Özgür U.","comments":[],"startOffset":198,"endOffset":218,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"54455adb2e93a9579e4a4e0f57b51e23","type":"PII","value":"dinther@comcast.net","reason":"Personal information found","matchedRule":21,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 21/22: Redact Emails by RegEx","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":333.89212,"y":140.34204},"width":101.98816,"height":-12.642029,"page":4}],"sectionNumber":27,"textBefore":"pariatur. Excepteur sint ","textAfter":" occaecat cupidatat","comments":[],"startOffset":262,"endOffset":281,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"6ae6aa77c3d579e0a6352f561782328e","type":"CBI_author","value":"Wong","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 18: Do not redact Names and Addresses if Published Information\nfound","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":269.51196,"y":410.54202},"width":28.29602,"height":-12.641998,"page":4}],"sectionNumber":25,"textBefore":"Jun K., Tu ","textAfter":", Qiang Suen,","comments":[],"startOffset":474,"endOffset":478,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"66ae3415158458d6441c158233115b29","type":"PII","value":"Xinyi Y. Tao","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 19/20: Redacted PII Personal Identification Information based on Dict","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":56.8,"y":247.84204},"width":60.599987,"height":-12.642029,"page":4}],"sectionNumber":26,"textBefore":"C. J. Alfred ","textAfter":" Clara Siegfried","comments":[],"startOffset":257,"endOffset":269,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"eaaa9c788fae545476d2362709b5229f","type":"PII","value":"gordonjcp@msn.com","reason":"Personal information found","matchedRule":21,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 21/22: Redact Emails by RegEx","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":404.96823,"y":154.14203},"width":103.308075,"height":-12.642029,"page":4}],"sectionNumber":27,"textBefore":"reprehenderit in voluptate ","textAfter":" velit esse","comments":[],"startOffset":178,"endOffset":195,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"642de2d42c17f479ab0100ba9e0d7211","type":"CBI_author","value":"Huang","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 18: Do not redact Names and Addresses if Published Information\nfound","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":507.04016,"y":410.54202},"width":31.991943,"height":-12.641998,"page":4}],"sectionNumber":25,"textBefore":"Liu, Lei W. ","textAfter":", Ru X.","comments":[],"startOffset":519,"endOffset":524,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2403ebe01706722932fd5338e2a19adc","type":"CBI_author","value":"Wu","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 18: Do not redact Names and Addresses if Published Information\nfound","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":88.192,"y":396.74203},"width":16.800003,"height":-12.641998,"page":4}],"sectionNumber":25,"textBefore":"Huang, Ru X. ","textAfter":null,"comments":[],"startOffset":532,"endOffset":534,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5ec0f82007c5cf97728aa5bf53d65d88","type":"PII","value":"Özgür U. Reyhan","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 19/20: Redacted PII Personal Identification Information based on Dict","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":56.8,"y":289.242},"width":84.192,"height":-12.642029,"page":4}],"sectionNumber":26,"textBefore":"Sude Halide Nurullah ","textAfter":" B. Rahim","comments":[],"startOffset":219,"endOffset":234,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"a333cf8c030fcb589dbb42139b4776d2","type":"PII","value":"library@outlook.com","reason":"Personal information found","matchedRule":21,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 21/22: Redact Emails by RegEx","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":171.748,"y":154.14203},"width":103.296036,"height":-12.642029,"page":4}],"sectionNumber":27,"textBefore":"irure dolor in ","textAfter":" reprehenderit in","comments":[],"startOffset":131,"endOffset":150,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"1ff7d70f6b9ca415b3ac2ac7b090ad19","type":"vertebrate","value":"mouse","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 16/17: (2/2 additional negative test)","color":[1.0,0.52156866,0.96862745],"positions":[{"topLeft":{"x":336.9161,"y":577.04205},"width":32.603973,"height":-12.641998,"page":4}],"sectionNumber":24,"textBefore":null,"textAfter":null,"comments":[],"startOffset":111,"endOffset":116,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"609b466f0960f9ea5aa6d19e0d9de5bc","type":"PII","value":"Naka-27 Aomachi, Nomi, Ishikawa 923-1101, Japan, JP","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 19/20: Redacted PII Personal Identification Information based on Dict","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":56.8,"y":316.84204},"width":269.37607,"height":-12.641998,"page":4}],"sectionNumber":26,"textBefore":"Study is No ","textAfter":" Sude Halide","comments":[],"startOffset":146,"endOffset":197,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"0e72674bb524dff6c1d9e63f164a070b","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":4}],"sectionNumber":58,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"19cbb3c4ef9f60dde6a10bfd21519822","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":4}],"sectionNumber":49,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"81d1f223b94cad1e276db7fb89dfbbb7","type":"PII","value":"kawasaki@me.com","reason":"Personal information found","matchedRule":21,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 21/22: Redact Emails by RegEx","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":138.06398,"y":126.54205},"width":93.99602,"height":-12.642029,"page":4}],"sectionNumber":27,"textBefore":"proident, sunt in ","textAfter":" culpa qui","comments":[],"startOffset":323,"endOffset":338,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"ff168dd37faf15c0d25a08b3b07618ad","type":"PII","value":"+274 1432 8990","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":356.75204,"y":325.2815},"width":58.995026,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"8991 Fax number: ","textAfter":" Telephone: +274","comments":[],"startOffset":590,"endOffset":604,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"246c8e170ed5e557bc824538a6c404c8","type":"PII","value":"Seriknowmobil@co.uk","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":337.94205,"y":397.7815},"width":83.52905,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"6653 44563 E-mail: ","textAfter":" Email: maximiliamschmitt@arcor.de","comments":[],"startOffset":365,"endOffset":384,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"dc60967f50c70165eccc81dffc4883ed","type":"PII","value":"493 1223 4592","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":341.44302,"y":294.2815},"width":53.991028,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"1432 8933 Contact: ","textAfter":" European contact:","comments":[],"startOffset":664,"endOffset":677,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d28193181151c022a93e21df3c15450d","type":"PII","value":"+27414328992","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":380.51205,"y":345.9815},"width":54.593994,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"Schmitt Telephone number: ","textAfter":" Telephone No:","comments":[],"startOffset":536,"endOffset":548,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"a78592923d5bfd382021b2c72f46b6db","type":"PII","value":"maximiliamschmitt@arcor.de","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":334.94504,"y":387.3815},"width":106.83017,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"E-mail: Seriknowmobil@co.uk Email: ","textAfter":" e-mail: maximiliamschmitt@t-online.de","comments":[],"startOffset":392,"endOffset":418,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"cc508b48ace514fb1d89ee30ae579515","type":"PII","value":"+49 2113 2311 560","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":326.98,"y":428.7815},"width":69.68704,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"2311 563 Fax: ","textAfter":" Tel.: +81","comments":[],"startOffset":299,"endOffset":316,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"815ad6c1369cbc76c97f4dd571db1aaa","type":"PII","value":"\")","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":490.14966,"y":705.9678},"width":11.378723,"height":-13.867798,"page":5}],"sectionNumber":31,"textBefore":"(contains \"Contact point:","textAfter":" Redact when","comments":[],"startOffset":64,"endOffset":66,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"4e14fac8a5c5ab0815a865b56911e21a","type":"PII","value":"Central Research Industry","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":362.22406,"y":449.4815},"width":93.77109,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"Contact point: ","textAfter":" Phone: +49","comments":[],"startOffset":243,"endOffset":268,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d0ed11f040c2f826f5749b5e7202dd6e","type":"PII","value":"Emilia Lockhart","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":382.0601,"y":273.58148},"width":58.69806,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"Institute Alternative contact: ","textAfter":" Alternative contact:","comments":[],"startOffset":744,"endOffset":759,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2184ead9005dd1eae2ff8fd837c4af34","type":"PII","value":"Tiffany Umbrella","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":636.142},"width":83.592026,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"Organisation Contact point: ","textAfter":" Address: Goldstreet","comments":[],"startOffset":229,"endOffset":245,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f9917442aab38edae9ff7e7cba1f9fff","type":"PII","value":"+55 1221 3431 13","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":525.742},"width":87.696,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"be redacted Tel.: ","textAfter":" No: This","comments":[],"startOffset":463,"endOffset":479,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d380934c73ae7308cc323de5047f4290","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":5}],"sectionNumber":50,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"0380dfce74e985ef7b1d2925d929b876","type":"PII","value":"+55 1221 3431 12","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":594.742},"width":87.696,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"TX, USA Phone: ","textAfter":" Fax: +55","comments":[],"startOffset":291,"endOffset":307,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"7d8ac49d19e251ddb66e4fc4db0d77ab","type":"PII","value":"European Central Institute","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":376.09305,"y":283.88153},"width":94.86011,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"4592 European contact: ","textAfter":" Alternative contact:","comments":[],"startOffset":696,"endOffset":722,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"9f495fa016bc9c35dffcc5e82c3ca8e7","type":"PII","value":"This is a special case, everything between this and the next keyword should be redacted","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":511.94202},"width":282.74426,"height":-12.641998,"page":5},{"topLeft":{"x":164.8,"y":498.14203},"width":134.86809,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"3431 13 No: ","textAfter":" Fax +55","comments":[],"startOffset":484,"endOffset":571,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d13068e99bcc2ff34f56ac3e34009468","type":"PII","value":"+274 1432 8991","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":364.03302,"y":335.68152},"width":59.085022,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"+27414328992 Telephone No: ","textAfter":" Fax number:","comments":[],"startOffset":563,"endOffset":577,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"4c608a4d397ba804d5c2dcbe57095a76","type":"PII","value":"+81 6653 44563","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":324.86502,"y":408.0815},"width":59.085022,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"+81 764770164 Tel: ","textAfter":" E-mail: Seriknowmobil@co.uk","comments":[],"startOffset":342,"endOffset":356,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"3153ab17735fb1480023616a2d4b1f32","type":"PII","value":"+49 2113 2311 563","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":335.98,"y":439.18152},"width":69.68704,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"Research Industry Phone: ","textAfter":" Fax: +49","comments":[],"startOffset":276,"endOffset":293,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5b53b5ca19ed17ba8cd472046b7e458b","type":"PII","value":"+81 764770164","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":327.06104,"y":418.4815},"width":56.889008,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"2311 560 Tel.: ","textAfter":" Tel: +81","comments":[],"startOffset":323,"endOffset":336,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"e042c6782e2377a8550e970240199d3c","type":"PII","value":"+55 1221 3431 10","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":580.942},"width":87.696,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"3431 12 Fax: ","textAfter":" E-mail: shinrorg@saopu.com.br","comments":[],"startOffset":313,"endOffset":329,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"ef878a3130faf98786f7f1c094cc6291","type":"PII","value":"Maximiliam Schmitt","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":341.44302,"y":356.3815},"width":74.59213,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"address: example@mail.com Contact: ","textAfter":" Telephone number:","comments":[],"startOffset":499,"endOffset":517,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"7b688df64aeaa8e0c5397ccce900ad8e","type":"PII","value":"example@mail.com","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":367.21008,"y":366.68152},"width":72.387085,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"maximiliamschmitt@t-online.de E-mail address: ","textAfter":" Contact: Maximiliam","comments":[],"startOffset":473,"endOffset":489,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5fbf0854b5eb5323b00c62e3225a72d2","type":"PII","value":"+274 34223331","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":350.83902,"y":314.9815},"width":56.79901,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"1432 8990 Telephone: ","textAfter":" Phone No.","comments":[],"startOffset":616,"endOffset":629,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2f429d40393e13a0a09e239d0edeb077","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":5}],"sectionNumber":59,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f3453d204608b10d7da846f4b37e63bb","type":"PII","value":"This is a special case, everything between this and the next keyword should be redacted","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":553.34204},"width":282.74426,"height":-12.641998,"page":5},{"topLeft":{"x":164.8,"y":539.54205},"width":134.86809,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"E-mail: shinrorg@saopu.com.br Contact: ","textAfter":" Tel.: +55","comments":[],"startOffset":369,"endOffset":456,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"e86311e6c9d1b67b77a60cb634ede133","type":"PII","value":"maximiliamschmitt@t-online.de","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":336.43906,"y":377.0815},"width":116.82919,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"Email: maximiliamschmitt@arcor.de e-mail: ","textAfter":" E-mail address:","comments":[],"startOffset":427,"endOffset":456,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"07a7c30427db240349e35e7d404a9023","type":"PII","value":"shinrorg@saopu.com.br","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":567.142},"width":115.38002,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"3431 10 E-mail: ","textAfter":" Contact: This","comments":[],"startOffset":338,"endOffset":359,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"cd44d6a63f6d16f3f0bbe645e91e303c","type":"PII","value":"+55 1221 3431 14","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":484.34204},"width":87.696,"height":-12.641998,"page":5}],"sectionNumber":31,"textBefore":"be redacted Fax ","textAfter":null,"comments":[],"startOffset":576,"endOffset":592,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"bb5f81c67caad62f328729fddf91ed01","type":"PII","value":"+274 1432 8933","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 23/24: Redact contact information (contains \"Contact point:\")","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":348.976,"y":304.5815},"width":59.085022,"height":-10.981506,"page":5}],"sectionNumber":29,"textBefore":"34223331 Phone No. ","textAfter":" Contact: 493","comments":[],"startOffset":640,"endOffset":654,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5d5882a7a361fe926aad1c6571f8ab32","type":"PII","value":"+27414328992","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":380.51205,"y":288.38153},"width":54.593994,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"Schmitt Telephone number: ","textAfter":" Telephone No:","comments":[],"startOffset":536,"endOffset":548,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"c9edcd1ee08ba4857bce5122fdb9ede0","type":"PII","value":"+82 122 341881","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":468.14203},"width":78.696,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"be redacted Tel.: ","textAfter":" No: This","comments":[],"startOffset":487,"endOffset":501,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"8d127621a973c216cc2f682ced59348c","type":"PII","value":"This is a special case, everything between this and the next keyword should be redacted","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":495.74203},"width":282.74426,"height":-12.641998,"page":6},{"topLeft":{"x":164.8,"y":481.94202},"width":134.86809,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"E-mail: food-industry@korea.com Contact: ","textAfter":" Tel.: +82","comments":[],"startOffset":393,"endOffset":480,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"205b6a821d3a98f860be1f1b5b3966b1","type":"PII","value":"maximiliamschmitt@arcor.de","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":334.94504,"y":329.7815},"width":106.83017,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"E-mail: Seriknowmobil@co.uk Email: ","textAfter":" e-mail: maximiliamschmitt@t-online.de","comments":[],"startOffset":392,"endOffset":418,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"21c5ef2b79a90118b01d766d0177a570","type":"PII","value":"Seriknowmobil@co.uk","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":337.94205,"y":340.18152},"width":83.52905,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"6653 44563 E-mail: ","textAfter":" Email: maximiliamschmitt@arcor.de","comments":[],"startOffset":365,"endOffset":384,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"a1c4bee8f2c7ddc33d1269c31f199f34","type":"PII","value":"food-industry@korea.com","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":509.54202},"width":126.60005,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"122 34180 E-mail: ","textAfter":" Contact: This","comments":[],"startOffset":360,"endOffset":383,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2206b5d18ef3649095d6a8285e8ae510","type":"PII","value":"Riddley Scott","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":592.34204},"width":65.59201,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"Name: Contact point: ","textAfter":" Address: 1921","comments":[],"startOffset":236,"endOffset":249,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"baac21659a54cf4b88fecfe9488afe23","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":6}],"sectionNumber":60,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"1b4eef48b210325f06cf01d94713dfd7","type":"PII","value":"+274 1432 8991","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":364.03302,"y":278.08148},"width":59.085022,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"+27414328992 Telephone No: ","textAfter":" Fax number:","comments":[],"startOffset":563,"endOffset":577,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"fd1d606f56794e69fbff6cafdd9154cf","type":"PII","value":"+49 2113 2311 560","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":326.98,"y":371.18152},"width":69.68704,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"2311 563 Fax: ","textAfter":" Tel.: +81","comments":[],"startOffset":299,"endOffset":316,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"ae1e4fbff581a186835d36314ee9f0ed","type":"PII","value":"493 1223 4592","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":341.44302,"y":236.68152},"width":53.991028,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"1432 8933 Contact: ","textAfter":" European contact:","comments":[],"startOffset":664,"endOffset":677,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"ae077687502a3c885da266009553a68e","type":"PII","value":"+81 6653 44563","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":324.86502,"y":350.4815},"width":59.085022,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"+81 764770164 Tel: ","textAfter":" E-mail: Seriknowmobil@co.uk","comments":[],"startOffset":342,"endOffset":356,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"742e2158a0b7b60c902cc7f806449d77","type":"PII","value":"+49 2113 2311 563","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":335.98,"y":381.5815},"width":69.68704,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"Research Industry Phone: ","textAfter":" Fax: +49","comments":[],"startOffset":276,"endOffset":293,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"4be04321c91b114817b4657c97eddac5","type":"PII","value":"+81 764770164","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":327.06104,"y":360.8815},"width":56.889008,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"2311 560 Tel.: ","textAfter":" Tel: +81","comments":[],"startOffset":323,"endOffset":336,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5a4aabf909f10663376805a573efe6f9","type":"PII","value":"+274 1432 8990","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":356.75204,"y":267.68152},"width":58.995026,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"8991 Fax number: ","textAfter":" Telephone: +274","comments":[],"startOffset":590,"endOffset":604,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2d8809c60064fc8e389a92409380159d","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":6}],"sectionNumber":51,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d3a8dd3a566cf73b2de375f6476d9270","type":"PII","value":"+82 122 341882","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":426.74203},"width":78.696,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"be redacted Fax ","textAfter":" Soylent Corporation","comments":[],"startOffset":598,"endOffset":612,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5bdc1208d628297939d354f6f12ec1e4","type":"PII","value":"Emilia Lockhart","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":382.0601,"y":215.9815},"width":58.69806,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"Institute Alternative contact: ","textAfter":" Alternative contact:","comments":[],"startOffset":744,"endOffset":759,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"1981e616749716478839f1591021d8d6","type":"PII","value":"+274 34223331","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":350.83902,"y":257.38153},"width":56.79901,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"1432 8990 Telephone: ","textAfter":" Phone No.","comments":[],"startOffset":616,"endOffset":629,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"625a9b1a139f8e5f9061f25dd6062e25","type":"PII","value":"+274 1432 8933","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":348.976,"y":246.9815},"width":59.085022,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"34223331 Phone No. ","textAfter":" Contact: 493","comments":[],"startOffset":640,"endOffset":654,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"c658bcdcbcd8cf678b79cc715c024c70","type":"PII","value":"+82 122 34180","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":523.34204},"width":72.696,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"122 34188 Fax: ","textAfter":" E-mail: food-industry@korea.com","comments":[],"startOffset":338,"endOffset":351,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"e6b4801cb6086d04ed35dea9308461bd","type":"PII","value":"European Central Institute","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":376.09305,"y":226.2815},"width":94.86011,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"4592 European contact: ","textAfter":" Alternative contact:","comments":[],"startOffset":696,"endOffset":722,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"aef1c65f60f29b4bd9cf459baae4c0fc","type":"PII","value":"Central Research Industry","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":362.22406,"y":391.8815},"width":93.77109,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"Contact point: ","textAfter":" Phone: +49","comments":[],"startOffset":243,"endOffset":268,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"302fb6b2a4f2381a6916668abc5ea208","type":"PII","value":"Maximiliam Schmitt","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":341.44302,"y":298.7815},"width":74.59213,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"address: example@mail.com Contact: ","textAfter":" Telephone number:","comments":[],"startOffset":499,"endOffset":517,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"c2d6b072d1f09939693e31c9a7870934","type":"PII","value":"example@mail.com","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":367.21008,"y":309.0815},"width":72.387085,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"maximiliamschmitt@t-online.de E-mail address: ","textAfter":" Contact: Maximiliam","comments":[],"startOffset":473,"endOffset":489,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"32e8c40a25a6cdcf9ddd9fb41c3dc8c8","type":"PII","value":"+82 122 34188","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":537.142},"width":72.696,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"United States Phone: ","textAfter":" Fax: +82","comments":[],"startOffset":319,"endOffset":332,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"9fe9630ad55ae2cf0a480523bacb9291","type":"PII","value":"maximiliamschmitt@t-online.de","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":336.43906,"y":319.4815},"width":116.82919,"height":-10.981506,"page":6}],"sectionNumber":33,"textBefore":"Email: maximiliamschmitt@arcor.de e-mail: ","textAfter":" E-mail address:","comments":[],"startOffset":427,"endOffset":456,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f871e23bc3e9842c0fc966cd28506588","type":"PII","value":"This is a special case, everything between this and the next keyword should be redacted","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 25/26: Redact contact information (contains \"Applicant\" as Headline\nor Text)","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":454.34204},"width":282.74426,"height":-12.641998,"page":6},{"topLeft":{"x":164.8,"y":440.54202},"width":134.86809,"height":-12.641998,"page":6}],"sectionNumber":35,"textBefore":"122 341881 No: ","textAfter":" Fax +82","comments":[],"startOffset":506,"endOffset":593,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f163afe507f0eca1cde5fa049a6c870e","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":7}],"sectionNumber":52,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"3100403a071d59b1232a6af2a629eb36","type":"PII","value":"Dr. Alan Grant","reason":"Author found","matchedRule":27,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 29/30: If \"Authors:\" and \"completion dates\", then redact everything between","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":200.8,"y":351.44202},"width":70.89604,"height":-12.641998,"page":7}],"sectionNumber":38,"textBefore":"Study Report___ AUTHOR(S): ","textAfter":" COMPLETION DATE:","comments":[],"startOffset":179,"endOffset":193,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"093ce96a4bcb6727b53604b8babe447b","type":"PII","value":"+82 122 3418800","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Producer of the plant production","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":541.742},"width":84.696,"height":-12.641998,"page":7}],"sectionNumber":37,"textBefore":"United States Phone: ","textAfter":" Fax: +82","comments":[],"startOffset":137,"endOffset":152,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"2c4dd52bc76fd344ace84ae6847b3a2e","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":7}],"sectionNumber":61,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d38ae3ea2c27b913f64b2bfba2dd9a5e","type":"PII","value":"Dr. Alan Grant","reason":"AUTHOR(S) was found","matchedRule":29,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Rule 31/32: If “Authors:” and “Study Completion Dates”, then redact everything between","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":236.8,"y":202.54205},"width":70.89604,"height":-12.642029,"page":7}],"sectionNumber":39,"textBefore":"Study Report___ AUTHOR(S): ","textAfter":" STUDY COMPLETION","comments":[],"startOffset":185,"endOffset":199,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"311811bb65faed5efcea63e383e3a2c0","type":"PII","value":"Riddley Scott","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Producer of the plant production","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":596.942},"width":65.59201,"height":-12.641998,"page":7}],"sectionNumber":37,"textBefore":"Name: Contact point: ","textAfter":" Address: 1921","comments":[],"startOffset":54,"endOffset":67,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"cb37681bb320742607952d991de68112","type":"PII","value":"This is a special case, everything between this and the next keyword should be redacted","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Producer of the plant production","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":500.34204},"width":282.74426,"height":-12.641998,"page":7},{"topLeft":{"x":164.8,"y":486.54202},"width":134.86809,"height":-12.641998,"page":7}],"sectionNumber":37,"textBefore":"E-mail: pharma-industry@korea.com No: ","textAfter":" Fax +82","comments":[],"startOffset":212,"endOffset":299,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"ed6bb0ba9e6af7a7c099290445284253","type":"PII","value":"+82 122 34188202","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Producer of the plant production","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":472.74203},"width":90.696,"height":-12.641998,"page":7}],"sectionNumber":37,"textBefore":"be redacted Fax ","textAfter":" Soylent Corporation","comments":[],"startOffset":304,"endOffset":320,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"bc2149a4d01684aa641113b503791d7f","type":"PII","value":"pharma-industry@korea.com","reason":"Personal information found","matchedRule":23,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Producer of the plant production","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":514.142},"width":140.59209,"height":-12.641998,"page":7}],"sectionNumber":37,"textBefore":"122 3418001 E-mail: ","textAfter":" No: This","comments":[],"startOffset":182,"endOffset":207,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"ef4b197ffcb3a9c1b997fd1b8bae05af","type":"PII","value":"+82 122 3418001","reason":"Personal information found","matchedRule":25,"rectangle":false,"legalBasis":"Article 39(e)(2) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Producer of the plant production","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":164.8,"y":527.942},"width":84.696,"height":-12.641998,"page":7}],"sectionNumber":37,"textBefore":"122 3418800 Fax: ","textAfter":" E-mail: pharma-industry@korea.com","comments":[],"startOffset":158,"endOffset":173,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"3b9c4170922e41e676ec48897cce5b37","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":313.14203},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":145,"endOffset":152,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"fc2f594f0210f378c9d650259390154c","type":"hint_only","value":"Purity","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":216.54205},"width":28.595997,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":911,"endOffset":917,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"e167e11306c648b1a070a9413aee440d","type":"CBI_address","value":"Umbrella Corporation","reason":"Performing laboratory found for non vertebrate study","matchedRule":31,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 33/34: If \"Performing Lab\" and \"Lab Project ID\", then Redact everything between","color":[0.8,0.8,0.8],"positions":[{"topLeft":{"x":236.8,"y":633.84204},"width":106.16414,"height":-12.641998,"page":8}],"sectionNumber":40,"textBefore":"Report___ PERFORMING LABORATORY: ","textAfter":" LABORATORY PROJECT","comments":[],"startOffset":197,"endOffset":217,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"17c8ff8d8b187247265974a95e546417","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":423.54202},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":81,"endOffset":88,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5c7d37dc68c2e430fd385c843685de09","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":354.54202},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":121,"endOffset":128,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"5f615a441c06436e5969a721c7e91fce","type":"hint_only","value":"Purity","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":115.6,"y":484.0678},"width":39.91709,"height":-13.867798,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":9,"endOffset":15,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"02702fc1eb5e537743040bc393a57d15","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":340.74203},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":129,"endOffset":136,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d1d28b8aa21c2fa5feed61fef21711ce","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":271.742},"width":32.603992,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":169,"endOffset":176,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"9805999225048a7f792d0c10b2ea5e9a","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":382.14203},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":105,"endOffset":112,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"67508a836a298ca3b7813e8add65f5e0","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":257.94202},"width":32.603992,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":177,"endOffset":184,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"70c6afb363ae2bc5a7dffb5f41fca5d0","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":368.34204},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":113,"endOffset":120,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f138fbca1ce8390d825310909a0f33f8","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":216.54205},"width":31.919994,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":939,"endOffset":946,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d94bf1b70cfcb05ecb00994cc5abc890","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":8}],"sectionNumber":62,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"f784db38199421e8e4efaa3760158a48","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":299.34204},"width":32.603992,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":153,"endOffset":160,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"52f7f3d787b3bfd33da99c5b88a8f7f1","type":"hint_only","value":"purity","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":409.74203},"width":29.279995,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":967,"endOffset":973,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"93526b30f5b480d63053e906a5cd41c7","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":409.74203},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":89,"endOffset":96,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"af1ea16a7b8490984fb2b214af361a37","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":285.54205},"width":32.603992,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":161,"endOffset":168,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"161c4e3da3f995172904dc30843a60ac","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":8}],"sectionNumber":53,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"67afe24c7ea99e2632ac20f9bf52d3e0","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":395.94202},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":97,"endOffset":104,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"d5efc15fc3f6f837256f9a8d57abfd34","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":326.94202},"width":32.603992,"height":-12.641998,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":137,"endOffset":144,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"6fd49ce3f10affe57d24f67f206a4f10","type":"hint_only","value":"Purity","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":75.4,"y":463.43497},"width":24.909988,"height":-11.535004,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":25,"endOffset":31,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"204ef9a3c762a1283d5ef83c6c0b3410","type":"hint_only","value":"Purity:","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"Rule 39: Purity Hint","color":[0.67058825,0.7529412,0.76862746],"positions":[{"topLeft":{"x":56.8,"y":230.34204},"width":31.919994,"height":-12.642029,"page":8}],"sectionNumber":42,"textBefore":null,"textAfter":null,"comments":[],"startOffset":877,"endOffset":884,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["RULE"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":true,"falsePositive":false,"image":false,"dictionaryEntry":false,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"688b8e499afb958699834482b6c38323","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":734.742},"width":23.304,"height":-12.641998,"page":9}],"sectionNumber":54,"textBefore":"This is a ","textAfter":"-Header","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false},{"id":"8fafcbefac14ac6b258d4ee07c7a0954","type":"PII","value":"Page","reason":"Personal information found","matchedRule":19,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Footer","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":100.383995,"y":69.94202},"width":23.304,"height":-12.642029,"page":9}],"sectionNumber":63,"textBefore":"This is a ","textAfter":"-Footer","comments":[],"startOffset":10,"endOffset":14,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":"2022-10-05T15:31:55.0815868+02:00"}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"localManualRedaction":false,"recommendation":false,"hint":false,"falsePositive":false,"image":false,"dictionaryEntry":true,"dossierDictionaryEntry":false,"manuallyRemoved":false}],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0} \ No newline at end of file diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/RulesTest/RuleTestDocument.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/RulesTest/RuleTestDocument.pdf new file mode 100644 index 00000000..a5712b56 Binary files /dev/null and b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/RulesTest/RuleTestDocument.pdf differ diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/cv_service_empty_response.json b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/cv_service_empty_response.json new file mode 100644 index 00000000..d7f02e81 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/cv_service_empty_response.json @@ -0,0 +1,8 @@ +{ + "dossierId": "123", + "fileId": "123", + "operation": "table", + "targetFileExtension": "ORIGIN.pdf.gz", + "responseFileExtension": "TABLES.json.gz", + "data": [] +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/cv_service_response_for_RuleTestDocument.json b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/cv_service_response_for_RuleTestDocument.json new file mode 100644 index 00000000..f20237f7 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/cv_service_response_for_RuleTestDocument.json @@ -0,0 +1,102 @@ +{ + "dossierId": "123", + "fileId": "123", + "operation": "table", + "targetFileExtension": "ORIGIN.pdf.gz", + "responseFileExtension": "TABLES.json.gz", + "data": [{ + "pageInfo": { + "number": 2, + "rotation": 0, + "width": 612.0, + "height": 792.0 + }, + "tableCells": [{ + "x0": 57.24, + "y0": 130.68, + "x1": 200.88, + "y1": 147.96, + "width": 143.64, + "height": 17.28 + }, { + "x0": 201.24, + "y0": 130.68, + "x1": 455.76, + "y1": 147.96, + "width": 254.51999999999998, + "height": 17.28 + }, { + "x0": 456.12, + "y0": 130.68, + "x1": 555.84, + "y1": 147.96, + "width": 99.72000000000003, + "height": 17.28 + }, { + "x0": 57.24, + "y0": 148.32, + "x1": 200.88, + "y1": 177.48, + "width": 143.64, + "height": 29.159999999999997 + }, { + "x0": 201.24, + "y0": 148.32, + "x1": 455.76, + "y1": 177.48, + "width": 254.51999999999998, + "height": 29.159999999999997 + }, { + "x0": 456.12, + "y0": 148.32, + "x1": 555.84, + "y1": 177.48, + "width": 99.72000000000003, + "height": 29.159999999999997 + }, { + "x0": 57.24, + "y0": 177.84, + "x1": 200.88, + "y1": 207.35999999999999, + "width": 143.64, + "height": 29.519999999999982 + }, { + "x0": 201.24, + "y0": 177.84, + "x1": 455.76, + "y1": 207.35999999999999, + "width": 254.51999999999998, + "height": 29.519999999999982 + }, { + "x0": 456.12, + "y0": 177.84, + "x1": 555.84, + "y1": 207.35999999999999, + "width": 99.72000000000003, + "height": 29.519999999999982 + }, { + "x0": 57.24, + "y0": 207.71999999999997, + "x1": 200.88, + "y1": 237.24, + "width": 143.64, + "height": 29.52000000000004 + }, { + "x0": 201.24, + "y0": 207.71999999999997, + "x1": 455.76, + "y1": 237.24, + "width": 254.51999999999998, + "height": 29.52000000000004 + }, { + "x0": 456.12, + "y0": 207.71999999999997, + "x1": 555.84, + "y1": 237.24, + "width": 99.72000000000003, + "height": 29.52000000000004 + } + ] + } + ] +}