From 6f29270e662b44989e0296f5cf1445e7d081e294 Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Fri, 22 Dec 2023 15:04:52 +0100 Subject: [PATCH] RED-7669: optimize OCR-module performance * fix thread handling for PDFs without any images --- .../ocr/processor/service/OcrImageFactory.java | 1 + .../service/threads/ImageProcessingThread.java | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/OcrImageFactory.java b/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/OcrImageFactory.java index 0bf3f7a..c4b5e9f 100644 --- a/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/OcrImageFactory.java +++ b/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/OcrImageFactory.java @@ -96,6 +96,7 @@ public class OcrImageFactory { } imageProcessingThread.setAllImagesExtracted(true); + imageProcessingThread.interrupt(); imageProcessingThread.join(); diff --git a/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/threads/ImageProcessingThread.java b/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/threads/ImageProcessingThread.java index 6fec116..d0149c9 100644 --- a/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/threads/ImageProcessingThread.java +++ b/ocr-service-v1/ocr-service-processor/src/main/java/com/knecon/fforesight/service/ocr/processor/service/threads/ImageProcessingThread.java @@ -57,13 +57,16 @@ public class ImageProcessingThread extends Thread { @Override public void run() { - while (!allImagesExtracted) { - final UnprocessedImage image = imageInputQueue.take(); - var ocrImage = this.process(image); - imageOutputQueue.put(ocrImage); + try { + while (!allImagesExtracted) { + final UnprocessedImage image = imageInputQueue.take(); + var ocrImage = this.process(image); + imageOutputQueue.put(ocrImage); + } + } catch (InterruptedException e) { + log.info("All images extracted, emptying processing queue and stopping"); } - try { while (true) { final UnprocessedImage image = imageInputQueue.remove();