[package]
edition = "2024"
rust-version = "1.85"
name = "transmutation"
version = "0.3.2"
authors = ["HiveLLM Team <team@hivellm.org>"]
build = "build.rs"
exclude = [
"data/*",
"docling_parse",
"docling-parse/",
"build_*",
"libs/",
"*.pdf",
"*.mp3",
"*.mp4",
".github/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance document conversion engine for AI/LLM embeddings - 27 formats supported"
homepage = "https://hivellm.org/transmutation"
documentation = "https://docs.rs/transmutation"
readme = "README.md"
keywords = [
"document",
"conversion",
"pdf",
"llm",
"embedding",
]
categories = [
"parser-implementations",
"text-processing",
"multimedia",
]
license = "MIT"
repository = "https://github.com/hivellm/transmutation"
[package.metadata.deb]
assets = [
[
"target/release/transmutation",
"usr/bin/",
"755",
],
[
"README.md",
"usr/share/doc/transmutation/README",
"644",
],
[
"LICENSE",
"usr/share/doc/transmutation/LICENSE",
"644",
],
]
conf-files = []
depends = "$auto"
extended-description = "Transmutation is a high-performance document conversion engine for AI/LLM embeddings. Supports 27+ formats including PDF, Office docs, images, audio, and video. Built in Rust for maximum performance and safety."
license-file = [
"LICENSE",
"0",
]
maintainer = "HiveLLM Team <team@hivellm.org>"
maintainer-scripts = "debian/"
priority = "optional"
section = "text"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[package.metadata.wix]
eula = true
license = "wix/License.rtf"
path-guid = "87654321-4321-4321-4321-210987654321"
upgrade-guid = "12345678-1234-1234-1234-123456789012"
[features]
archives-extended = [
"tar",
"flate2",
"sevenz-rust",
]
audio = []
cli = [
"clap",
"indicatif",
"console",
"colored",
"winres",
]
default = ["office"]
docling-ffi = [
"dep:ort",
"dep:ndarray",
"dep:rstar",
"dep:pdfium-render",
]
full = [
"pdf-to-image",
"office",
"image-ocr",
"audio",
"video",
"archives-extended",
"cli",
]
image-ocr = ["tesseract"]
office = [
"docx-rs",
"umya-spreadsheet",
]
pdf-to-image = ["dep:pdfium-render"]
tesseract = [
"dep:tesseract",
"dep:leptess",
]
video = []
[lib]
name = "transmutation"
path = "src/lib.rs"
[[bin]]
name = "transmutation"
path = "src/bin/transmutation.rs"
required-features = ["cli"]
[[example]]
name = "advanced_options"
path = "examples/advanced_options.rs"
[[example]]
name = "basic_conversion"
path = "examples/basic_conversion.rs"
[[example]]
name = "batch_processing"
path = "examples/batch_processing.rs"
[[example]]
name = "batch_test"
path = "examples/batch_test.rs"
[[example]]
name = "debug_extract"
path = "examples/debug_extract.rs"
[[example]]
name = "debug_lopdf_pages"
path = "examples/debug_lopdf_pages.rs"
[[example]]
name = "debug_text_blocks"
path = "examples/debug_text_blocks.rs"
[[example]]
name = "pdf_conversion"
path = "examples/pdf_conversion.rs"
[[example]]
name = "test_convert"
path = "examples/test_convert.rs"
[[example]]
name = "test_features"
path = "examples/test_features.rs"
[[example]]
name = "test_ffi"
path = "examples/test_ffi.rs"
[[example]]
name = "test_pdf_extract"
path = "examples/test_pdf_extract.rs"
[[test]]
name = "pdf_tests"
path = "tests/pdf_tests.rs"
[[test]]
name = "pipeline_integration_test"
path = "tests/pipeline_integration_test.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.async-trait]
version = "0.1"
[dependencies.blake3]
version = "1.5"
[dependencies.clap]
version = "4.5"
features = [
"derive",
"cargo",
"env",
]
optional = true
[dependencies.colored]
version = "2.2"
optional = true
[dependencies.comrak]
version = "0.29"
[dependencies.console]
version = "0.15"
optional = true
[dependencies.dirs]
version = "5.0"
[dependencies.docx-rs]
version = "0.4"
optional = true
[dependencies.file-format]
version = "0.26"
[dependencies.flate2]
version = "1.0"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.html5ever]
version = "0.29"
[dependencies.image]
version = "0.25"
features = [
"png",
"jpeg",
"gif",
"bmp",
"tiff",
"webp",
]
[dependencies.imageproc]
version = "0.25"
[dependencies.indicatif]
version = "0.17"
optional = true
[dependencies.leptess]
version = "0.14"
optional = true
[dependencies.lopdf]
version = "0.35"
[dependencies.mime]
version = "0.3"
[dependencies.mime_guess]
version = "2.0"
[dependencies.ndarray]
version = "0.15"
optional = true
[dependencies.num_cpus]
version = "1.16"
[dependencies.once_cell]
version = "1.20"
[dependencies.ort]
version = "2.0.0-rc.10"
features = ["download-binaries"]
optional = true
[dependencies.pdf-extract]
version = "0.7"
[dependencies.pdfium-render]
version = "0.8"
optional = true
[dependencies.pulldown-cmark]
version = "0.13"
[dependencies.quick-xml]
version = "0.37"
[dependencies.rayon]
version = "1.10"
[dependencies.regex]
version = "1.11"
[dependencies.roxmltree]
version = "0.21"
optional = true
[dependencies.rstar]
version = "0.12"
optional = true
[dependencies.scraper]
version = "0.21"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sevenz-rust]
version = "0.6"
optional = true
[dependencies.sha2]
version = "0.10"
[dependencies.tar]
version = "0.4"
optional = true
[dependencies.tempfile]
version = "3.20"
[dependencies.tesseract]
version = "0.15"
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.47"
features = ["full"]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.30"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]
[dependencies.umya-spreadsheet]
version = "2.3"
optional = true
[dependencies.walkdir]
version = "2.5"
[dependencies.zip]
version = "6.0"
[dev-dependencies.criterion]
version = "0.6"
features = [
"async_tokio",
"html_reports",
]
[dev-dependencies.mockall]
version = "0.13"
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.proptest]
version = "1.6"
[dev-dependencies.tempfile]
version = "3.20"
[dev-dependencies.tokio-test]
version = "0.4"
[build-dependencies.winres]
version = "0.1"
optional = true
[lints.clippy]
cast_lossless = "warn"
doc_link_with_quotes = "warn"
enum_glob_use = "warn"
explicit_into_iter_loop = "warn"
filter_map_next = "warn"
flat_map_option = "warn"
from_iter_instead_of_collect = "warn"
implicit_clone = "warn"
inconsistent_struct_constructor = "warn"
inefficient_to_string = "warn"
manual_is_variant_and = "warn"
manual_let_else = "warn"
match_wildcard_for_single_variants = "warn"
needless_continue = "warn"
needless_pass_by_ref_mut = "warn"
needless_raw_string_hashes = "warn"
ptr_as_ptr = "warn"
ref_option_ref = "warn"
uninlined_format_args = "warn"
unnecessary_wraps = "warn"
unused_self = "warn"
used_underscore_binding = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(tokio_unstable)"]
[lints.rustdoc]
private_intra_doc_links = "allow"
[profile.bench]
opt-level = 3
lto = true
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true