RED-4510: Added generated RedactionLog Json files and optimizations for RulesTest.java for Bamboo

This commit is contained in:
Philipp Schramm 2022-07-26 08:54:20 +02:00
parent 9c8e2f047e
commit 0544a42117
146 changed files with 63182 additions and 39 deletions

1
.gitignore vendored
View File

@ -26,4 +26,3 @@
**/.DS_Store
**/classpath-data.json
**/dependencies-and-licenses-overview.txt
/redaction-service-v1/redaction-service-server-v1/src/test/resources/RedactionLog/

View File

@ -27,7 +27,6 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.After;
import org.junit.Before;
@ -114,10 +113,13 @@ public class RulesTest {
private static final String IMPORTED_REDACTION = "imported_redaction";
private static final String PII = "PII";
private static final String RESOURCES_PATH = "src/test/resources/";
private static final String REDACTION_LOG_PATH = RESOURCES_PATH + "RedactionLog/";
private static final String REDACTION_LOG_PATH = "RedactionLog/";
private static final String REDACTION_LOG_RESOURCES_PATH = RESOURCES_PATH + REDACTION_LOG_PATH;
private final static String TEST_DOSSIER_TEMPLATE_ID = "123";
private final static String TEST_DOSSIER_ID = "123";
private String TEST_FILE_ID = "123";
private int counter = 0;
private int fileSize = 0;
private final Map<String, List<String>> dictionary = new HashMap<>();
private final Map<String, List<String>> dossierDictionary = new HashMap<>();
private final Map<String, List<String>> falsePositive = new HashMap<>();
@ -176,7 +178,9 @@ public class RulesTest {
.hexColor("#ffe187")
.isHint(hintTypeMap.get(DOSSIER_REDACTIONS))
.isCaseInsensitive(caseInSensitiveMap.get(DOSSIER_REDACTIONS))
.isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS)).rank(rankTypeMap.get(DOSSIER_REDACTIONS)).build()));
.isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS))
.rank(rankTypeMap.get(DOSSIER_REDACTIONS))
.build()));
mockDictionaryCalls(null);
mockDictionaryCalls(0L);
@ -196,7 +200,7 @@ public class RulesTest {
/**
* Generates RedactionLog for given file and saves it here: REDACTION_LOG_PATH.
* If the RedactionLog already exists, the generating will be skipped
* If the RedactionLog already exists, it will be overwritten
* Test is ignored, because it's for manual tests.
*/
@Ignore
@ -204,20 +208,22 @@ public class RulesTest {
public void generateRedactionLogForOneFile() {
String fileName = "files/Compounds/31 A14111B - EU AIR3 - MCP Section 1 - Identity of the plant protection product.pdf";
generateAndSaveRedactionLog(fileName);
fileSize = 1;
generateAndSaveRedactionLog(fileName, true);
}
/**
* Generates RedactionLog for all files and saves it here: REDACTION_LOG_PATH.
* If a RedactionLog already exists, the generating will be skipped
* If a RedactionLog already exists, the generating for this will be skipped
* Please commit generated files, if not the following tests will fail
*/
@IfProfileValue(name = "test-groups", value = "rules-test")
@Test
public void generateRedactionLogForAllFiles() {
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
System.out.println("Will generate RedactionLog for " + files.size() + " files.");
fileSize = files.size();
files.forEach(this::generateAndSaveRedactionLog);
}
@ -225,20 +231,19 @@ public class RulesTest {
/**
* Analyses file and compares its RedactionLog with saved one from here: REDACTION_LOG_PATH.
* If RedactionLog Json does not exist, test will fail.
* Test is ignored, because it's for manual tests.
*/
@Ignore
@Test
public void analyseFileAndCompareRedactionLog() {
String fileName = "files/Compounds/31 A14111B - EU AIR3 - MCP Section 1 - Identity of the plant protection product.pdf";
String fileName = "files/RulesTest/SYNGENTA_EFSA_sanitisation_GFL_v1_withHighlights.pdf";
fileSize = 1;
analyseFileAndCompareRedactionLog(fileName);
}
/**
* Analyses all files and compares its RedactionLog with saved one from here: REDACTION_LOG_PATH.
* If RedactionLogs Json does not exist, test will fail.
* If RedactionLog Json for one file does not exist, whole test will fail.
*/
@IfProfileValue(name = "test-groups", value = "rules-test")
@Test
@ -246,20 +251,28 @@ public class RulesTest {
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
System.out.println("Will analyse " + files.size() + " files and compare its RedactionLogs.");
fileSize = files.size();
files.forEach(this::analyseFileAndCompareRedactionLog);
}
@SneakyThrows
private void generateAndSaveRedactionLog(String fileName) {
if (doesRedactionLogExist(fileName)) {
System.out.println("Skip generating RedactionLog as Json for " + fileName + " because it already exists.");
generateAndSaveRedactionLog(fileName, false);
}
@SneakyThrows
private void generateAndSaveRedactionLog(String fileName, boolean force) {
counter++;
if (!force && doesRedactionLogExist(fileName)) {
System.out.println("(" + counter + "/" + fileSize + ") Skip generating RedactionLog as Json for " + fileName + " because it already exists.");
} else {
generateTestFileId(fileName);
System.out.println("Generate RedactionLog as Json for " + fileName + " with fileId " + TEST_FILE_ID);
System.out.println("(" + counter + "/" + fileSize + ") Generate RedactionLog as Json for " + fileName + " with fileId " + TEST_FILE_ID);
loadNerForTest();
@ -278,8 +291,9 @@ public class RulesTest {
@SneakyThrows
public void analyseFileAndCompareRedactionLog(String fileName) {
counter++;
generateTestFileId(fileName);
System.out.println("Analyse " + fileName + " with fileId " + TEST_FILE_ID + " and compare it with its saved RedactionLog");
System.out.println("(" + counter + "/" + fileSize + ") Analyse " + fileName + " with fileId " + TEST_FILE_ID + " and compare it with its saved RedactionLog");
RedactionLog savedRedactionLog = loadSavedRedactionLog(fileName);
@ -387,7 +401,7 @@ public class RulesTest {
assertThat(savedManualChange).isPresent();
}
assertThat(savedRedactionLogEntry.get().getEngines()).containsExactly(redactionLogEntry.getEngines().toArray(new Engine[0]));
assertThat(savedRedactionLogEntry.get().getEngines()).containsExactlyInAnyOrder(redactionLogEntry.getEngines().toArray(new Engine[0]));
assertThat(savedRedactionLogEntry.get().getReference()).containsAll(redactionLogEntry.getReference());
assertThat(savedRedactionLogEntry.get().getImportedRedactionIntersections()).containsAll(redactionLogEntry.getImportedRedactionIntersections());
@ -399,7 +413,7 @@ public class RulesTest {
private boolean doesRedactionLogExist(String pdfFileName) {
File pdfFile = new File(pdfFileName);
String directory = REDACTION_LOG_PATH + pdfFile.getParentFile().getPath();
String directory = REDACTION_LOG_RESOURCES_PATH + pdfFile.getParentFile().getPath();
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
File file = new File(directory, fileName);
return file.exists();
@ -421,7 +435,7 @@ public class RulesTest {
File pdfFile = new File(pdfFileName);
String directory = REDACTION_LOG_PATH + pdfFile.getParentFile().getPath();
String directory = REDACTION_LOG_RESOURCES_PATH + pdfFile.getParentFile().getPath();
File dr = new File(directory);
boolean created = dr.mkdirs();
if (created) {
@ -441,8 +455,20 @@ public class RulesTest {
private RedactionLog loadSavedRedactionLog(String pdfFileName) {
File pdfFile = new File(pdfFileName);
String directory = REDACTION_LOG_PATH + pdfFile.getParentFile().getPath();
String directory = cleanPath(pdfFile.getParentFile().getPath());
if (StringUtils.contains(directory, RESOURCES_PATH)) {
if (!StringUtils.endsWith(directory, "/")) {
directory = directory + "/";
}
directory = directory + REDACTION_LOG_PATH;
} else {
if (StringUtils.startsWith(directory, "/")) {
directory = StringUtils.substring(directory, 1);
}
directory = REDACTION_LOG_RESOURCES_PATH + directory;
}
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
File file = new File(directory, fileName);
assertThat(file).exists();
@ -450,6 +476,31 @@ public class RulesTest {
}
@SneakyThrows
private Set<String> getFileNames(Set<String> fileNames, Path dir) {
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path path : stream) {
if (path.toFile().isDirectory()) {
getFileNames(fileNames, path);
} else if (StringUtils.endsWith(path.toAbsolutePath().toString(), ".pdf")) {
String absolutePath = cleanPath(path.toAbsolutePath().toString());
int pos = StringUtils.indexOf(absolutePath, RESOURCES_PATH) + RESOURCES_PATH.length();
fileNames.add(StringUtils.substring(absolutePath, pos));
}
}
}
return fileNames;
}
private String cleanPath(String path) {
return StringUtils.replace(path, "\\", "/");
}
@SneakyThrows
private void loadNerForTest() {
@ -588,24 +639,6 @@ public class RulesTest {
}
@SneakyThrows
private Set<String> getFileNames(Set<String> fileNames, Path dir) {
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path path : stream) {
if (path.toFile().isDirectory()) {
getFileNames(fileNames, path);
} else if (StringUtils.endsWith(path.toAbsolutePath().toString(), ".pdf")) {
String absolutePath = path.toAbsolutePath().toString();
int pos = StringUtils.indexOf(absolutePath, StringUtils.replace(RESOURCES_PATH, "/", "\\")) + 18;
fileNames.add(StringUtils.substring(absolutePath, pos));
}
}
}
return fileNames;
}
private Type getDictionaryResponse(String type, boolean isDossierDictionary) {
return Type.builder()

View File

@ -0,0 +1,533 @@
{
"analysisVersion": 1,
"analysisNumber": 0,
"redactionLogEntry": [
{
"id": "96c1362cb4ea87461d8f5f141df1912a",
"type": "PII",
"value": "patrick.gardinal@syngenta.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": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 368.44
},
"width": 141.39014,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 10,
"textBefore": "60 51 E-mail: ",
"textAfter": null,
"comments": [],
"startOffset": 295,
"endOffset": 324,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "74b528293158d5266ace1eaf9ee2ad80",
"type": "PII",
"value": "+41 (0) 61 323 60 51",
"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 active substance: Cyprodinil",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 169.96002
},
"width": 94.37213,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 12,
"textBefore": "Gardinal Telephone number: ",
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
"comments": [],
"startOffset": 188,
"endOffset": 208,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "d282cd8f02e2628c14342ed52d69c517",
"type": "PII",
"value": "+41 (61) 323 6152",
"reason": "Personal information found",
"matchedRule": 23,
"rectangle": false,
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
"imported": false,
"redacted": true,
"section": "CP 1.1 Applicant",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 610.12
},
"width": 83.43994,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 9,
"textBefore": "Micheletti Telephone number: ",
"textAfter": " E-mail: sebastien.micheletti@syngenta.com",
"comments": [],
"startOffset": 164,
"endOffset": 181,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "245cfd060d4fb078bb211fabfce6d470",
"type": "PII",
"value": "patrick.gardinal@syngenta.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 active substance: Cyprodinil",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 144.64001
},
"width": 141.39014,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 12,
"textBefore": "60 51 E-mail: ",
"textAfter": null,
"comments": [],
"startOffset": 217,
"endOffset": 246,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "67dc43606b8e1489a0594e5b779fa428",
"type": "PII",
"value": "Patrick Gardinal",
"reason": "Personal information found",
"matchedRule": 23,
"rectangle": false,
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
"imported": false,
"redacted": true,
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 419.08
},
"width": 73.440186,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 10,
"textBefore": "Basel; Switzerland Contact: ",
"textAfter": " Telephone number:",
"comments": [],
"startOffset": 231,
"endOffset": 247,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "de79428457282a0781a827b322b5732a",
"type": "PII",
"value": "sebastien.micheletti@syngenta.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": "CP 1.1 Applicant",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 584.8
},
"width": 161.04922,
"height": 10.98,
"page": 5
}
],
"sectionNumber": 9,
"textBefore": "323 6152 E-mail: ",
"textAfter": null,
"comments": [],
"startOffset": 190,
"endOffset": 223,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "41340ab190d66ca6dce0ba965ce95f59",
"type": "PII",
"value": "Patrick Gardinal",
"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 active substance: Cyprodinil",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 195.28003
},
"width": 73.440186,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 12,
"textBefore": "Basel; Switzerland Contact: ",
"textAfter": " Telephone number:",
"comments": [],
"startOffset": 153,
"endOffset": 169,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "02dd2efb100839e705cdcf6f3141d9d5",
"type": "PII",
"value": "Sebastien Micheletti",
"reason": "Personal information found",
"matchedRule": 23,
"rectangle": false,
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
"imported": false,
"redacted": true,
"section": "CP 1.1 Applicant",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 634.84
},
"width": 91.21478,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 9,
"textBefore": "Basel; Switzerland Contact: ",
"textAfter": " Telephone number:",
"comments": [],
"startOffset": 125,
"endOffset": 145,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
},
{
"id": "530c4f47f0afc48432bd849a90918f41",
"type": "PII",
"value": "+41 (0) 61 323 60 51",
"reason": "Personal information found",
"matchedRule": 23,
"rectangle": false,
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
"imported": false,
"redacted": true,
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
"color": [
0.4,
0.8,
1.0
],
"positions": [
{
"topLeft": {
"x": 286.92,
"y": 393.76
},
"width": 94.37213,
"height": 11.52,
"page": 5
}
],
"sectionNumber": 10,
"textBefore": "Gardinal Telephone number: ",
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
"comments": [],
"startOffset": 266,
"endOffset": 286,
"imageHasTransparency": false,
"excluded": false,
"sourceId": null,
"changes": [
{
"analysisNumber": 0,
"type": "ADDED",
"dateTime": "2022-07-25T11:12:04.3835183+02:00"
}
],
"manualChanges": [],
"engines": [
"RULE"
],
"reference": [],
"importedRedactionIntersections": [],
"dossierDictionaryEntry": false,
"localManualRedaction": false,
"dictionaryEntry": false,
"image": false,
"falsePositive": false,
"manuallyRemoved": false,
"hint": false,
"recommendation": false
}
],
"legalBasis": [],
"dictionaryVersion": 0,
"dossierDictionaryVersion": 0,
"rulesVersion": 0,
"legalBasisVersion": 0
}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[{"id":"12ac3d26ce82a77e469c64d56081662d","type":"CBI_author","value":"Micheletti S","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Table in: COPY OF THE APPLICATION FOR RENEWAL, MADE UNDER COMMISSION","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":214.8,"y":639.64},"width":55.039078,"height":11.52,"page":4}],"sectionNumber":3,"textBefore":"Report: Document F/02, ","textAfter":". (2014). Cyprodinil","comments":[],"startOffset":23,"endOffset":35,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398559.316208600}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false},{"id":"dd614353319e7c5a8cf8b3346dc12fac","type":"CBI_author","value":"Micheletti S","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"COPY OF THE APPLICATION FOR RENEWAL, MADE UNDER COMMISSION","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":306.84,"y":667.12},"width":60.71997,"height":12.0,"page":4}],"sectionNumber":5,"textBefore":"F report (","textAfter":"., 2014).","comments":[],"startOffset":247,"endOffset":259,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398559.316208600}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false}],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[{"id":"36a5e8909a18a5080dd423afb8efd7a7","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":159.0,"y":320.0},"width":10.208038,"height":-21.999977,"page":1}],"sectionNumber":3,"textBefore":"Product Metabolism and ","textAfter":" 1 of","comments":[],"startOffset":368,"endOffset":372,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398772.538085900}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false},{"id":"dca119c3aadd348bc43c0b700c0075c3","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.0,"y":81.0},"width":10.208031,"height":-22.0,"page":1}],"sectionNumber":3,"textBefore":"Pages RAM 465/02 ","textAfter":" 1 Tel:","comments":[],"startOffset":399,"endOffset":403,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398772.538085900}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false},{"id":"ef6e0f0ed413dbd7299d992d9a50840b","type":"CBI_author","value":"Crook","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":374.0,"y":389.0},"width":10.515198,"height":-27.02501,"page":1}],"sectionNumber":5,"textBefore":"Author : SJ ","textAfter":" Analytical Science","comments":[],"startOffset":12,"endOffset":17,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398772.538085900}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false},{"id":"0fac36714dd9d1c745565c6dfe06b9b7","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":514.14215,"y":47.94165},"width":24.39972,"height":11.591161,"page":2}],"sectionNumber":4,"textBefore":"RAM 465/02 ","textAfter":" 2 Summary","comments":[],"startOffset":11,"endOffset":15,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398772.538085900}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false}],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[{"id":"71770acab1fa63f46c026966890b5231","type":"vertebrate","value":"rabbit","reason":null,"matchedRule":0,"rectangle":false,"legalBasis":null,"imported":false,"redacted":false,"section":"","color":[1.0,0.52156866,0.96862745],"positions":[{"topLeft":{"x":77.73999,"y":537.62},"width":-11.043678,"height":36.630165,"page":1}],"sectionNumber":4,"textBefore":null,"textAfter":null,"comments":[],"startOffset":41,"endOffset":47,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398329.875800000}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":true,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false}],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[{"id":"64eb5ff4ea1db8665fb6e57c5369b411","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":"Text in table","color":[0.4,0.8,1.0],"positions":[{"topLeft":{"x":154.48782,"y":654.18},"width":9.992157,"height":19.882175,"page":1}],"sectionNumber":8,"textBefore":null,"textAfter":" 1 of","comments":[],"startOffset":54,"endOffset":58,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398731.072100800}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false}],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[{"id":"9f6837120752b85c20e27d4cb199bd51","type":"CBI_author","value":"B. Foo","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":92.520004,"y":712.96},"width":31.589584,"height":12.231649,"page":1}],"sectionNumber":3,"textBefore":null,"textAfter":" F. Bar","comments":[],"startOffset":0,"endOffset":6,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398909.230209400}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false},{"id":"fb930b7f3acf65a74b0b59fee32cc6fa","type":"CBI_author","value":"F. Bar","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":125.92424,"y":712.96},"width":29.137009,"height":12.231649,"page":1}],"sectionNumber":3,"textBefore":"B. Foo ","textAfter":" Foo, B.","comments":[],"startOffset":7,"endOffset":13,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398909.230209400}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false},{"id":"435224747b87ed87b60ab363e6610fba","type":"CBI_author","value":"Foo","reason":"Author found","matchedRule":1,"rectangle":false,"legalBasis":"Article 39(e)(3) of Regulation (EC) No 178/2002","imported":false,"redacted":true,"section":"Header","color":[1.0,0.88235295,0.5294118],"positions":[{"topLeft":{"x":92.520004,"y":686.8},"width":18.338272,"height":12.231649,"page":1}],"sectionNumber":3,"textBefore":"Foo F. Bar ","textAfter":", B.","comments":[],"startOffset":14,"endOffset":17,"imageHasTransparency":false,"excluded":false,"sourceId":null,"changes":[{"analysisNumber":0,"type":"ADDED","dateTime":1658398909.230209400}],"manualChanges":[],"engines":["DICTIONARY"],"reference":[],"importedRedactionIntersections":[],"dossierDictionaryEntry":false,"recommendation":false,"hint":false,"dictionaryEntry":true,"falsePositive":false,"image":false,"localManualRedaction":false,"manuallyRemoved":false}],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

View File

@ -0,0 +1 @@
{"analysisVersion":1,"analysisNumber":0,"redactionLogEntry":[],"legalBasis":[],"dictionaryVersion":0,"dossierDictionaryVersion":0,"rulesVersion":0,"legalBasisVersion":0}

Some files were not shown because too many files have changed in this diff Show More