Compare commits

...
16 Commits
Author SHA1 Message Date
Kilian Schüttler 0f6d33f882 Merge branch 'hotfix' into 'release/0.6.x'
hotfix: properly remove layers when overwriting

See merge request fforesight/azure-ocr-service!15
2024-09-12 10:18:11 +02:00
Kilian Schuettler 7b4ca83563 hotfix: properly remove layers when overwriting 2024-09-12 10:11:23 +02:00
Dominique Eifländer d40d2fd58d Merge branch 'hotfix' into 'release/0.6.x'
hotfix: reduce file size using Optimizer.optimize

See merge request fforesight/azure-ocr-service!13
2024-09-11 15:38:54 +02:00
Kilian Schuettler 39b323e69e hotfix: reduce file size using Optimizer.optimize 2024-09-11 15:32:16 +02:00
Kilian Schüttler 412edec340 Merge branch 'RED-9864' into 'main'
RED-9746: sped up invisible element removal, fixed crash

See merge request fforesight/azure-ocr-service!9
2024-08-26 15:24:43 +02:00
Kilian Schuettler 242b3ef3b8 RED-9746: sped up invisible element removal, fixed crash 2024-08-26 15:20:38 +02:00
Christoph Schabert e4aaecc750 Update .gitlab-ci.yml file 2024-08-22 14:16:02 +02:00
Kilian Schüttler c7be843a6f Merge branch 'RED-9746' into 'main'
RED-9746: improve invisible element removal

See merge request fforesight/azure-ocr-service!6
2024-08-19 14:47:48 +02:00
Kilian Schüttler 2cadfdb8bf RED-9746: improve invisible element removal 2024-08-19 14:47:48 +02:00
Dominique Eifländer b019ca8e2d Merge branch 'RED-9760-watermark' into 'main'
RED-9760: Fixed not working remove watermarks

See merge request fforesight/azure-ocr-service!5
2024-08-09 11:47:20 +02:00
Dominique Eifländer 670c505042 RED-9760: Fixed not working remove watermarks 2024-08-09 11:44:13 +02:00
Dominique Eifländer 22049d81c2 Merge branch 'RED-9760-2' into 'main'
RED-9760: Fixed bug in image detection

See merge request fforesight/azure-ocr-service!4
2024-07-29 11:14:06 +02:00
Dominique Eifländer 050c399270 RED-9760: Fixed bug in image detection 2024-07-29 11:13:02 +02:00
Dominique Eifländer 8f123fb865 Merge branch 'RED-9760' into 'main'
RED-9760: Fixed send updates to wrong exchange

See merge request fforesight/azure-ocr-service!3
2024-07-29 10:32:06 +02:00
Dominique Eifländer 21523a7796 RED-9760: Fixed send updates to wrong exchange 2024-07-29 10:00:09 +02:00
Kilian Schüttler fdb3ae46dc Merge branch 'RED-9353' into 'main'
RED-9353: undo tenant exchange

See merge request fforesight/azure-ocr-service!2
2024-07-25 13:11:40 +02:00
12 changed files with 29 additions and 22 deletions
+1
View File
@@ -22,4 +22,5 @@ deploy:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_BRANCH =~ /^release/
- if: $CI_COMMIT_BRANCH =~ /^feature/
- if: $CI_COMMIT_TAG
+1 -1
View File
@@ -70,7 +70,7 @@ int concurrency = 8;
int batchSize = 128;
boolean debug; // writes the ocr layer visibly to the viewer doc pdf
boolean idpEnabled; // Enables table detection, paragraph classification, section detection, key-value detection.
boolean tableDetection; // writes the tables to the PDF as invisible lines.
boolean drawTablesAsLines; // writes the tables to the PDF as invisible lines.
boolean processAllPages; // if this parameter is set, ocr will be performed on any page, regardless if it has images or not
boolean fontStyleDetection; // Enables bold detection using ghostscript and leptonica
String contentFormat; // Either markdown or text. But, for whatever reason, with markdown enabled, key-values are not written by azure....
@@ -23,7 +23,7 @@ public class DocumentRequest {
String viewerDocId;
String idpResultId;
boolean removeWatermarks;
boolean removeWatermark;
public DocumentRequest(String dossierId, String fileId) {
@@ -33,15 +33,15 @@ public class DocumentRequest {
originDocumentId = null;
viewerDocId = null;
idpResultId = null;
removeWatermarks = false;
removeWatermark = false;
}
// needed for backwards compatibility
public DocumentRequest(String dossierId, String fileId, boolean removeWatermarks) {
public DocumentRequest(String dossierId, String fileId, boolean removeWatermark) {
this.dossierId = dossierId;
this.fileId = fileId;
this.removeWatermarks = removeWatermarks;
this.removeWatermark = removeWatermark;
originDocumentId = null;
viewerDocId = null;
idpResultId = null;
@@ -21,8 +21,8 @@ dependencies {
api("org.apache.commons:commons-math3:3.6.1")
api("com.amazonaws:aws-java-sdk-kms:1.12.440")
api("com.google.guava:guava:31.1-jre")
api("com.iqser.red.commons:pdftron-logic-commons:2.27.0")
api("com.knecon.fforesight:viewer-doc-processor:0.148.0")
api("com.knecon.fforesight:viewer-doc-processor:0.177.0")
api("com.azure:azure-ai-documentintelligence:1.0.0-beta.3")
api("com.iqser.red.commons:pdftron-logic-commons:2.31.0")
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
}
@@ -18,7 +18,7 @@ public class OcrServiceSettings {
boolean debug; // writes the ocr layer visibly to the viewer doc pdf
boolean idpEnabled; // Enables table detection, paragraph classification, section detection, key-value detection.
boolean tableDetection; // writes the tables to the PDF as invisible lines.
boolean drawTablesAsLines; // writes the tables to the PDF as invisible lines.
boolean processAllPages; // if this parameter is set, ocr will be performed on any page, regardless if it has images or not
boolean fontStyleDetection; // Enables bold detection using ghostscript and leptonica
String contentFormat; // Either markdown or text. But, for whatever reason, with markdown enabled, key-values are not written by azure....
@@ -20,10 +20,12 @@ public record PageInformation(Rectangle2D mediabox, int number, int rotationDegr
ConcurrentHashMap<Integer, PageInformation> pageInformationMap = new ConcurrentHashMap<>();
int pageNumber = 1;
for (PageIterator iterator = pdfDoc.getPageIterator(); iterator.hasNext(); pageNumber++) {
Page page = iterator.next();
pageInformationMap.put(pageNumber, PageInformation.fromPage(pageNumber, page));
try (PageIterator iterator = pdfDoc.getPageIterator()) {
while (iterator.hasNext()) {
Page page = iterator.next();
pageInformationMap.put(pageNumber, PageInformation.fromPage(pageNumber, page));
pageNumber++;
}
}
return pageInformationMap;
}
@@ -16,6 +16,7 @@ import com.knecon.fforesight.service.ocr.processor.service.imageprocessing.Image
import com.knecon.fforesight.service.ocr.processor.visualizations.layers.LayerFactory;
import com.knecon.fforesight.service.ocr.processor.visualizations.layers.OcrResult;
import com.pdftron.common.PDFNetException;
import com.pdftron.pdf.Optimizer;
import com.pdftron.pdf.PDFDoc;
import com.pdftron.sdf.SDFDoc;
@@ -74,6 +75,7 @@ public class AsyncOcrService {
BinaryData docData;
try (var smallerDoc = extractBatchDocument(pdfDoc, batch)) {
Optimizer.optimize(smallerDoc);
docData = BinaryData.fromBytes(smallerDoc.save(SDFDoc.SaveMode.LINEARIZED, null));
}
return docData;
@@ -72,8 +72,11 @@ public class ImageDetectionService {
}
case Element.e_form -> {
reader.formBegin();
findImagePositionsOnPage(reader);
var found = findImagePositionsOnPage(reader);
reader.end();
if (found) {
return true;
}
}
}
}
@@ -53,7 +53,7 @@ public class ImageProcessingSupervisor {
public ImageFile awaitProcessedPage(Integer pageNumber) throws InterruptedException {
if (hasErros()) {
if (hasErrors()) {
return null;
}
getPageLatch(pageNumber).await();
@@ -61,7 +61,7 @@ public class ImageProcessingSupervisor {
}
private boolean hasErros() {
private boolean hasErrors() {
return errors.isEmpty();
}
@@ -88,7 +88,7 @@ public class WritableOcrResultFactory {
var builder = WritableOcrResult.builder().pageNumber(pageInformation.number()).textPositionInImage(words);
if (settings.isTableDetection()) {
if (settings.isDrawTablesAsLines()) {
builder.tableLines(getTableLines(analyzeResult, pageInformation, pageCtm));
}
@@ -63,7 +63,7 @@ public class OcrMessageReceiver {
fileStorageService.downloadFiles(request, documentFile);
ocrService.runOcrOnDocument(dossierId, fileId, request.isRemoveWatermarks(), tmpDir, documentFile, viewerDocumentFile, analyzeResultFile);
ocrService.runOcrOnDocument(dossierId, fileId, request.isRemoveWatermark(), tmpDir, documentFile, viewerDocumentFile, analyzeResultFile);
fileStorageService.storeFiles(request, documentFile, viewerDocumentFile, analyzeResultFile);
@@ -8,7 +8,6 @@ import com.knecon.fforesight.service.ocr.processor.service.IOcrMessageSender;
import com.knecon.fforesight.service.ocr.v1.api.model.DocumentRequest;
import com.knecon.fforesight.service.ocr.v1.api.model.OCRStatusUpdateResponse;
import com.knecon.fforesight.service.ocr.v1.server.configuration.MessagingConfiguration;
import com.knecon.fforesight.tenantcommons.TenantContext;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@@ -28,7 +27,7 @@ public class OcrMessageSender implements IOcrMessageSender {
public void sendOcrFinished(String fileId, int totalImages) {
rabbitTemplate.convertAndSend(MessagingConfiguration.OCR_STATUS_UPDATE_RESPONSE_QUEUE,
TenantContext.getTenantId(),
OCRStatusUpdateResponse.builder().fileId(fileId).numberOfPagesToOCR(totalImages).numberOfOCRedPages(totalImages).ocrFinished(true).build());
}
@@ -36,7 +35,7 @@ public class OcrMessageSender implements IOcrMessageSender {
public void sendOCRStarted(String fileId) {
rabbitTemplate.convertAndSend(MessagingConfiguration.OCR_STATUS_UPDATE_RESPONSE_QUEUE,
TenantContext.getTenantId(),
OCRStatusUpdateResponse.builder().fileId(fileId).ocrStarted(true).build());
}
@@ -45,7 +44,7 @@ public class OcrMessageSender implements IOcrMessageSender {
public void sendUpdate(String fileId, int finishedImages, int totalImages) {
rabbitTemplate.convertAndSend(MessagingConfiguration.OCR_STATUS_UPDATE_RESPONSE_QUEUE,
TenantContext.getTenantId(),
OCRStatusUpdateResponse.builder().fileId(fileId).numberOfPagesToOCR(totalImages).numberOfOCRedPages(finishedImages).build());
}
@@ -53,7 +52,7 @@ public class OcrMessageSender implements IOcrMessageSender {
public void sendOcrResponse(String dossierId, String fileId) {
rabbitTemplate.convertAndSend(MessagingConfiguration.OCR_RESPONSE_QUEUE, TenantContext.getTenantId(), new DocumentRequest(dossierId, fileId));
rabbitTemplate.convertAndSend(MessagingConfiguration.OCR_RESPONSE_QUEUE, new DocumentRequest(dossierId, fileId));
}
}