FOSSredder 0.5.0
Loading...
Searching...
No Matches
ImportPageRequests.h
Go to the documentation of this file.
1
5
6#pragma once
7
12#include "ImportConstants.h"
15
16#include <cmath>
17#include <string>
18#include <vector>
19
21
23{
25 settings.psm = defaultPsm;
26 return settings;
27}
28
29inline core::ports::document_image_processing::MaskRequest buildMaskRequest(const std::vector<uint8_t>& pageBytes,
30 size_t pageIndex,
31 const ImportRequest& req,
33{
35 request.imageBytes = pageBytes;
37 request.filePrefix = std::string(constants::kDocumentImageProcessingMaskPrefix) + std::to_string(pageIndex + 1);
38 request.usePoppler = true;
39 request.useMorphology = true;
40 request.useTesseract = false;
41 request.cancelFlag = req.cancelFlag;
42
43 if (pageIndex < extractRes.pages.size()) {
44 const auto& pageExtract = extractRes.pages[pageIndex];
45 const double scaleX = pageExtract.dpiX / 72.0;
46 const double scaleY = pageExtract.dpiY / 72.0;
47 for (const auto& textElement : pageExtract.textElements) {
49 rect.x = static_cast<int>(std::round(textElement.x * scaleX));
50 rect.y = static_cast<int>(std::round(textElement.y * scaleY));
51 rect.width = static_cast<int>(std::round(textElement.width * scaleX));
52 rect.height = static_cast<int>(std::round(textElement.height * scaleY));
53 if (rect.width <= 1 || rect.height <= 1) continue;
54 request.textElements.push_back(rect);
55 }
56 }
57
58 if (request.textElements.empty()) request.useTesseract = true;
59 return request;
60}
61
62inline core::ports::text_recognition::ExtractRequest buildMaskOcrRequest(const std::vector<uint8_t>& pageBytes,
63 const ImportRequest& req)
64{
66 request.imageBytes.assign(pageBytes.begin(), pageBytes.end());
67 return request;
68}
69
71 size_t pageIndex,
72 const ImportRequest& req)
73{
75 request.imageBytes = maskedBytes;
77 request.filePrefix = std::string(constants::kDocumentImageProcessingDetectPrefix) + std::to_string(pageIndex + 1);
79 request.cancelFlag = req.cancelFlag;
80 return request;
81}
82
83inline core::ports::document_image_processing::CropRequest buildCropRequest(const std::vector<uint8_t>& pageBytes,
84 size_t pageIndex,
85 const ImportRequest& req,
87{
89 request.imageBytes = pageBytes;
91 request.filePrefix = std::string(constants::kDocumentImageProcessingCropPrefix) + std::to_string(pageIndex + 1);
92 request.bbox = detectResponse.table.bbox;
93 request.cancelFlag = req.cancelFlag;
94 return request;
95}
96
97inline core::ports::text_recognition::ExtractRequest buildTableOcrRequest(const std::vector<uint8_t>& croppedBytes,
98 size_t pageIndex,
99 const ImportRequest& req,
101{
103 request.imageBytes = croppedBytes;
104 request.cancelFlag = req.cancelFlag;
105
106 return request;
107}
108
109}
Request types for document image processing operations.
Result types for document image processing operations.
Defines private constants shared by core import orchestration.
Result types for PDF rendering operations.
Request types for text recognition operations.
Declares private unique identifier helpers for transient import/job artifacts.
Declares the import execution request contract.
constexpr std::string_view kDocumentImageProcessingCropPrefix
constexpr std::string_view kDocumentImageProcessingDetectPrefix
constexpr std::string_view kDocumentImageProcessingMaskPrefix
core::ports::document_image_processing::DetectRequest buildDetectRequest(const std::vector< uint8_t > &maskedBytes, size_t pageIndex, const ImportRequest &req)
core::ports::document_image_processing::CropRequest buildCropRequest(const std::vector< uint8_t > &pageBytes, size_t pageIndex, const ImportRequest &req, const core::ports::document_image_processing::DetectResult &detectResponse)
core::ports::text_recognition::Settings buildRecognitionSettings(int defaultPsm)
core::ports::text_recognition::ExtractRequest buildTableOcrRequest(const std::vector< uint8_t > &croppedBytes, size_t pageIndex, const ImportRequest &req, const core::ports::document_image_processing::DetectResult &detectResponse)
core::ports::document_image_processing::MaskRequest buildMaskRequest(const std::vector< uint8_t > &pageBytes, size_t pageIndex, const ImportRequest &req, const core::ports::pdf_rendering::ExtractResult &extractRes)
core::ports::text_recognition::ExtractRequest buildMaskOcrRequest(const std::vector< uint8_t > &pageBytes, const ImportRequest &req)
std::string makeTransientId()
Generates a transient unique identifier for import and job artifacts.
enum core::ports::document_image_processing::DetectRequest::DetectKind kind
std::shared_ptr< std::atomic< bool > > cancelFlag