FOSSredder 0.5.0
Loading...
Searching...
No Matches
StatementParseHelpers.h
Go to the documentation of this file.
1
5
6#pragma once
7
16
17#include <filesystem>
18#include <memory>
19#include <sstream>
20#include <string>
21#include <utility>
22#include <vector>
23
25
54std::pair<int, bool> detectHeaderRegion(const std::vector<core::application::importing::transaction::internal::OcrLine>& lines, size_t scanLines);
61std::optional<std::string> findDefaultBookingDate(const std::vector<core::application::importing::transaction::internal::OcrLine>& lines, size_t scanLines) noexcept;
67std::optional<std::string> findBookingDateInHeader(const std::string& line) noexcept;
74bool detectEarlyEmptyPage(const std::vector<core::application::importing::transaction::internal::OcrLine>& lines, std::string& outDebug) noexcept;
82std::vector<core::application::importing::internal::RawLineLite> selectiveGroupMergeLinesRaw(const std::vector<core::application::importing::internal::RawLineLite>& lines,
83 int maxGapPx,
92std::optional<std::pair<core::application::importing::transaction::internal::TransactionMainRow, int>> tryVerticalStart(const std::vector<core::application::importing::transaction::internal::OcrLine>& lines,
93 size_t li,
102std::optional<std::pair<core::application::importing::transaction::internal::TransactionMainRow, int>> tryCombinedStart(const std::vector<core::application::importing::transaction::internal::OcrLine>& lines,
103 size_t li,
115 std::vector<std::string>* debugOut = nullptr) noexcept;
126 bool isGeom,
127 std::vector<std::string>& debugOut) noexcept;
137 const std::vector<core::application::importing::transaction::internal::OcrLine>& orphans,
138 int maxGapPx,
139 int valutaX,
140 std::vector<std::string>* debugOut = nullptr) noexcept;
150 const std::vector<core::application::importing::statement::internal::RawLine>& lines,
162 const std::vector<core::application::importing::transaction::internal::OcrLine>& orphanLines,
164 const std::string& currentBookingDate,
175 int headerBottomY,
176 const std::vector<core::application::importing::transaction::internal::TransactionBlock>& blocks,
177 int txStartLooseCount,
192 const core::ports::text_recognition::ExtractResult& ocr,
193 const std::shared_ptr<core::ports::document_image_processing::IDocumentImageProcessor>& documentImageProcessor,
194 const std::string& pageCropImagePath,
195 const std::vector<uint8_t>& pageCropImageBytes,
196 int& txIndex,
198
199}
Declares the public default statement parser used by the import pipeline.
Request types for document image processing operations.
Document image processing port for import workflows.
Declares low-level OCR helper routines for statement parsing.
Declares helper types used by statement parsing heuristics.
Result types for text recognition operations.
Draft transaction model used by import finalization and core application flow.
Declares the OCR transaction parser model types.
std::pair< int, bool > detectHeaderRegion(const std::vector< core::application::importing::transaction::internal::OcrLine > &lines, size_t scanLines)
Detects the most likely header region in the supplied OCR lines.
void appendPageSummary(const std::vector< core::application::importing::statement::internal::RawLine > &lines, int headerBottomY, const std::vector< core::application::importing::transaction::internal::TransactionBlock > &blocks, int txStartLooseCount, core::application::importing::statement::DefaultStatementParser::ParseResult &out)
Appends a page-level summary to the parser result.
bool isLikelyTransactionMainRowGeom(const core::application::importing::statement::internal::RawLine &line, const core::application::importing::statement::internal::ColumnModel &cols)
Checks whether a raw line likely contains a main transaction row.
HeaderAnalysis analyzeHeaderWindow(const std::vector< core::application::importing::transaction::internal::OcrLine > &ocrLines, const std::vector< core::application::importing::statement::internal::RawLine > &lines, const core::application::importing::statement::internal::ColumnModel &seedCols, core::application::importing::statement::DefaultStatementParser::ParseResult &out)
Analyzes the page header window and updates parser output state.
core::application::importing::transaction::internal::OcrLine rawToOcrLine(const core::application::importing::statement::internal::RawLine &line)
Converts a raw OCR line into a parser line model.
void attachOrphansToBlocks(std::vector< core::application::importing::transaction::internal::TransactionBlock > &blocks, const std::vector< core::application::importing::transaction::internal::OcrLine > &orphans, int maxGapPx, int valutaX, std::vector< std::string > *debugOut=nullptr) noexcept
Attaches orphan OCR lines to existing transaction blocks.
std::optional< std::string > findBookingDateInHeader(const std::string &line) noexcept
Extracts a booking date from a header line.
void rescueOrphanBlocks(std::vector< core::application::importing::transaction::internal::TransactionBlock > &blocks, const std::vector< core::application::importing::transaction::internal::OcrLine > &orphanLines, const core::application::importing::statement::internal::ColumnModel &cols, const std::string &currentBookingDate, core::application::importing::statement::DefaultStatementParser::ParseResult &out)
Reprocesses orphan transaction blocks against the current booking date and column model.
void appendDetailLine(core::application::importing::transaction::internal::TransactionBlock &cur, const core::application::importing::transaction::internal::OcrLine &line, const core::application::importing::internal::ColumnGuess &cols, std::vector< std::string > *debugOut=nullptr) noexcept
Appends a detail line to the current transaction block.
std::optional< std::pair< core::application::importing::transaction::internal::TransactionMainRow, int > > tryVerticalStart(const std::vector< core::application::importing::transaction::internal::OcrLine > &lines, size_t li, const core::application::importing::internal::ColumnGuess &cols) noexcept
Attempts to start a transaction block from a vertically aligned line.
std::optional< std::string > findDefaultBookingDate(const std::vector< core::application::importing::transaction::internal::OcrLine > &lines, size_t scanLines) noexcept
Finds a default booking date near the top of the parsed page.
bool detectEarlyEmptyPage(const std::vector< core::application::importing::transaction::internal::OcrLine > &lines, std::string &outDebug) noexcept
Detects whether a page is effectively empty before parsing continues.
std::vector< core::application::importing::internal::RawLineLite > selectiveGroupMergeLinesRaw(const std::vector< core::application::importing::internal::RawLineLite > &lines, int maxGapPx, const core::application::importing::internal::ColumnGuess &seedCols)
Merges nearby raw lines using the parser's selective grouping heuristic.
bool isLikelyTransactionHeaderLine(const core::application::importing::transaction::internal::OcrLine &line, const core::application::importing::statement::internal::ColumnModel &cols)
Checks whether an OCR line likely represents a transaction header row.
core::application::importing::transaction::internal::TransactionMainRow handleMainRow(const core::application::importing::transaction::internal::OcrLine &line, const core::application::importing::internal::ColumnGuess &cols, bool isGeom, std::vector< std::string > &debugOut) noexcept
Converts one OCR line into a transaction main row.
void appendTransactionsFromBlocks(const std::vector< core::application::importing::transaction::internal::TransactionBlock > &blocks, const core::application::importing::statement::internal::ColumnModel &cols, const core::ports::text_recognition::ExtractResult &ocr, const std::shared_ptr< core::ports::document_image_processing::IDocumentImageProcessor > &documentImageProcessor, const std::string &pageCropImagePath, const std::vector< uint8_t > &pageCropImageBytes, int &txIndex, core::application::importing::statement::DefaultStatementParser::ParseResult &out)
Converts parsed transaction blocks into drafts and extraction artifacts.
std::optional< std::pair< core::application::importing::transaction::internal::TransactionMainRow, int > > tryCombinedStart(const std::vector< core::application::importing::transaction::internal::OcrLine > &lines, size_t li, const core::application::importing::internal::ColumnGuess &cols) noexcept
Attempts to start a transaction block from a combined text pattern.
Stores the inferred column positions for an OCR page.
Represents the inferred transaction column layout for a page.
Holds the current header-detection state for one statement page.
Represents a merged raw OCR line before it is turned into parser lines.
Represents one OCR line with its bounding box and recognized text.
Groups the main row and detail rows of one parsed transaction block.