From 6f29270e662b44989e0296f5cf1445e7d081e294 Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Fri, 22 Dec 2023 15:04:52 +0100 Subject: [PATCH 1/2] 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(); From 67540950b83a59eae9fabeda7b74e786e9a74aa2 Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Fri, 22 Dec 2023 15:11:29 +0100 Subject: [PATCH 2/2] RED-7669: optimize OCR-module performance * fix thread handling for PDFs without any images --- .../processor/service/threads/ImageProcessingThread.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 d0149c9..c7a81e9 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 @@ -61,7 +61,11 @@ public class ImageProcessingThread extends Thread { while (!allImagesExtracted) { final UnprocessedImage image = imageInputQueue.take(); var ocrImage = this.process(image); - imageOutputQueue.put(ocrImage); + try { + imageOutputQueue.put(ocrImage); + } catch (InterruptedException e) { + imageOutputQueue.put(ocrImage); + } } } catch (InterruptedException e) { log.info("All images extracted, emptying processing queue and stopping");