RED-6009 - Document Tree Structure

* remove unused code
This commit is contained in:
Kilian Schuettler 2023-05-12 14:27:10 +02:00
parent 643e2e81d4
commit 8ec88869e2
8 changed files with 12 additions and 90 deletions

View File

@ -2,9 +2,7 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.m
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.SearchableText;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -15,13 +13,4 @@ public class ClassificationFooter {
private List<ClassificationTextBlock> textBlocks; private List<ClassificationTextBlock> textBlocks;
@JsonIgnore
public SearchableText getSearchableText() {
SearchableText searchableText = new SearchableText();
textBlocks.forEach(block -> searchableText.addAll(block.getSequences()));
return searchableText;
}
} }

View File

@ -2,9 +2,7 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.m
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.SearchableText;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -15,13 +13,4 @@ public class ClassificationHeader {
private List<ClassificationTextBlock> textBlocks; private List<ClassificationTextBlock> textBlocks;
@JsonIgnore
public SearchableText getSearchableText() {
SearchableText searchableText = new SearchableText();
textBlocks.forEach(block -> searchableText.addAll(block.getSequences()));
return searchableText;
}
} }

View File

@ -35,10 +35,4 @@ public class ClassificationPage {
private float pageWidth; private float pageWidth;
private float pageHeight; private float pageHeight;
public boolean isRotated() {
return rotation != 0;
}
} }

View File

@ -5,33 +5,19 @@ import java.util.List;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.image.ClassifiedImage; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.image.ClassifiedImage;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.table.TablePageBlock; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.table.TablePageBlock;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock;
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.SearchableText;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class ClassificationSection implements Comparable { public class ClassificationSection {
private List<AbstractPageBlock> pageBlocks = new ArrayList<>(); private List<AbstractPageBlock> pageBlocks = new ArrayList<>();
private List<ClassifiedImage> images = new ArrayList<>(); private List<ClassifiedImage> images = new ArrayList<>();
private String headline; private String headline;
public SearchableText getSearchableText() {
SearchableText searchableText = new SearchableText();
pageBlocks.forEach(block -> {
if (block instanceof ClassificationTextBlock) {
searchableText.addAll(((ClassificationTextBlock) block).getSequences());
}
});
return searchableText;
}
public List<TablePageBlock> getTables() { public List<TablePageBlock> getTables() {
List<TablePageBlock> tables = new ArrayList<>(); List<TablePageBlock> tables = new ArrayList<>();
@ -43,23 +29,4 @@ public class ClassificationSection implements Comparable {
return tables; return tables;
} }
public List<ClassificationTextBlock> getTextBlocks() {
List<ClassificationTextBlock> textBlocks = new ArrayList<>();
pageBlocks.forEach(block -> {
if (block instanceof ClassificationTextBlock) {
textBlocks.add((ClassificationTextBlock) block);
}
});
return textBlocks;
}
@Override
public int compareTo(Object o) {
return 0;
}
} }

View File

@ -1,7 +1,5 @@
package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text; package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
@ -46,18 +44,4 @@ public enum TextDirection {
throw new IllegalArgumentException(String.format("A value of %f is not supported by TextDirection", degrees)); throw new IllegalArgumentException(String.format("A value of %f is not supported by TextDirection", degrees));
} }
public static TextDirection fromString(String degreesAsString) {
Objects.requireNonNull(degreesAsString, "Cannot construct a text direction from a null value");
String value = degreesAsString.strip();
if (degreesAsString.endsWith(VALUE_STRING_SUFFIX)) {
value = degreesAsString.replace(VALUE_STRING_SUFFIX + "$", "");
}
return fromDegrees(Float.parseFloat(value));
}
} }

View File

@ -2,8 +2,6 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.m
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -13,13 +11,4 @@ public class UnclassifiedText {
private List<ClassificationTextBlock> textBlocks; private List<ClassificationTextBlock> textBlocks;
@JsonIgnore
public SearchableText getSearchableText() {
SearchableText searchableText = new SearchableText();
textBlocks.forEach(block -> searchableText.addAll(block.getSequences()));
return searchableText;
}
} }

View File

@ -89,6 +89,12 @@ public class RedactionEntity {
} }
public boolean occursInNode(SemanticNode semanticNode) {
return intersectingNodes.stream().anyMatch(node -> node.equals(semanticNode));
}
public boolean isType(String type) { public boolean isType(String type) {
return this.type.equals(type); return this.type.equals(type);

View File

@ -318,6 +318,7 @@ rule "21: Redact Emails by RegEx (Non vertebrate study)"
entityCreationService.byRegex("\\b([A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z\\-]{1,23}[A-Za-z])\\b", "PII", EntityType.ENTITY, 1, $section) entityCreationService.byRegex("\\b([A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z\\-]{1,23}[A-Za-z])\\b", "PII", EntityType.ENTITY, 1, $section)
.forEach(emailEntity -> { .forEach(emailEntity -> {
emailEntity.setRedaction(true); emailEntity.setRedaction(true);
emailEntity.addEngine(Engine.RULE);
emailEntity.setRedactionReason("Found by Email Regex"); emailEntity.setRedactionReason("Found by Email Regex");
emailEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002"); emailEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
emailEntity.addMatchedRule(21); emailEntity.addMatchedRule(21);
@ -587,17 +588,20 @@ rule "Apply id removals that are valid and not in forced redactions to Image"
$entityToBeRemoved: Image($id == id) $entityToBeRemoved: Image($id == id)
then then
$entityToBeRemoved.setIgnored(true); $entityToBeRemoved.setIgnored(true);
retract($entityToBeRemoved);
end end
rule "Apply force redaction" rule "Apply force redaction"
salience 128 salience 128
when when
ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED, requestDate != null, $legalBasis: legalBasis) $forceRedaction: ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED, requestDate != null, $legalBasis: legalBasis)
$entityToForce: RedactionEntity(matchesAnnotationId($id)) $entityToForce: RedactionEntity(matchesAnnotationId($id))
then then
$entityToForce.setLegalBasis($legalBasis); $entityToForce.setLegalBasis($legalBasis);
$entityToForce.setRedaction(true); $entityToForce.setRedaction(true);
$entityToForce.setSkipRemoveEntitiesContainedInLarger(true); $entityToForce.setSkipRemoveEntitiesContainedInLarger(true);
retract($forceRedaction);
update($entityToForce);
end end
rule "Apply image recategorization" rule "Apply image recategorization"