Merge branch 'RED-8085' into 'master'

PMD fix for ocr service RED-8085

See merge request fforesight/ocr-service!37
This commit is contained in:
Timo Bejan 2024-01-30 07:17:37 +01:00
commit 0c6ce2d77b
7 changed files with 46 additions and 43 deletions

View File

@ -14,6 +14,7 @@
<exclude name="AvoidDuplicateLiterals"/> <exclude name="AvoidDuplicateLiterals"/>
<exclude name="NullAssignment"/> <exclude name="NullAssignment"/>
<exclude name="AssignmentInOperand"/> <exclude name="AssignmentInOperand"/>
<exclude name="BeanMembersShouldSerialize"/>
</rule> </rule>
</ruleset> </ruleset>

View File

@ -1,7 +1,7 @@
plugins { plugins {
`maven-publish` `maven-publish`
id("com.iqser.red.service.java-conventions") id("com.iqser.red.service.java-conventions")
id("io.freefair.lombok") version "8.2.2" id("io.freefair.lombok") version "8.4"
} }
publishing { publishing {

View File

@ -1,6 +1,6 @@
plugins { plugins {
id("com.iqser.red.service.java-conventions") id("com.iqser.red.service.java-conventions")
id("io.freefair.lombok") version "8.2.2" id("io.freefair.lombok") version "8.4"
} }
configurations { configurations {

View File

@ -44,6 +44,8 @@ public class Type0FontMetricsFactory implements FontMetricsFactory {
@SneakyThrows @SneakyThrows
@SuppressWarnings("PMD.CloseResource")
// Todo i think this is not ok to never close the font...
private static Type0FontMetricsFactory createFromResource(String resourcePath, PDDocument document) { private static Type0FontMetricsFactory createFromResource(String resourcePath, PDDocument document) {
try (var in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath); var buffer = new RandomAccessReadBuffer(in)) { try (var in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath); var buffer = new RandomAccessReadBuffer(in)) {

View File

@ -107,6 +107,7 @@ public class ImageProcessingThread extends Thread {
} }
@SuppressWarnings("PMD.CompareObjectsWithEquals")
private OcrImage processRenderedPageImageFile(RenderedPageImageFile renderedPageImageFile) { private OcrImage processRenderedPageImageFile(RenderedPageImageFile renderedPageImageFile) {
Pix pix = processPix(renderedPageImageFile.asPix(), settings.getDpi(), settings.getDpi()); Pix pix = processPix(renderedPageImageFile.asPix(), settings.getDpi(), settings.getDpi());
@ -127,7 +128,7 @@ public class ImageProcessingThread extends Thread {
return ocrImage; return ocrImage;
} }
@SuppressWarnings("PMD.CompareObjectsWithEquals")
private OcrImage processExtractedImage(ExtractedImage extractedImage) { private OcrImage processExtractedImage(ExtractedImage extractedImage) {
float imageDPI = Math.abs(extractedImage.image().getWidth() / (extractedImage.ctm().getScalingFactorX() / 72)); float imageDPI = Math.abs(extractedImage.image().getWidth() / (extractedImage.ctm().getScalingFactorX() / 72));

View File

@ -17,58 +17,57 @@ public class PdfDraw {
@SneakyThrows @SneakyThrows
public static void drawGrid(ElementWriter writer, Page page) { public static void drawGrid(ElementWriter writer, Page page) {
ElementBuilder eb = new ElementBuilder(); try (var eb = new ElementBuilder()) {
double dX = 15; double dX = 15;
double dY = 15; double dY = 15;
int nRows = (int) (page.getPageHeight() / dY) + 1; int nRows = (int) (page.getPageHeight() / dY) + 1;
int nCols = (int) (page.getPageWidth() / dX) + 1; int nCols = (int) (page.getPageWidth() / dX) + 1;
for (int row = 0; row < nRows; ++row) { for (int row = 0; row < nRows; ++row) {
for (int col = 0; col < nCols; ++col) { for (int col = 0; col < nCols; ++col) {
Element cell = eb.createRect(col * dX, row * dY, dX, dY); Element cell = eb.createRect(col * dX, row * dY, dX, dY);
cell.setPathStroke(true); cell.setPathStroke(true);
cell.getGState().setLineWidth(1); cell.getGState().setLineWidth(1);
cell.getGState().setStrokeOpacity(0.1); cell.getGState().setStrokeOpacity(0.1);
cell.getGState().setStrokeColorSpace(ColorSpace.createDeviceRGB()); cell.getGState().setStrokeColorSpace(ColorSpace.createDeviceRGB());
if (row == 0 && col == 0) { if (row == 0 && col == 0) {
cell.getGState().setStrokeColor(new ColorPt(0, 0, 1)); cell.getGState().setStrokeColor(new ColorPt(0, 0, 1));
cell.setPathFill(true); cell.setPathFill(true);
cell.getGState().setFillOpacity(0.8); cell.getGState().setFillOpacity(0.8);
cell.getGState().setFillColorSpace(ColorSpace.createDeviceRGB()); cell.getGState().setFillColorSpace(ColorSpace.createDeviceRGB());
cell.getGState().setFillColor(new ColorPt(0, 0, 1)); cell.getGState().setFillColor(new ColorPt(0, 0, 1));
} else { } else {
cell.setPathFill(false); cell.setPathFill(false);
cell.getGState().setStrokeColor(new ColorPt(0.1, 0.1, 0.1)); cell.getGState().setStrokeColor(new ColorPt(0.1, 0.1, 0.1));
}
writer.writePlacedElement(cell);
} }
writer.writePlacedElement(cell);
} }
} }
eb.destroy();
} }
@SneakyThrows @SneakyThrows
public static void drawRectCollection(ElementWriter writer, RectCollection rectCollection) { public static void drawRectCollection(ElementWriter writer, RectCollection rectCollection) {
ColorPt colorPt = new ColorPt(1, 0, 0); try (var colorPt = new ColorPt(1, 0, 0); var eb = new ElementBuilder()) {
ElementBuilder eb = new ElementBuilder(); for (int i = 0; i < rectCollection.getNumRects(); ++i) {
for (int i = 0; i < rectCollection.getNumRects(); ++i) { try(var r = rectCollection.getRectAt(i)) {
Rect r = rectCollection.getRectAt(i); Element rect = eb.createRect(r.getX1(), r.getY1(), r.getWidth(), r.getHeight());
Element rect = eb.createRect(r.getX1(), r.getY1(), r.getWidth(), r.getHeight());
rect.setPathStroke(true); rect.setPathStroke(true);
rect.getGState().setLineWidth(5); rect.getGState().setLineWidth(5);
rect.getGState().setStrokeColorSpace(ColorSpace.createDeviceRGB()); rect.getGState().setStrokeColorSpace(ColorSpace.createDeviceRGB());
rect.getGState().setStrokeColor(colorPt); rect.getGState().setStrokeColor(colorPt);
rect.setPathFill(true); rect.setPathFill(true);
rect.getGState().setFillColorSpace(ColorSpace.createDeviceRGB()); rect.getGState().setFillColorSpace(ColorSpace.createDeviceRGB());
rect.getGState().setFillColor(colorPt); rect.getGState().setFillColor(colorPt);
rect.getGState().setFillOpacity(0.5); rect.getGState().setFillOpacity(0.5);
writer.writePlacedElement(rect); writer.writePlacedElement(rect);
}
}
} }
colorPt.destroy();
eb.destroy();
} }
} }

View File

@ -6,7 +6,7 @@ plugins {
id("org.springframework.boot") version "3.1.5" id("org.springframework.boot") version "3.1.5"
id("io.spring.dependency-management") version "1.1.3" id("io.spring.dependency-management") version "1.1.3"
id("org.sonarqube") version "4.3.0.3225" id("org.sonarqube") version "4.3.0.3225"
id("io.freefair.lombok") version "8.2.2" id("io.freefair.lombok") version "8.4"
} }
configurations { configurations {