// Generated by alef. Do not edit by hand.
@file:Suppress(
    "ktlint:standard:trailing-comma-on-call-site",
    "ktlint:standard:trailing-comma-on-declaration-site",
    "ktlint:standard:spacing-between-declarations-with-comments",
    "ktlint:standard:spacing-between-declarations-with-annotations",
    "ktlint:standard:when-entry-bracing",
    "ktlint:standard:blank-line-between-when-conditions",
    "ktlint:standard:blank-line-before-declaration",
    "ktlint:standard:chain-method-continuation",
    "ktlint:standard:annotation",
    "ktlint:standard:max-line-length",
    "ktlint:standard:no-semi",
    "ktlint:standard:statement-wrapping",
    "MaxLineLength",
    "TooManyFunctions",
    "FunctionParameterNaming",
    "LongParameterList",
    "CyclomaticComplexMethod",
    "LongMethod",
)

package dev.kreuzberg

/**
 * Image preprocessing configuration for OCR.
 *
 * These settings control how images are preprocessed before OCR to improve
 * text recognition quality. Different preprocessing strategies work better
 * for different document types.
 */
data class ImagePreprocessingConfig(
    /** Target DPI for the image (300 is standard, 600 for small text). */
    val targetDpi: Int = 300,
    /** Auto-detect and correct image rotation. */
    val autoRotate: Boolean = true,
    /** Correct skew (tilted images). */
    val deskew: Boolean = true,
    /** Remove noise from the image. */
    val denoise: Boolean = false,
    /** Enhance contrast for better text visibility. */
    val contrastEnhance: Boolean = false,
    /** Binarization method: "otsu", "sauvola", "adaptive". */
    val binarizationMethod: String = "otsu",
    /** Invert colors (white text on black → black on white). */
    val invertColors: Boolean = false,
)
