[package]
name = "kalosm-ocr"
version = "0.4.0"
edition = "2021"
description = "A simple interface for pretrained OCR models "
license = "MIT/Apache-2.0"
repository = "https://github.com/floneum/floneum"
authors = ["Evan Almloff <evanalmloff@gmail.com>"]
keywords = ["ai", "ocr", "transformers"]

[dependencies]
candle-core.workspace = true
candle-nn.workspace = true
candle-transformers.workspace = true
tokenizers = { workspace = true, features = ["onig"] }
hf-hub = "0.3.0"

accelerate-src = { version = "0.3.2", optional = true }
intel-mkl-src = { version = "0.8.1", features = ["mkl-static-lp64-iomp"], optional = true }
cudarc = { version = "0.9.14", features = ["f16"], optional = true }
half = { version = "2.3.1", features = ["num-traits", "use-intrinsics", "rand_distr"], optional = true }
thiserror.workspace = true

tracing = "0.1.37"
image.workspace = true
serde = "1.0.193"
serde_json = "1.0"
kalosm-common = { workspace = true, features = ["tokio"] }
kalosm-model-types = { workspace = true }

[dev-dependencies]
tokio = { version = "1.32.0", features = ["full"] }

[features]
flash = ["candle-transformers/flash-attn"]
accelerate = ["dep:accelerate-src", "candle-core/accelerate", "candle-nn/accelerate", "candle-transformers/accelerate"]
cuda = ["candle-core/cuda", "candle-nn/cuda", "candle-transformers/cuda"]
cudnn = ["candle-core/cudnn"]
mkl = ["dep:intel-mkl-src", "candle-core/mkl", "candle-nn/mkl", "candle-transformers/mkl"]
nccl = ["cuda", "cudarc/nccl", "dep:half"]
metal = ["candle-core/metal", "candle-nn/metal", "candle-transformers/metal", "kalosm-common/metal"]