RED-1390: Do not classify images that are nearly as big as the page

This commit is contained in:
Dominique Eifländer 2021-05-19 11:19:33 +02:00
parent 816f44edf0
commit 8de0e5a338
4 changed files with 16 additions and 1 deletions

View File

@ -30,6 +30,8 @@ public class Page {
private StringFrequencyCounter fontCounter = new StringFrequencyCounter();
private StringFrequencyCounter fontStyleCounter = new StringFrequencyCounter();
private double cropBoxArea;
public boolean isRotated() {

View File

@ -28,6 +28,13 @@ public class ImageClassificationService {
if (settings.isEnableImageClassification()) {
double imageArea = image.getPosition().getHeight() * image.getPosition().getWidth();
if(imageArea / page.getCropBoxArea() >= settings.getMaxImageCropboxRatio()){
log.info("Skipping image classification because image area is almost as big as the page");
image.setImageType(ImageType.OTHER);
return;
}
long start = System.currentTimeMillis();
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
ImageIO.write(image.getImage(), "png", baos);
@ -38,7 +45,6 @@ public class ImageClassificationService {
log.error("Could not classify image", e);
image.setImageType(ImageType.OTHER);
}
log.info("Image classification took: " + (System.currentTimeMillis() - start));
} else {
image.setImageType(ImageType.OTHER);

View File

@ -1,5 +1,6 @@
package com.iqser.red.service.redaction.v1.server.segmentation;
import com.iqser.red.service.redaction.v1.model.Rectangle;
import com.iqser.red.service.redaction.v1.server.classification.model.Document;
import com.iqser.red.service.redaction.v1.server.classification.model.Page;
import com.iqser.red.service.redaction.v1.server.classification.model.TextBlock;
@ -93,6 +94,10 @@ public class PdfSegmentationService {
Page page = blockificationService.blockify(stripper.getTextPositionSequences(), cleanRulings.getHorizontal(), cleanRulings
.getVertical());
PDRectangle cropbox = pdPage.getCropBox();
float cropboxArea = cropbox.getHeight() * cropbox.getWidth();
page.setCropBoxArea(cropboxArea);
page.setRotation(rotation);
page.setLandscape(isLandscape || isRotated);
page.setPageNumber(pageNumber);

View File

@ -13,4 +13,6 @@ public class RedactionServiceSettings {
private boolean enableImageClassification = true;
private float maxImageCropboxRatio = 0.9f;
}