diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Classification.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Classification.java deleted file mode 100644 index 42ac1de40..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Classification.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import java.util.HashMap; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Classification { - - private Map probabilities = new HashMap<>(); - private String label; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/FilterGeometry.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/FilterGeometry.java deleted file mode 100644 index 7a8f248c8..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/FilterGeometry.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class FilterGeometry { - - private ImageSize imageSize; - private ImageFormat imageFormat; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Filters.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Filters.java deleted file mode 100644 index 7c31d6b07..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Filters.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Filters { - - private FilterGeometry geometry; - private Probability probability; - private boolean allPassed; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Geometry.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Geometry.java deleted file mode 100644 index 78ac75668..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Geometry.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Geometry { - - private float width; - private float height; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Image.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Image.java deleted file mode 100644 index ca807331c..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Image.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import org.apache.commons.math3.ml.clustering.Clusterable; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -public class Image implements Clusterable { - private String hash; - private int fixedLength; - private String label; - - @Override - public double[] getPoint() { - double[] featureVector = new double[fixedLength]; - for (int i = 0; i < hash.length(); i++) { - featureVector[i] = (double) hash.charAt(i); - } - return featureVector; - } -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageFormat.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageFormat.java deleted file mode 100644 index 89bd37ad2..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageFormat.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ImageFormat { - - private float quotient; - private boolean tooTall; - private boolean tooWide; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageMetadata.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageMetadata.java deleted file mode 100644 index 5e7c59d50..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageMetadata.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ImageMetadata { - - private Classification classification; - private String representation; - private Position position; - private Geometry geometry; - private Filters filters; - private boolean alpha; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageServiceResponse.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageServiceResponse.java deleted file mode 100644 index e2e548002..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageServiceResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonAlias; -import com.fasterxml.jackson.annotation.JsonProperty; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ImageServiceResponse { - - private String dossierId; - private String fileId; - - @JsonProperty(value = "imageMetadata") - @JsonAlias("data") - private List data = new ArrayList<>(); - - private List dataCV = new ArrayList<>(); - - - @JsonProperty(value = "imageMetadata") - @JsonAlias("data") - public void setData(List data) {this.data = data;} - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageSimilarityService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageSimilarityService.java deleted file mode 100644 index f9111a584..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageSimilarityService.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.Scope; -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ImageDocument; -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.ImageMongoService; -import com.knecon.fforesight.service.layoutparser.internal.api.data.redaction.DocumentStructure; -import com.knecon.fforesight.service.layoutparser.internal.api.data.redaction.NodeType; -import com.knecon.fforesight.tenantcommons.TenantContext; - -import lombok.extern.slf4j.Slf4j; - -@Service -@Slf4j -public class ImageSimilarityService { - - @Autowired - ImageMongoService imageMongoService; - @Autowired - FileManagementStorageService fileManagementStorageService; - @Autowired - ObjectMapper objectMapper; - - - //load all recat requests and find similiar images - public void saveImages(String templateId, String dossierId, String fileId, String storageId) throws IOException { - //load structure files of all files in template - List imageDocuments = new ArrayList<>(); - try (InputStream inputStream = fileManagementStorageService.getObject(TenantContext.getTenantId(), storageId)) { - //load images from structures - DocumentStructure documentStructure = objectMapper.readValue(inputStream, DocumentStructure.class); - documentStructure.streamAllEntries() - .filter(entry -> entry.getType().equals(NodeType.IMAGE)) - .forEach(i -> { - Map properties = i.getProperties(); - ImageDocument imageDocument = new ImageDocument(); - imageDocument.setImageId(properties.get("id")); - imageDocument.setFeatureVector(parseRepresentationVector(properties.get("representationHash"))); - imageDocument.setTemplateId(templateId); - imageDocument.setDossierId(dossierId); - imageDocument.setFileId(fileId); - imageDocuments.add(imageDocument); - - }); - } - if (imageDocuments.isEmpty()) { - return; - } - imageMongoService.saveImages(imageDocuments); - } - - - public List findSimilarImages(String centroId, double distance, Scope scope) throws Exception { - - ImageDocument centroImage = this.imageMongoService.findById(centroId); - log.info("image received with id {}: {}",centroId, centroImage); - List similarImages = this.imageMongoService.findSimilarImages(centroImage, distance, scope); - log.info("received similar images: {}",similarImages); - return similarImages.stream() - .collect(Collectors.toList()); - } - - - public static double[] parseRepresentationVector(String representationHash) { - - double[] doubleArray = new double[representationHash.length()]; - - for (int i = 0; i < representationHash.length(); i++) { - char c = representationHash.charAt(i); - if (Character.isDigit(c)) { - // Convert numeric characters directly to their numeric values - doubleArray[i] = Character.getNumericValue(c); - } else if (Character.isLetter(c)) { - // Convert alphabetic characters to their position in the alphabet - // 'A' or 'a' -> 10, 'B' or 'b' -> 11, ..., 'F' or 'f' -> 15 - doubleArray[i] = 10 + Character.toUpperCase(c) - 'A'; - } else { - throw new IllegalArgumentException("Invalid character in input string: " + c); - } - } - - return doubleArray; - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageSize.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageSize.java deleted file mode 100644 index 40343e0e3..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/ImageSize.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ImageSize { - - private float quotient; - private boolean tooLarge; - private boolean tooSmall; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Position.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Position.java deleted file mode 100644 index 31b347f0e..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Position.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Position { - - private float x1; - private float x2; - private float y1; - private float y2; - private int pageNumber; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Probability.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Probability.java deleted file mode 100644 index daec73d1d..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/image/Probability.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.image; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Probability { - - private boolean unconfident; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/ImageClusteringTest.java b/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/ImageClusteringTest.java deleted file mode 100644 index dad72ea06..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/ImageClusteringTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service; - -public class ImageClusteringTest { - -}