PdfOcrExtractionNodeConfiguration
Namespace: Meshmakers.Octo.MeshAdapter.Nodes.Transform
Configuration for PDF OCR extraction node that uses IronOCR to extract text and data from PDF files
public record PdfOcrExtractionNodeConfiguration : SourceTargetPathNodeConfiguration, INodeConfiguration, IEquatable<NodeConfiguration>, ITargetPathNodeConfiguration, IEquatable<TargetPathNodeConfiguration>, IPathNodeConfiguration, IEquatable<SourceTargetPathNodeConfiguration>, IEquatable<PdfOcrExtractionNodeConfiguration>
Inheritance Object → NodeConfiguration → TargetPathNodeConfiguration → SourceTargetPathNodeConfiguration → PdfOcrExtractionNodeConfiguration
Implements INodeConfiguration, IEquatable<NodeConfiguration>, ITargetPathNodeConfiguration, IEquatable<TargetPathNodeConfiguration>, IPathNodeConfiguration, IEquatable<SourceTargetPathNodeConfiguration>, IEquatable<PdfOcrExtractionNodeConfiguration>
Properties
PageNumbers
Specific page numbers to process (if not set, all pages will be processed)
public Int32[] PageNumbers { get; set; }
Property Value
Language
OCR language code (e.g., 'en', 'de', 'fr')
public string Language { get; set; }
Property Value
ExtractTables
Whether to extract tables from the PDF
public bool ExtractTables { get; set; }
Property Value
TablesOutputPath
Output path for extracted tables
public string TablesOutputPath { get; set; }
Property Value
ExtractBarcodes
Whether to extract barcodes from the PDF
public bool ExtractBarcodes { get; set; }
Property Value
BarcodesOutputPath
Output path for extracted barcodes
public string BarcodesOutputPath { get; set; }
Property Value
IncludeConfidence
Whether to include OCR confidence score in output
public bool IncludeConfidence { get; set; }
Property Value
ConfidenceOutputPath
Output path for OCR confidence score
public string ConfidenceOutputPath { get; set; }
Property Value
ContinueOnError
Whether to continue processing if OCR extraction fails
public bool ContinueOnError { get; set; }
Property Value
MaxFileSizeBytes
Maximum accepted PDF size in bytes. Files larger than this abort the node with a FileTooLarge error. Defaults to 1 MB (the previously hard-coded limit); raise it for pipelines that process real-world scans.
public int MaxFileSizeBytes { get; set; }
Property Value
EnhanceImage
Input handling: the node auto-detects PDF vs. image (JPEG/PNG/TIFF/…) by magic bytes. When the input is an image and this is enabled (default), IronOCR pre-processing filters (deskew + denoise) are applied first so casual phone photos of documents OCR much better. Disable to feed the raw image unmodified.
public bool EnhanceImage { get; set; }
Property Value
MaxDeskewAngle
Maximum in-plane skew angle (degrees) the deskew filter corrects on image input. Higher values catch more tilt but are slower and can misfire. Only used when PdfOcrExtractionNodeConfiguration.EnhanceImage is enabled. Note: this corrects rotation, not perspective distortion (angled shots) — that needs a separate document-detection step.
public int MaxDeskewAngle { get; set; }
Property Value
PreferTextLayer
For PDF input, extract the embedded text layer first (digital PDFs) and only fall back to raster+Tesseract OCR when the layer is missing or too sparse (scanned/image PDFs). The text layer is exact where OCR is lossy: Tesseract drops separator-less alphanumeric codes such as invoice numbers and mangles non-German diacritics. Enabled by default. Ignored for image input and when PdfOcrExtractionNodeConfiguration.ExtractTables or PdfOcrExtractionNodeConfiguration.ExtractBarcodes is requested (those only come from the OCR path). AB#4528.
public bool PreferTextLayer { get; set; }
Property Value
MinTextLayerChars
Minimum number of characters the embedded PDF text layer must yield for it to be treated as a digital PDF and used in place of OCR. Below this threshold the PDF is assumed to be a scan (empty/near-empty text layer) and the node falls back to Tesseract OCR. Only used when PdfOcrExtractionNodeConfiguration.PreferTextLayer is enabled.
public int MinTextLayerChars { get; set; }
Property Value
MergeOcrOnIncompleteTextLayer
Treat a sufficiently long text layer as a CANDIDATE rather than as the answer. Hybrid PDFs carry a text layer for the LABELS while rendering the FIGURES as embedded images — the layer is present and well above PdfOcrExtractionNodeConfiguration.MinTextLayerChars, yet every amount is missing (prod-1 2026-09-15: an invoice whose text layer yielded "Gesamt" / "MWSt 20%" / "Bruttosumme" with no numbers at all, while the amount column was one of 43 embedded stencil images). When enabled (default) and a total/amount label has no number next to it, the node additionally runs OCR and MERGES both reads: the text layer stays authoritative (it is verbatim where it has content) and OCR only contributes lines carrying tokens the text layer does not have. Only used when PdfOcrExtractionNodeConfiguration.PreferTextLayer is enabled. AB#5259.
public bool MergeOcrOnIncompleteTextLayer { get; set; }
Property Value
AmountLabels
Labels next to which a monetary figure is expected, used by the completeness check of PdfOcrExtractionNodeConfiguration.MergeOcrOnIncompleteTextLayer. Matched case-insensitively as substrings of a text-layer line. Leave unset to use the built-in German/English invoice vocabulary. A document that carries none of these labels is not an invoice as far as this check is concerned and is never sent through the merge path. AB#5259.
public String[] AmountLabels { get; set; }
Property Value
Path
public string Path { get; set; }
Property Value
TargetPath
public string TargetPath { get; set; }
Property Value
TargetValueWriteMode
public TargetValueWriteModes TargetValueWriteMode { get; set; }
Property Value
TargetValueWriteModes
TargetValueKind
public ValueKinds TargetValueKind { get; set; }
Property Value
ValueKinds
DocumentMode
public DocumentModes DocumentMode { get; set; }
Property Value
DocumentModes
Description
public string Description { get; set; }
Property Value
Constructors
PdfOcrExtractionNodeConfiguration()
public PdfOcrExtractionNodeConfiguration()