[package]
edition = "2024"
rust-version = "1.92"
name = "xberg"
version = "1.2.2"
authors = ["Na'aman Hirschfeld <naaman@xberg.io>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance document intelligence library for Rust. Extract text, metadata, and structured data from PDFs, Office documents, images, and 107 formats and 371 programming languages via tree-sitter code intelligence with async/sync APIs."
homepage = "https://xberg.io"
documentation = "https://docs.rs/xberg"
readme = "README.md"
keywords = [
"document",
"extraction",
"pdf",
"ocr",
"parser",
]
categories = [
"parser-implementations",
"text-processing",
]
license = "MIT"
repository = "https://github.com/xberg-io/xberg"
resolver = "2"
[package.metadata.cargo-machete]
ignored = [
"tracing-opentelemetry",
"icu_provider",
"serde_toon_format",
"tokenizers-model2vec",
"getrandom",
"getrandom_02",
"getrandom_03",
]
[features]
analysis = [
"language-detection",
"chunking",
"quality",
"keywords",
"markdown-footnotes",
"diff",
]
android-target = [
"no-ort-target",
"sqlite",
"excel",
"tree-sitter",
"ocr",
"sceptre-ocr-tract",
"auto-rotate-tract",
"layout-tract",
"paddle-ocr-tract",
"api",
"mcp",
"liter-llm",
"structured",
"hwpx",
"diff",
"classification",
"captioning",
"ner-llm",
"url-ingestion",
]
api = [
"api-types",
"tower-service",
"dep:axum",
"dep:chrono",
"dep:moka",
"dep:tower-http",
"dep:utoipa",
"dep:uuid",
"tokio-runtime",
"tokio?/signal",
"chunking",
]
api-types = []
archives = [
"dep:zip",
"dep:tar",
"dep:sevenz-rust2",
"dep:flate2",
]
auto-rotate = [
"auto-rotate-types",
"tokio-runtime",
"dep:ort",
"dep:ndarray",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
"dep:image",
"dep:ureq",
"ort-bundled",
]
auto-rotate-tract = [
"auto-rotate-types",
"tract",
"dep:ndarray",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
"dep:image",
"dep:ureq",
"tokio-runtime",
]
auto-rotate-types = []
bedrock = ["liter-llm?/bedrock"]
bundle-tessdata-eng = ["xberg-tesseract/bundle-tessdata-eng"]
candle-accelerate = [
"candle-ocr",
"xberg-candle-ocr/accelerate",
]
candle-cuda = [
"candle-ocr",
"xberg-candle-ocr/cuda",
]
candle-deepseek-ocr = [
"candle-ocr",
"xberg-candle-ocr/deepseek-ocr",
]
candle-glm-ocr = [
"candle-ocr",
"xberg-candle-ocr/glm-ocr",
"layout-detection",
]
candle-metal = [
"candle-ocr",
"xberg-candle-ocr/metal",
]
candle-mkl = [
"candle-ocr",
"xberg-candle-ocr/mkl",
]
candle-ocr = [
"dep:xberg-candle-ocr",
"dep:image",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
"ocr-pipeline",
"tokio-runtime",
]
candle-paddleocr-vl = [
"candle-ocr",
"xberg-candle-ocr/paddleocr-vl",
]
candle-trocr = [
"candle-ocr",
"xberg-candle-ocr/trocr",
]
candle-vlm-ocr = [
"candle-deepseek-ocr",
"candle-paddleocr-vl",
"candle-glm-ocr",
"candle-trocr",
]
captioning = [
"liter-llm",
"tokio-runtime",
]
chunking = [
"dep:auto_enums",
"dep:either",
"dep:icu_provider",
"dep:icu_segmenter",
"dep:itertools",
"dep:strum",
]
chunking-tokenizers = [
"chunking",
"tokio-runtime",
"dep:tokenizers",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
]
classification = [
"liter-llm",
"tokio-runtime",
]
cli = [
"services",
"chunking",
"url-ingestion",
]
coreml = ["ort?/coreml"]
cuda = ["ort?/cuda"]
default = [
"tokio-runtime",
"simd-utf8",
]
diff = ["dep:similar"]
email = [
"dep:mail-parser",
"dep:cfb",
"dep:outlook-pst",
"dep:tempfile",
"dep:chrono",
"dep:chardetng",
"html",
]
embedding-presets = []
embeddings = [
"onnx-runtime",
"dep:ndarray",
"dep:lru",
"chunking",
"tokio-runtime",
"embedding-presets",
]
enrichment = []
excel = [
"dep:calamine",
"dep:roxmltree",
"dep:zip",
"dep:quick-xml",
"tokio-runtime",
]
excel-wasm = [
"dep:calamine",
"dep:roxmltree",
"dep:zip",
]
formats = [
"pdf",
"excel",
"office",
"notebook",
"hwp",
"hwpx",
"iwork",
"email",
"html",
"xml",
"archives",
"sqlite",
"mdx",
"svg",
"heic",
"wordperfect",
]
formats-no-heic = [
"pdf",
"excel",
"office",
"notebook",
"hwp",
"hwpx",
"iwork",
"email",
"html",
"xml",
"archives",
"sqlite",
"mdx",
"svg",
"wordperfect",
]
formula-recognition = [
"layout-detection",
"ocr-pipeline",
"dep:tokenizers",
"dep:ureq",
]
full = [
"formats",
"analysis",
"services",
"url-ingestion",
"ocr",
"paddle-ocr",
"sceptre-ocr",
"layout-detection",
"candle-vlm-ocr",
"embeddings",
"static-embeddings",
"reranker",
"sparse-embeddings",
"late-interaction",
"transcription",
"chunking-tokenizers",
"enrichment",
"heuristics",
"tree-sitter",
"liter-llm",
"tokio-runtime",
"diff",
"ner-llm",
"ner-onnx",
"presets",
"structured",
"redaction",
"redaction-ml",
"redaction-rehydrate",
"summarization",
"summarization-llm",
"translation",
"classification",
"captioning",
"qr-codes",
"heic",
"wordperfect",
]
full-no-heic = [
"formats-no-heic",
"analysis",
"services",
"url-ingestion",
"ocr",
"paddle-ocr",
"sceptre-ocr",
"layout-detection",
"embeddings",
"static-embeddings",
"reranker",
"sparse-embeddings",
"late-interaction",
"transcription",
"chunking-tokenizers",
"enrichment",
"heuristics",
"tree-sitter",
"liter-llm",
"tokio-runtime",
"diff",
"ner-llm",
"ner-onnx",
"presets",
"structured",
"redaction",
"redaction-ml",
"redaction-rehydrate",
"summarization",
"summarization-llm",
"translation",
"classification",
"captioning",
"qr-codes",
"wordperfect",
]
heic = [
"dep:xberg-libheif",
"dep:image",
"dep:nom-exif",
"image-encode",
]
heuristics = []
html = [
"dep:html-to-markdown-rs",
"dep:v_htmlescape",
]
hwp = [
"dep:cfb",
"dep:flate2",
]
hwpx = [
"dep:unhwp",
"dep:zip",
"dep:quick-xml",
]
image-encode = ["dep:image"]
iwork = [
"dep:zip",
"dep:snap",
]
keywords = [
"keywords-yake",
"keywords-rake",
]
keywords-rake = [
"dep:rake",
"stopwords",
]
keywords-yake = ["stopwords"]
language-detection = ["dep:whatlang"]
late-interaction = [
"late-interaction-presets",
"onnx-runtime",
"dep:ndarray",
"dep:lru",
"tokio-runtime",
]
late-interaction-presets = []
layout-detection = [
"layout-types",
"dep:fs2",
"dep:ort",
"dep:ndarray",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:image",
"tokio-runtime",
"ort-bundled",
]
layout-tract = [
"layout-types",
"tract",
"dep:fs2",
"dep:ndarray",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:image",
"tokio-runtime",
]
layout-types = []
liter-llm = [
"dep:liter-llm",
"dep:minijinja",
"dep:ureq",
"dep:secrecy",
"ocr-pipeline",
]
macos-intel-target = [
"full-no-heic",
"ort-dynamic",
]
markdown-footnotes = []
mcp = [
"tower-service",
"dep:rmcp",
"tokio-runtime",
]
mcp-http = [
"mcp",
"api",
]
mdx = []
mobile = [
"formats",
"analysis",
"ocr",
"tree-sitter",
"api-types",
"tokio-runtime",
]
ner = []
ner-candle = [
"ner-candle-backend",
"tokio-runtime",
]
ner-candle-backend = [
"ner",
"dep:xberg-gliner",
"xberg-gliner/candle",
]
ner-candle-wasm = ["ner-candle-backend"]
ner-llm = [
"ner",
"liter-llm",
]
ner-onnx = [
"ner",
"dep:xberg-gliner",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
"ort-bundled",
"tokio-runtime",
]
no-ort-target = [
"pdf",
"html",
"xml",
"email",
"language-detection",
"chunking",
"chunking-tokenizers",
"quality",
"keywords",
"markdown-footnotes",
"enrichment",
"heuristics",
"office",
"iwork",
"hwp",
"mdx",
"archives",
"stopwords",
"embedding-presets",
"static-embeddings",
"reranker-presets",
"sparse-embedding-presets",
"late-interaction-presets",
"layout-types",
"auto-rotate-types",
"paddle-ocr-types",
"ner",
"presets",
"redaction",
"summarization",
"qr-codes",
"svg",
"transcription-types",
]
notebook = ["html"]
ocr = [
"ocr-pipeline",
"tokio-runtime",
"dep:xberg-tesseract",
"dep:image",
"dep:tiff",
"dep:fast_image_resize",
"dep:nom-exif",
"dep:hayro-jpeg2000",
"dep:hayro-jbig2",
"dep:ureq",
"html",
]
ocr-pipeline = [
"dep:image",
"image-encode",
"dep:fast_image_resize",
]
ocr-wasm = [
"ocr-pipeline",
"dep:xberg-tesseract",
"dep:image",
"dep:nom-exif",
"dep:hayro-jpeg2000",
"dep:hayro-jbig2",
]
office = [
"dep:cfb",
"dep:roxmltree",
"dep:zip",
"dep:quick-xml",
"dep:biblatex",
"dep:biblib",
"dep:org",
"dep:dbase",
"dep:typst-syntax",
"dep:mathemascii",
"dep:html-escape",
"html",
"notebook",
]
onnx-runtime = [
"tokio-runtime",
"dep:hf-hub",
"dep:reqwest",
"dep:ort",
"dep:tokenizers",
"dep:sha2",
"dep:fs2",
"ort-bundled",
]
ort-bundled = [
"ort?/download-binaries",
"ort?/tls-rustls",
"xberg-gliner?/ort-bundled",
]
ort-dynamic = [
"ort?/load-dynamic",
"xberg-gliner?/ort-dynamic",
]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:tracing-opentelemetry",
"crawlberg?/otel",
"liter-llm?/otel",
]
paddle-ocr = ["paddle-ocr-ort"]
paddle-ocr-ort = [
"paddle-ocr-types",
"dep:xberg-paddle-ocr",
"xberg-paddle-ocr/ort",
"dep:sha2",
"dep:image",
"dep:hf-hub",
"dep:reqwest",
"dep:ureq",
"dep:ort",
"image-encode",
"dep:ndarray",
"html",
"tokio-runtime",
"ocr",
"auto-rotate",
]
paddle-ocr-tract = [
"paddle-ocr-types",
"dep:xberg-paddle-ocr",
"xberg-paddle-ocr/tract",
"dep:sha2",
"dep:image",
"dep:hf-hub",
"dep:reqwest",
"dep:ureq",
"image-encode",
"dep:ndarray",
"html",
"tokio-runtime",
"ocr",
"auto-rotate-tract",
"tract",
]
paddle-ocr-types = []
pdf = ["pdf-native"]
pdf-native = [
"dep:xberg-native-pdf",
"dep:lopdf",
"dep:image",
"dep:flate2",
"html",
"image-encode",
]
pdf-pdfium = [
"dep:pdfium-render",
"tokio-runtime",
]
presets = [
"dep:include_dir",
"dep:jsonschema",
"dep:sha2",
]
profiling = []
prometheus = [
"api",
"otel",
"dep:opentelemetry-prometheus",
"dep:prometheus",
]
qr-codes = [
"dep:rqrr",
"dep:image",
]
quality = [
"dep:unicode-normalization",
"dep:chardetng",
"stopwords",
]
redaction = ["dep:sha2"]
redaction-ml = [
"redaction",
"ner",
]
redaction-rehydrate = [
"redaction",
"dep:aes-gcm",
"dep:scrypt",
"dep:zeroize",
]
reranker = [
"reranker-presets",
"onnx-runtime",
"dep:ndarray",
"dep:lru",
"tokio-runtime",
]
reranker-presets = []
sceptre-ocr = ["sceptre-ocr-ort"]
sceptre-ocr-candle = [
"dep:sceptre",
"sceptre/candle",
"ocr-pipeline",
"tokio-runtime",
]
sceptre-ocr-candle-cuda = [
"sceptre-ocr-candle",
"sceptre/candle-cuda",
]
sceptre-ocr-candle-metal = [
"sceptre-ocr-candle",
"sceptre/candle-metal",
]
sceptre-ocr-ort = [
"dep:sceptre",
"sceptre/ort-bundled",
"sceptre/download",
"ocr-pipeline",
"tokio-runtime",
]
sceptre-ocr-tract = [
"dep:sceptre",
"sceptre/tract",
"ocr-pipeline",
"tokio-runtime",
]
sceptre-wasm = [
"dep:sceptre",
"sceptre/tract",
"image-encode",
]
server = [
"formats",
"analysis",
"services",
"url-ingestion",
"ocr",
"paddle-ocr",
"sceptre-ocr",
"layout-detection",
]
services = [
"api",
"mcp",
"otel",
]
simd-utf8 = ["dep:simdutf8"]
sparse-embedding-presets = []
sparse-embeddings = [
"sparse-embedding-presets",
"onnx-runtime",
"dep:ndarray",
"dep:lru",
"tokio-runtime",
]
sqlite = [
"dep:rusqlite",
"tokio-runtime",
]
static-embeddings = [
"embedding-presets",
"tokio-runtime",
"dep:lru",
"dep:model2vec-rs",
"dep:tokenizers-model2vec",
"dep:tokenizers",
"dep:ndarray",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
]
stopwords = []
structured = [
"liter-llm",
"tokio-runtime",
]
summarization = ["stopwords"]
summarization-llm = [
"summarization",
"liter-llm",
]
svg = [
"dep:resvg",
"dep:usvg",
"image-encode",
]
tensorrt = ["ort?/tensorrt"]
tesseract-dynamic = ["xberg-tesseract?/system-linking"]
tokio-runtime = ["dep:tokio"]
tower-service = [
"dep:tower",
"tokio-runtime",
]
tract = [
"dep:tract-onnx",
"dep:ndarray",
]
transcription = [
"transcription-types",
"dep:mel_spec",
"dep:ndarray",
"dep:ort",
"dep:hf-hub",
"dep:reqwest",
"dep:sha2",
"dep:fs2",
"dep:symphonia",
"dep:lofty",
"dep:tokenizers",
"ort-bundled",
"tokio-runtime",
]
transcription-types = []
translation = ["liter-llm"]
tree-sitter = ["dep:tree-sitter-language-pack"]
tree-sitter-wasm = ["tree-sitter"]
url-config-types = ["dep:crawlberg"]
url-ingestion = [
"url-config-types",
"crawlberg/native-runtime",
]
url-ingestion-browser = [
"url-ingestion",
"crawlberg/browser",
]
wasm-target = [
"no-ort-target",
"excel-wasm",
"ocr-wasm",
"layout-tract",
"auto-rotate-tract",
"ner-candle-wasm",
"hwpx",
]
windows-gnu-target = [
"pdf",
"ocr",
"chunking",
"keywords",
"language-detection",
"html",
"tree-sitter",
"office",
"sqlite",
"excel",
"hwp",
"hwpx",
"iwork",
"mdx",
"email",
"archives",
"stopwords",
"auto-rotate-types",
"layout-types",
"paddle-ocr-types",
"embedding-presets",
"static-embeddings",
"reranker-presets",
"sparse-embedding-presets",
"late-interaction-presets",
"transcription-types",
"ner",
"presets",
"redaction",
"redaction-rehydrate",
"diff",
"qr-codes",
"summarization",
"tokio-runtime",
"api",
"mcp",
"liter-llm",
"classification",
"captioning",
"ner-llm",
"redaction-ml",
"summarization-llm",
"translation",
"structured",
"quality",
"heuristics",
"enrichment",
"xml",
"svg",
"chunking-tokenizers",
"url-ingestion",
"markdown-footnotes",
"otel",
"wordperfect",
]
windows-target = [
"pdf",
"ocr",
"chunking",
"keywords",
"language-detection",
"html",
"tree-sitter",
"office",
"sqlite",
"excel",
"hwp",
"hwpx",
"iwork",
"mdx",
"email",
"archives",
"stopwords",
"auto-rotate",
"layout-detection",
"paddle-ocr",
"sceptre-ocr",
"candle-vlm-ocr",
"embeddings",
"static-embeddings",
"reranker",
"sparse-embeddings",
"late-interaction",
"transcription",
"ner-onnx",
"ner",
"presets",
"redaction",
"redaction-rehydrate",
"diff",
"qr-codes",
"summarization",
"tokio-runtime",
"api",
"mcp",
"liter-llm",
"classification",
"captioning",
"ner-llm",
"redaction-ml",
"summarization-llm",
"translation",
"structured",
"quality",
"heuristics",
"enrichment",
"xml",
"svg",
"chunking-tokenizers",
"url-ingestion",
"markdown-footnotes",
"otel",
"wordperfect",
]
wordperfect = ["dep:xberg-libwpd"]
xml = [
"dep:quick-xml",
"dep:roxmltree",
]
[lib]
name = "xberg"
crate-type = ["rlib"]
path = "src/lib.rs"
[[test]]
name = "api_consistency"
path = "tests/api_consistency.rs"
[[test]]
name = "api_extract_multipart"
path = "tests/api_extract_multipart.rs"
[[test]]
name = "api_logging"
path = "tests/api_logging.rs"
[[test]]
name = "api_openweb"
path = "tests/api_openweb.rs"
[[test]]
name = "archive_integration"
path = "tests/archive_integration.rs"
[[test]]
name = "batch_orchestration"
path = "tests/batch_orchestration.rs"
[[test]]
name = "batch_per_item_config_overrides"
path = "tests/batch_per_item_config_overrides.rs"
[[test]]
name = "batch_processing"
path = "tests/batch_processing.rs"
[[test]]
name = "batch_url_order_isolation"
path = "tests/batch_url_order_isolation.rs"
[[test]]
name = "bedrock_config"
path = "tests/bedrock_config.rs"
[[test]]
name = "bibtex_parity_test"
path = "tests/bibtex_parity_test.rs"
[[test]]
name = "cancellation_public_api"
path = "tests/cancellation_public_api.rs"
[[test]]
name = "candle_backends"
path = "tests/candle_backends.rs"
[[test]]
name = "captioning_api"
path = "tests/captioning_api.rs"
[[test]]
name = "captioning_smoke"
path = "tests/captioning_smoke.rs"
required-features = [
"captioning",
"pdf",
]
[[test]]
name = "chunking_tokenizer_plugin"
path = "tests/chunking_tokenizer_plugin.rs"
[[test]]
name = "classification"
path = "tests/classification.rs"
[[test]]
name = "concurrency_stress"
path = "tests/concurrency_stress.rs"
[[test]]
name = "config_behavioral"
path = "tests/config_behavioral.rs"
[[test]]
name = "config_features"
path = "tests/config_features.rs"
[[test]]
name = "config_integration_test"
path = "tests/config_integration_test.rs"
[[test]]
name = "config_loading_tests"
path = "tests/config_loading_tests.rs"
[[test]]
name = "contract_mcp"
path = "tests/contract_mcp.rs"
[[test]]
name = "core_integration"
path = "tests/core_integration.rs"
[[test]]
name = "cross_format_parity"
path = "tests/cross_format_parity.rs"
[[test]]
name = "csv_embedding_quality"
path = "tests/csv_embedding_quality.rs"
[[test]]
name = "csv_integration"
path = "tests/csv_integration.rs"
[[test]]
name = "diagram_dot_ground_truth"
path = "tests/diagram_dot_ground_truth.rs"
[[test]]
name = "diagram_dot_pdf"
path = "tests/diagram_dot_pdf.rs"
[[test]]
name = "diagram_svg_adversarial"
path = "tests/diagram_svg_adversarial.rs"
[[test]]
name = "docbook_extractor_tests"
path = "tests/docbook_extractor_tests.rs"
[[test]]
name = "docx_formatting_test"
path = "tests/docx_formatting_test.rs"
[[test]]
name = "docx_gridspan_vmerge_dedup"
path = "tests/docx_gridspan_vmerge_dedup.rs"
[[test]]
name = "docx_ilvl_gridspan_overflow"
path = "tests/docx_ilvl_gridspan_overflow.rs"
[[test]]
name = "docx_merged_cells"
path = "tests/docx_merged_cells.rs"
[[test]]
name = "docx_metadata_extraction_test"
path = "tests/docx_metadata_extraction_test.rs"
[[test]]
name = "docx_mime_detection_test"
path = "tests/docx_mime_detection_test.rs"
[[test]]
name = "docx_ocr_integration_test"
path = "tests/docx_ocr_integration_test.rs"
[[test]]
name = "docx_relationship_traversal"
path = "tests/docx_relationship_traversal.rs"
[[test]]
name = "email_integration"
path = "tests/email_integration.rs"
[[test]]
name = "embedding_max_sequence_length"
path = "tests/embedding_max_sequence_length.rs"
[[test]]
name = "embedding_preset_live"
path = "tests/embedding_preset_live.rs"
[[test]]
name = "encoding_extraction"
path = "tests/encoding_extraction.rs"
[[test]]
name = "engine_cache_live"
path = "tests/engine_cache_live.rs"
[[test]]
name = "engine_default_equivalence"
path = "tests/engine_default_equivalence.rs"
[[test]]
name = "enrich"
path = "tests/enrich.rs"
[[test]]
name = "epub_hardening_tests"
path = "tests/epub_hardening_tests.rs"
[[test]]
name = "epub_markdown_headings_tests"
path = "tests/epub_markdown_headings_tests.rs"
[[test]]
name = "epub_mathml_extractor_tests"
path = "tests/epub_mathml_extractor_tests.rs"
[[test]]
name = "epub_native_extractor_tests"
path = "tests/epub_native_extractor_tests.rs"
[[test]]
name = "epub_security_and_char_boundary_tests"
path = "tests/epub_security_and_char_boundary_tests.rs"
[[test]]
name = "epub_spine_semantics_tests"
path = "tests/epub_spine_semantics_tests.rs"
[[test]]
name = "error_handling"
path = "tests/error_handling.rs"
[[test]]
name = "extraction_confidence"
path = "tests/extraction_confidence.rs"
[[test]]
name = "extraction_timeout_tests"
path = "tests/extraction_timeout_tests.rs"
[[test]]
name = "fictionbook_extractor_tests"
path = "tests/fictionbook_extractor_tests.rs"
[[test]]
name = "fixture_config_round_trip"
path = "tests/fixture_config_round_trip.rs"
[[test]]
name = "format_integration"
path = "tests/format_integration.rs"
[[test]]
name = "formula_recognition_model"
path = "tests/formula_recognition_model.rs"
[[test]]
name = "generated_fixtures"
path = "tests/generated_fixtures.rs"
[[test]]
name = "gh1633_close_stroke_render"
path = "tests/gh1633_close_stroke_render.rs"
[[test]]
name = "gh1634_hanging_indent_heading"
path = "tests/gh1634_hanging_indent_heading.rs"
[[test]]
name = "glm_ocr_backend"
path = "tests/glm_ocr_backend.rs"
[[test]]
name = "gpu_acceleration"
path = "tests/gpu_acceleration.rs"
[[test]]
name = "heic_integration"
path = "tests/heic_integration.rs"
[[test]]
name = "html_output_quality"
path = "tests/html_output_quality.rs"
[[test]]
name = "html_table_spans"
path = "tests/html_table_spans.rs"
[[test]]
name = "html_table_test"
path = "tests/html_table_test.rs"
[[test]]
name = "image_classification"
path = "tests/image_classification.rs"
[[test]]
name = "image_integration"
path = "tests/image_integration.rs"
[[test]]
name = "image_output_format"
path = "tests/image_output_format.rs"
[[test]]
name = "issue_1112_docx_element_order"
path = "tests/issue_1112_docx_element_order.rs"
[[test]]
name = "issue_1116_classify_default"
path = "tests/issue_1116_classify_default.rs"
[[test]]
name = "issue_114_archive_unreadable_member"
path = "tests/issue_114_archive_unreadable_member.rs"
[[test]]
name = "issue_115_archive_names_skipped_entries"
path = "tests/issue_115_archive_names_skipped_entries.rs"
[[test]]
name = "issue_122_citation_detail_dropped"
path = "tests/issue_122_citation_detail_dropped.rs"
[[test]]
name = "issue_1242_xml_entities"
path = "tests/issue_1242_xml_entities.rs"
[[test]]
name = "issue_124_rst_directives"
path = "tests/issue_124_rst_directives.rs"
[[test]]
name = "issue_125_docbook_simpara_variablelist"
path = "tests/issue_125_docbook_simpara_variablelist.rs"
[[test]]
name = "issue_126_jats_figure_captions_graphics"
path = "tests/issue_126_jats_figure_captions_graphics.rs"
[[test]]
name = "issue_127_140_epub"
path = "tests/issue_127_140_epub.rs"
[[test]]
name = "issue_128_jats_back_matter_plain_pass"
path = "tests/issue_128_jats_back_matter_plain_pass.rs"
[[test]]
name = "issue_129_146_html_mathml_and_caption"
path = "tests/issue_129_146_html_mathml_and_caption.rs"
[[test]]
name = "issue_130_orgmode_body_keywords"
path = "tests/issue_130_orgmode_body_keywords.rs"
[[test]]
name = "issue_131_opml_note_attribute"
path = "tests/issue_131_opml_note_attribute.rs"
[[test]]
name = "issue_132_djot_captions_divs_math"
path = "tests/issue_132_djot_captions_divs_math.rs"
[[test]]
name = "issue_133_fictionbook_truncation"
path = "tests/issue_133_fictionbook_truncation.rs"
[[test]]
name = "issue_134_xml_truncation"
path = "tests/issue_134_xml_truncation.rs"
[[test]]
name = "issue_1358_sideways_table_grid"
path = "tests/issue_1358_sideways_table_grid.rs"
[[test]]
name = "issue_135_145_225_markdown_extras"
path = "tests/issue_135_145_225_markdown_extras.rs"
[[test]]
name = "issue_136_latex_longtable_tabularx_tabulary"
path = "tests/issue_136_latex_longtable_tabularx_tabulary.rs"
[[test]]
name = "issue_137_typst_display_math_figures_citations"
path = "tests/issue_137_typst_display_math_figures_citations.rs"
[[test]]
name = "issue_1387_xlsx_ffi_feature_regression"
path = "tests/issue_1387_xlsx_ffi_feature_regression.rs"
[[test]]
name = "issue_138_docbook_programlisting_language"
path = "tests/issue_138_docbook_programlisting_language.rs"
[[test]]
name = "issue_1391_prometheus_metrics"
path = "tests/issue_1391_prometheus_metrics.rs"
[[test]]
name = "issue_139_jats_doi_publisher"
path = "tests/issue_139_jats_doi_publisher.rs"
[[test]]
name = "issue_1411_page_number_deletion"
path = "tests/issue_1411_page_number_deletion.rs"
[[test]]
name = "issue_141_fictionbook_footnotes"
path = "tests/issue_141_fictionbook_footnotes.rs"
[[test]]
name = "issue_143_bibtex_parse_failure_warning"
path = "tests/issue_143_bibtex_parse_failure_warning.rs"
[[test]]
name = "issue_143_citation_parse_failure_warning"
path = "tests/issue_143_citation_parse_failure_warning.rs"
[[test]]
name = "issue_144_citation_unsupported_mime_silent_success"
path = "tests/issue_144_citation_unsupported_mime_silent_success.rs"
[[test]]
name = "issue_147_code_interchunk_source"
path = "tests/issue_147_code_interchunk_source.rs"
[[test]]
name = "issue_148_jupyter_richer_output_extraction"
path = "tests/issue_148_jupyter_richer_output_extraction.rs"
[[test]]
name = "issue_149_email_attachment_skip_warning"
path = "tests/issue_149_email_attachment_skip_warning.rs"
[[test]]
name = "issue_150_csv_midfield_quote"
path = "tests/issue_150_csv_midfield_quote.rs"
[[test]]
name = "issue_1538_myst_jupytext"
path = "tests/issue_1538_myst_jupytext.rs"
[[test]]
name = "issue_153_msg_embedded_message"
path = "tests/issue_153_msg_embedded_message.rs"
[[test]]
name = "issue_1542_prose_paragraph_not_a_table"
path = "tests/issue_1542_prose_paragraph_not_a_table.rs"
[[test]]
name = "issue_1550_doc_list_membership"
path = "tests/issue_1550_doc_list_membership.rs"
[[test]]
name = "issue_155_166_structured_render"
path = "tests/issue_155_166_structured_render.rs"
[[test]]
name = "issue_156_qr_content_surface"
path = "tests/issue_156_qr_content_surface.rs"
[[test]]
name = "issue_157_exif_xmp_metadata"
path = "tests/issue_157_exif_xmp_metadata.rs"
[[test]]
name = "issue_159_jupyter_empty_source_kept_outputs"
path = "tests/issue_159_jupyter_empty_source_kept_outputs.rs"
[[test]]
name = "issue_160_jupyter_svg_attachments_update_display"
path = "tests/issue_160_jupyter_svg_attachments_update_display.rs"
[[test]]
name = "issue_161_email_header_utf8_boundary"
path = "tests/issue_161_email_header_utf8_boundary.rs"
[[test]]
name = "issue_163_table_cell_escaping"
path = "tests/issue_163_table_cell_escaping.rs"
[[test]]
name = "issue_164_csv_blank_rows"
path = "tests/issue_164_csv_blank_rows.rs"
[[test]]
name = "issue_165_json_key_order"
path = "tests/issue_165_json_key_order.rs"
[[test]]
name = "issue_168_qr_decode_warning"
path = "tests/issue_168_qr_decode_warning.rs"
[[test]]
name = "issue_169_email_extra_headers"
path = "tests/issue_169_email_extra_headers.rs"
[[test]]
name = "issue_171_processing_warnings"
path = "tests/issue_171_processing_warnings.rs"
[[test]]
name = "issue_177_180_189_ocr_metadata"
path = "tests/issue_177_180_189_ocr_metadata.rs"
[[test]]
name = "issue_184_no_fabricated_script_name"
path = "tests/issue_184_no_fabricated_script_name.rs"
[[test]]
name = "issue_197_archive_size_accounting_overflow"
path = "tests/issue_197_archive_size_accounting_overflow.rs"
[[test]]
name = "issue_198_security_depth_limit_tightening"
path = "tests/issue_198_security_depth_limit_tightening.rs"
[[test]]
name = "issue_199_cache_namespace_traversal"
path = "tests/issue_199_cache_namespace_traversal.rs"
[[test]]
name = "issue_200_ner_every_occurrence"
path = "tests/issue_200_ner_every_occurrence.rs"
[[test]]
name = "issue_201_report_matches_applied"
path = "tests/issue_201_report_matches_applied.rs"
[[test]]
name = "issue_202_ner_redacts_all_fields"
path = "tests/issue_202_ner_redacts_all_fields.rs"
[[test]]
name = "issue_203_custom_ner_labels"
path = "tests/issue_203_custom_ner_labels.rs"
[[test]]
name = "issue_204_report_counts_all_fields"
path = "tests/issue_204_report_counts_all_fields.rs"
[[test]]
name = "issue_206_cache_version_fingerprint"
path = "tests/issue_206_cache_version_fingerprint.rs"
[[test]]
name = "issue_209_image_dpi_config"
path = "tests/issue_209_image_dpi_config.rs"
[[test]]
name = "issue_210_split_and_extract_enrichment"
path = "tests/issue_210_split_and_extract_enrichment.rs"
[[test]]
name = "issue_220_single_table_renderer"
path = "tests/issue_220_single_table_renderer.rs"
[[test]]
name = "issue_221_table_row_wider_than_header"
path = "tests/issue_221_table_row_wider_than_header.rs"
[[test]]
name = "issue_227_crlf_paragraph_splitting"
path = "tests/issue_227_crlf_paragraph_splitting.rs"
[[test]]
name = "issue_228_markup_formats"
path = "tests/issue_228_markup_formats.rs"
[[test]]
name = "issue_229_wordperfect_quarto_mime"
path = "tests/issue_229_wordperfect_quarto_mime.rs"
[[test]]
name = "issue_230_doc_security_flags"
path = "tests/issue_230_doc_security_flags.rs"
[[test]]
name = "issue_231_heading_pairs_slicing"
path = "tests/issue_231_heading_pairs_slicing.rs"
[[test]]
name = "issue_232_custom_property_vt_types"
path = "tests/issue_232_custom_property_vt_types.rs"
[[test]]
name = "issue_235_html_detection_unreachable"
path = "tests/issue_235_html_detection_unreachable.rs"
[[test]]
name = "issue_237_multiple_dc_creator"
path = "tests/issue_237_multiple_dc_creator.rs"
[[test]]
name = "issue_240_table_bbox_reaches_dto"
path = "tests/issue_240_table_bbox_reaches_dto.rs"
[[test]]
name = "issue_259_code_intelligence"
path = "tests/issue_259_code_intelligence.rs"
[[test]]
name = "issue_261_language_confidence"
path = "tests/issue_261_language_confidence.rs"
[[test]]
name = "issue_262_ner_windowing"
path = "tests/issue_262_ner_windowing.rs"
[[test]]
name = "issue_263_enrich_chokepoint"
path = "tests/issue_263_enrich_chokepoint.rs"
[[test]]
name = "issue_268_chunk_vector_wiring"
path = "tests/issue_268_chunk_vector_wiring.rs"
[[test]]
name = "issue_270_config_validation_beyond_env"
path = "tests/issue_270_config_validation_beyond_env.rs"
[[test]]
name = "issue_273_123_142_mdx_markdown_shared_builder"
path = "tests/issue_273_123_142_mdx_markdown_shared_builder.rs"
[[test]]
name = "issue_277_hierarchy_include_bbox"
path = "tests/issue_277_hierarchy_include_bbox.rs"
[[test]]
name = "issue_279_download_progress"
path = "tests/issue_279_download_progress.rs"
[[test]]
name = "issue_282_telemetry_spans"
path = "tests/issue_282_telemetry_spans.rs"
[[test]]
name = "issue_286_renderer_text_source"
path = "tests/issue_286_renderer_text_source.rs"
[[test]]
name = "issue_288_footnote_definition_json"
path = "tests/issue_288_footnote_definition_json.rs"
[[test]]
name = "issue_289_advertised_formats_have_extractors"
path = "tests/issue_289_advertised_formats_have_extractors.rs"
[[test]]
name = "issue_291_dropped_glyph_warning"
path = "tests/issue_291_dropped_glyph_warning.rs"
[[test]]
name = "issue_302_qr_payload_enrichment"
path = "tests/issue_302_qr_payload_enrichment.rs"
[[test]]
name = "issue_307_embedded_msg_pipeline"
path = "tests/issue_307_embedded_msg_pipeline.rs"
[[test]]
name = "issue_308_list_supported_formats_registry_intersection"
path = "tests/issue_308_list_supported_formats_registry_intersection.rs"
[[test]]
name = "issue_316_crlf_paragraph_splitting"
path = "tests/issue_316_crlf_paragraph_splitting.rs"
[[test]]
name = "issue_331_output_format_discards_post_processing"
path = "tests/issue_331_output_format_discards_post_processing.rs"
[[test]]
name = "issue_332_telemetry_metrics"
path = "tests/issue_332_telemetry_metrics.rs"
[[test]]
name = "issue_340_pdf_render_warning_drain"
path = "tests/issue_340_pdf_render_warning_drain.rs"
[[test]]
name = "issue_350_regression_test"
path = "tests/issue_350_regression_test.rs"
[[test]]
name = "issue_359_list_whitespace_test"
path = "tests/issue_359_list_whitespace_test.rs"
[[test]]
name = "issue_52_extracted_to_internal_field_loss"
path = "tests/issue_52_extracted_to_internal_field_loss.rs"
[[test]]
name = "issue_53_pre_rendered_content_roundtrip"
path = "tests/issue_53_pre_rendered_content_roundtrip.rs"
[[test]]
name = "issue_54_public_renderer_receives_structure"
path = "tests/issue_54_public_renderer_receives_structure.rs"
[[test]]
name = "issue_55_image_ocr_result_fields"
path = "tests/issue_55_image_ocr_result_fields.rs"
[[test]]
name = "issue_56_json_renderer_drops_element_kinds"
path = "tests/issue_56_json_renderer_drops_element_kinds.rs"
[[test]]
name = "issue_58_captioning_prepass_merge"
path = "tests/issue_58_captioning_prepass_merge.rs"
[[test]]
name = "issue_603_pdf_table_stage_failure_warning"
path = "tests/issue_603_pdf_table_stage_failure_warning.rs"
[[test]]
name = "issue_62_pdf_image_alt_text"
path = "tests/issue_62_pdf_image_alt_text.rs"
[[test]]
name = "issue_63_pdf_annotations"
path = "tests/issue_63_pdf_annotations.rs"
[[test]]
name = "issue_64_pdf_form_field_values_rendered"
path = "tests/issue_64_pdf_form_field_values_rendered.rs"
[[test]]
name = "issue_65_pdf_xmp_metadata"
path = "tests/issue_65_pdf_xmp_metadata.rs"
[[test]]
name = "issue_66_pdf_page_labels"
path = "tests/issue_66_pdf_page_labels.rs"
[[test]]
name = "issue_670_content_filter_layout_regression"
path = "tests/issue_670_content_filter_layout_regression.rs"
[[test]]
name = "issue_671_pptx_image_config_regression"
path = "tests/issue_671_pptx_image_config_regression.rs"
[[test]]
name = "issue_67_pdf_optional_content_groups"
path = "tests/issue_67_pdf_optional_content_groups.rs"
[[test]]
name = "issue_69_styled_html_slide_section"
path = "tests/issue_69_styled_html_slide_section.rs"
[[test]]
name = "issue_70_page_content_layer_filter"
path = "tests/issue_70_page_content_layer_filter.rs"
[[test]]
name = "issue_73_pdf_form_extraction_warning"
path = "tests/issue_73_pdf_form_extraction_warning.rs"
[[test]]
name = "issue_75_ocr_elements_without_geometry"
path = "tests/issue_75_ocr_elements_without_geometry.rs"
[[test]]
name = "issue_76_uri_cap_warning"
path = "tests/issue_76_uri_cap_warning.rs"
[[test]]
name = "issue_78_excel_embedded_objects"
path = "tests/issue_78_excel_embedded_objects.rs"
[[test]]
name = "issue_797_preset_embedding_regression"
path = "tests/issue_797_preset_embedding_regression.rs"
[[test]]
name = "issue_odp_odf_extraction_defects"
path = "tests/issue_odp_odf_extraction_defects.rs"
[[test]]
name = "issue_odt_odf_extraction_defects"
path = "tests/issue_odt_odf_extraction_defects.rs"
[[test]]
name = "iwork_integration"
path = "tests/iwork_integration.rs"
[[test]]
name = "jats_extractor_tests"
path = "tests/jats_extractor_tests.rs"
[[test]]
name = "jats_formula_mathml"
path = "tests/jats_formula_mathml.rs"
[[test]]
name = "jats_history_date_type_multibyte"
path = "tests/jats_history_date_type_multibyte.rs"
[[test]]
name = "json_schema_validation"
path = "tests/json_schema_validation.rs"
[[test]]
name = "jsonl_integration"
path = "tests/jsonl_integration.rs"
[[test]]
name = "jupyter_extractor_tests"
path = "tests/jupyter_extractor_tests.rs"
[[test]]
name = "late_interaction_preset_live"
path = "tests/late_interaction_preset_live.rs"
[[test]]
name = "latex_extractor_tests"
path = "tests/latex_extractor_tests.rs"
[[test]]
name = "layout_for_markdown"
path = "tests/layout_for_markdown.rs"
[[test]]
name = "llm_classification_smoke"
path = "tests/llm_classification_smoke.rs"
[[test]]
name = "llm_integration"
path = "tests/llm_integration.rs"
[[test]]
name = "llm_summarization_smoke"
path = "tests/llm_summarization_smoke.rs"
[[test]]
name = "llm_translation_smoke"
path = "tests/llm_translation_smoke.rs"
[[test]]
name = "markdown_extractor_tests"
path = "tests/markdown_extractor_tests.rs"
[[test]]
name = "markdown_lint_quality"
path = "tests/markdown_lint_quality.rs"
[[test]]
name = "mcp_integration"
path = "tests/mcp_integration.rs"
[[test]]
name = "mime_detection"
path = "tests/mime_detection.rs"
[[test]]
name = "mime_detection_policy"
path = "tests/mime_detection_policy.rs"
[[test]]
name = "native_pdf_total_order_panic_1198"
path = "tests/native_pdf_total_order_panic_1198.rs"
[[test]]
name = "ner"
path = "tests/ner.rs"
[[test]]
name = "ner_smoke"
path = "tests/ner_smoke.rs"
[[test]]
name = "nested_list_duplication"
path = "tests/nested_list_duplication.rs"
[[test]]
name = "ocr_auto_rotate"
path = "tests/ocr_auto_rotate.rs"
[[test]]
name = "ocr_configuration"
path = "tests/ocr_configuration.rs"
[[test]]
name = "ocr_content_integrity"
path = "tests/ocr_content_integrity.rs"
[[test]]
name = "ocr_errors"
path = "tests/ocr_errors.rs"
[[test]]
name = "ocr_quality"
path = "tests/ocr_quality.rs"
[[test]]
name = "ocr_table_inline"
path = "tests/ocr_table_inline.rs"
[[test]]
name = "odf_zip_bomb_guard"
path = "tests/odf_zip_bomb_guard.rs"
[[test]]
name = "odt_extractor_tests"
path = "tests/odt_extractor_tests.rs"
[[test]]
name = "odt_member_bounded_read"
path = "tests/odt_member_bounded_read.rs"
[[test]]
name = "opml_extractor_tests"
path = "tests/opml_extractor_tests.rs"
[[test]]
name = "orgmode_extractor_tests"
path = "tests/orgmode_extractor_tests.rs"
[[test]]
name = "paddle_ocr_integration"
path = "tests/paddle_ocr_integration.rs"
[[test]]
name = "paddle_ocr_rotated_block_reading_order"
path = "tests/paddle_ocr_rotated_block_reading_order.rs"
[[test]]
name = "page_markers"
path = "tests/page_markers.rs"
[[test]]
name = "path_resolution"
path = "tests/path_resolution.rs"
[[test]]
name = "pattern_redaction_smoke"
path = "tests/pattern_redaction_smoke.rs"
[[test]]
name = "pdf_1338_scanned_auto_ocr"
path = "tests/pdf_1338_scanned_auto_ocr.rs"
[[test]]
name = "pdf_annotation_only_fallback"
path = "tests/pdf_annotation_only_fallback.rs"
[[test]]
name = "pdf_chunk_page_metadata"
path = "tests/pdf_chunk_page_metadata.rs"
[[test]]
name = "pdf_element_classification"
path = "tests/pdf_element_classification.rs"
[[test]]
name = "pdf_form_fields"
path = "tests/pdf_form_fields.rs"
[[test]]
name = "pdf_glyph_spacing_issue_962"
path = "tests/pdf_glyph_spacing_issue_962.rs"
[[test]]
name = "pdf_heuristic_tables"
path = "tests/pdf_heuristic_tables.rs"
[[test]]
name = "pdf_hierarchy_detection"
path = "tests/pdf_hierarchy_detection.rs"
[[test]]
name = "pdf_image_extraction_tests"
path = "tests/pdf_image_extraction_tests.rs"
[[test]]
name = "pdf_integration"
path = "tests/pdf_integration.rs"
[[test]]
name = "pdf_markdown_extraction"
path = "tests/pdf_markdown_extraction.rs"
[[test]]
name = "pdf_markdown_quality"
path = "tests/pdf_markdown_quality.rs"
[[test]]
name = "pdf_markdown_regression"
path = "tests/pdf_markdown_regression.rs"
[[test]]
name = "pdf_native_tategaki_total_order"
path = "tests/pdf_native_tategaki_total_order.rs"
[[test]]
name = "pdf_ocr_error_not_silence"
path = "tests/pdf_ocr_error_not_silence.rs"
[[test]]
name = "pdf_output_quality"
path = "tests/pdf_output_quality.rs"
[[test]]
name = "pdf_password"
path = "tests/pdf_password.rs"
[[test]]
name = "pdf_scan_detection"
path = "tests/pdf_scan_detection.rs"
[[test]]
name = "pdf_table_detection"
path = "tests/pdf_table_detection.rs"
[[test]]
name = "pdf_table_ground_truth"
path = "tests/pdf_table_ground_truth.rs"
[[test]]
name = "pdf_table_heuristics"
path = "tests/pdf_table_heuristics.rs"
[[test]]
name = "pdf_two_column_reading_order"
path = "tests/pdf_two_column_reading_order.rs"
[[test]]
name = "pdf_unrenderable_image_warning"
path = "tests/pdf_unrenderable_image_warning.rs"
[[test]]
name = "pdfium_linking"
path = "tests/pdfium_linking.rs"
[[test]]
name = "pipeline_integration"
path = "tests/pipeline_integration.rs"
[[test]]
name = "plugin_ocr_backend_test"
path = "tests/plugin_ocr_backend_test.rs"
[[test]]
name = "plugin_postprocessor_test"
path = "tests/plugin_postprocessor_test.rs"
[[test]]
name = "plugin_system"
path = "tests/plugin_system.rs"
[[test]]
name = "plugin_validator_test"
path = "tests/plugin_validator_test.rs"
[[test]]
name = "pptx_malformed_relationship_target"
path = "tests/pptx_malformed_relationship_target.rs"
[[test]]
name = "pptx_merged_cells"
path = "tests/pptx_merged_cells.rs"
[[test]]
name = "pptx_regression_tests"
path = "tests/pptx_regression_tests.rs"
[[test]]
name = "preset_feature_contracts"
path = "tests/preset_feature_contracts.rs"
[[test]]
name = "pst_integration"
path = "tests/pst_integration.rs"
[[test]]
name = "pst_warnings_and_structure_test"
path = "tests/pst_warnings_and_structure_test.rs"
[[test]]
name = "qr_codes_smoke"
path = "tests/qr_codes_smoke.rs"
[[test]]
name = "raster_to_svg_warns"
path = "tests/raster_to_svg_warns.rs"
[[test]]
name = "reading_order"
path = "tests/reading_order.rs"
[[test]]
name = "registry_integration_tests"
path = "tests/registry_integration_tests.rs"
[[test]]
name = "rendering_integration_tests"
path = "tests/rendering_integration_tests.rs"
[[test]]
name = "reranker_live"
path = "tests/reranker_live.rs"
[[test]]
name = "rotated_text_repair"
path = "tests/rotated_text_repair.rs"
[[test]]
name = "rst_extractor_tests"
path = "tests/rst_extractor_tests.rs"
[[test]]
name = "rtf_extractor_tests"
path = "tests/rtf_extractor_tests.rs"
[[test]]
name = "scanned_pdf_formula_recognition"
path = "tests/scanned_pdf_formula_recognition.rs"
[[test]]
name = "seam_default_equivalence"
path = "tests/seam_default_equivalence.rs"
[[test]]
name = "security_validation"
path = "tests/security_validation.rs"
[[test]]
name = "security_validators"
path = "tests/security_validators.rs"
[[test]]
name = "serialization_integration"
path = "tests/serialization_integration.rs"
[[test]]
name = "sparse_embedding_preset_live"
path = "tests/sparse_embedding_preset_live.rs"
[[test]]
name = "split_and_extract"
path = "tests/split_and_extract.rs"
[[test]]
name = "sqlite_geopackage_extraction"
path = "tests/sqlite_geopackage_extraction.rs"
required-features = ["sqlite"]
[[test]]
name = "structured_live"
path = "tests/structured_live.rs"
required-features = [
"structured",
"pdf",
]
[[test]]
name = "structured_pipeline"
path = "tests/structured_pipeline.rs"
required-features = ["structured"]
[[test]]
name = "summarization_pipeline"
path = "tests/summarization_pipeline.rs"
[[test]]
name = "svg_sanitize_passthrough"
path = "tests/svg_sanitize_passthrough.rs"
[[test]]
name = "svg_to_jpeg"
path = "tests/svg_to_jpeg.rs"
[[test]]
name = "svg_to_png_roundtrip"
path = "tests/svg_to_png_roundtrip.rs"
[[test]]
name = "svg_to_webp"
path = "tests/svg_to_webp.rs"
[[test]]
name = "svg_wire_tag"
path = "tests/svg_wire_tag.rs"
[[test]]
name = "table_span_dos_guard"
path = "tests/table_span_dos_guard.rs"
[[test]]
name = "test_batch_extract_schema"
path = "tests/test_batch_extract_schema.rs"
[[test]]
name = "textrank_summarization"
path = "tests/textrank_summarization.rs"
[[test]]
name = "token_reduction_output"
path = "tests/token_reduction_output.rs"
[[test]]
name = "transcription_decode"
path = "tests/transcription_decode.rs"
[[test]]
name = "transcription_decoder_prompt"
path = "tests/transcription_decoder_prompt.rs"
[[test]]
name = "transcription_extractor"
path = "tests/transcription_extractor.rs"
[[test]]
name = "transcription_timestamp_segments"
path = "tests/transcription_timestamp_segments.rs"
[[test]]
name = "typst_behavioral_tests"
path = "tests/typst_behavioral_tests.rs"
[[test]]
name = "typst_extractor_tests"
path = "tests/typst_extractor_tests.rs"
[[test]]
name = "url_ingestion_public"
path = "tests/url_ingestion_public.rs"
[[test]]
name = "whisper_inference"
path = "tests/whisper_inference.rs"
[[test]]
name = "wordperfect_native_extractor_tests"
path = "tests/wordperfect_native_extractor_tests.rs"
[[test]]
name = "xlsx_merged_cells"
path = "tests/xlsx_merged_cells.rs"
[[test]]
name = "xml_embedding_quality"
path = "tests/xml_embedding_quality.rs"
[[bench]]
name = "concurrency_scaling"
path = "benches/concurrency_scaling.rs"
harness = false
required-features = [
"pdf",
"layout-detection",
"ocr",
]
[[bench]]
name = "pdf_layout_microbatch"
path = "benches/pdf_layout_microbatch.rs"
harness = false
required-features = [
"pdf",
"layout-detection",
"ocr",
"profiling",
]
[[bench]]
name = "text_quality"
path = "benches/text_quality.rs"
harness = false
required-features = ["quality"]
[dependencies.aes-gcm]
version = "0.11"
optional = true
[dependencies.ahash]
version = "0.8.12"
features = ["serde"]
[dependencies.async-trait]
version = "0.1.92"
[dependencies.auto_enums]
version = "0.8"
optional = true
[dependencies.axum]
version = "0.8"
features = [
"macros",
"json",
"multipart",
]
optional = true
[dependencies.base64]
version = "0.23.1"
[dependencies.biblatex]
version = "0.12"
optional = true
[dependencies.biblib]
version = "0.8"
features = [
"ris",
"pubmed",
"xml",
]
optional = true
default-features = false
[dependencies.bitvec]
version = "1.1"
[dependencies.blake3]
version = "1"
[dependencies.bytes]
version = "1"
features = ["serde"]
[dependencies.calamine]
version = "0.36.1"
features = ["dates"]
optional = true
[dependencies.cfb]
version = "0.14"
optional = true
[dependencies.chardetng]
version = "1.0.0"
optional = true
[dependencies.chrono]
version = "0.4"
optional = true
[dependencies.codepage]
version = "0.1.3"
[dependencies.comrak]
version = "0.55"
default-features = false
[dependencies.crawlberg]
version = "1.6.4"
optional = true
default-features = false
[dependencies.dbase]
version = "0.8"
optional = true
[dependencies.dirs]
version = "7"
[dependencies.either]
version = "1"
optional = true
[dependencies.encoding_rs]
version = "0.8.41"
[dependencies.fast_image_resize]
version = "6.1.0"
optional = true
[dependencies.flate2]
version = "1.1"
optional = true
[dependencies.hayro-jbig2]
version = "0.3"
features = ["std"]
optional = true
default-features = false
[dependencies.hayro-jpeg2000]
version = "0.4"
features = [
"std",
"simd",
]
optional = true
default-features = false
[dependencies.hex]
version = "0.4.3"
[dependencies.html-escape]
version = "0.2.15"
optional = true
[dependencies.html-to-markdown-rs]
version = "3.13"
features = [
"inline-images",
"metadata",
]
optional = true
default-features = false
[dependencies.icu_provider]
version = "2"
features = ["sync"]
optional = true
[dependencies.icu_segmenter]
version = "2"
optional = true
[dependencies.image]
version = "0.25.10"
features = [
"png",
"jpeg",
"webp",
"bmp",
"tiff",
"gif",
"pnm",
"rayon",
]
optional = true
default-features = false
[dependencies.include_dir]
version = "0.7"
optional = true
[dependencies.indexmap]
version = "2.14.2"
[dependencies.infer]
version = "0.22.0"
[dependencies.itertools]
version = "0.15"
optional = true
[dependencies.jotdown]
version = "0.10"
[dependencies.jsonschema]
version = "0.56"
optional = true
default-features = false
[dependencies.libc]
version = "0.2.189"
[dependencies.lofty]
version = "0.25"
optional = true
[dependencies.log]
version = "0.4"
features = ["std"]
[dependencies.lopdf]
version = "0.45.0"
optional = true
default-features = false
[dependencies.lru]
version = "0.18"
optional = true
[dependencies.mail-parser]
version = "0.11.9"
features = ["full_encoding"]
optional = true
[dependencies.mathemascii]
version = "0.4.0"
optional = true
[dependencies.mel_spec]
version = "0.4"
optional = true
[dependencies.memchr]
version = "2.8.3"
[dependencies.memmap2]
version = "0.9"
[dependencies.mime]
version = "0.3.17"
[dependencies.mime_guess]
version = "2.0"
[dependencies.minijinja]
version = "2"
optional = true
[dependencies.moka]
version = "0.12"
features = ["sync"]
optional = true
[dependencies.ndarray]
version = "0.17"
optional = true
[dependencies.nom-exif]
version = "3.8"
optional = true
default-features = false
[dependencies.num_cpus]
version = "1.17.0"
[dependencies.once_cell]
version = "1.21.4"
[dependencies.opentelemetry]
version = "0.32"
features = ["trace"]
optional = true
[dependencies.opentelemetry-prometheus]
version = "0.32"
optional = true
[dependencies.opentelemetry_sdk]
version = "0.32"
features = [
"rt-tokio",
"testing",
]
optional = true
[dependencies.org]
version = "0.3"
optional = true
[dependencies.ort]
version = "2.0.0-rc.13"
features = [
"std",
"ndarray",
"api-18",
]
optional = true
default-features = false
[dependencies.outlook-pst]
version = "1.2.0"
optional = true
[dependencies.parking_lot]
version = "0.12.5"
[dependencies.pastey]
version = "0.2"
[dependencies.pdfium-render]
version = "1.2.2"
optional = true
package = "xberg-pdfium-render"
[dependencies.prometheus]
version = "0.14"
optional = true
default-features = false
[dependencies.pulldown-cmark]
version = "0.13"
[dependencies.quick-xml]
version = "0.42.0"
features = ["serialize"]
optional = true
[dependencies.rake]
version = "0.3.6"
optional = true
[dependencies.rayon]
version = "1.12.0"
[dependencies.regex]
version = "1.13.1"
[dependencies.resvg]
version = "0.48"
optional = true
default-features = false
[dependencies.rmcp]
version = "3.3.0"
features = [
"server",
"macros",
"base64",
"transport-io",
"transport-streamable-http-server",
"server-side-http",
]
optional = true
[dependencies.rmp-serde]
version = "1.3"
[dependencies.roxmltree]
version = "0.21.1"
optional = true
[dependencies.rqrr]
version = "0.10.1"
optional = true
package = "rqrr-zeroize"
[dependencies.rusqlite]
version = "0.40"
features = [
"bundled",
"hooks",
"serialize",
]
optional = true
default-features = false
[dependencies.sceptre]
version = "0.7.2"
optional = true
default-features = false
[dependencies.scrypt]
version = "0.12"
features = ["kdf"]
optional = true
default-features = false
[dependencies.secrecy]
version = "0.10"
features = ["serde"]
optional = true
[dependencies.serde]
version = "1.0.229"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.151"
features = ["preserve_order"]
[dependencies.serde_toon_format]
version = "0.1"
[dependencies.serde_yaml_ng]
version = "0.10.0"
[dependencies.sevenz-rust2]
version = "0.20.2"
optional = true
[dependencies.sha2]
version = "0.11"
optional = true
[dependencies.simdutf8]
version = "0.1"
optional = true
[dependencies.similar]
version = "3"
optional = true
[dependencies.snap]
version = "1.1"
optional = true
[dependencies.strum]
version = "0.28"
features = ["derive"]
optional = true
[dependencies.symphonia]
version = "0.6"
features = [
"aac",
"adpcm",
"isomp4",
"mkv",
"mp3",
"pcm",
"wav",
]
optional = true
default-features = false
[dependencies.tar]
version = "^0.4"
optional = true
[dependencies.tempfile]
version = "3.27.0"
optional = true
[dependencies.thiserror]
version = "2.0.20"
[dependencies.tiff]
version = "0.11"
optional = true
[dependencies.tokenizers]
version = "0.23"
features = ["fancy-regex"]
optional = true
default-features = false
[dependencies.tokio]
version = "1.53.1"
features = [
"rt",
"macros",
"sync",
"time",
"io-util",
]
optional = true
[dependencies.toml]
version = "1.1.6"
[dependencies.tower]
version = "0.5"
features = [
"timeout",
"limit",
"util",
]
optional = true
[dependencies.tower-http]
version = "0.7"
features = [
"cors",
"trace",
"limit",
"catch-panic",
"request-id",
"sensitive-headers",
"compression-gzip",
"compression-deflate",
"compression-zstd",
]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.33"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"std",
"registry",
]
default-features = false
[dependencies.tract-onnx]
version = "0.23.7"
optional = true
default-features = false
[dependencies.typst-syntax]
version = "0.15.1"
optional = true
[dependencies.unhwp]
version = "0.11.0"
features = ["hwpx"]
optional = true
default-features = false
[dependencies.unicode-normalization]
version = "0.1.25"
optional = true
[dependencies.url]
version = "2.5.8"
[dependencies.urlencoding]
version = "2"
[dependencies.usvg]
version = "0.48"
features = ["writer"]
optional = true
default-features = false
[dependencies.utoipa]
version = "5.5"
features = ["axum_extras"]
optional = true
[dependencies.uuid]
version = "1"
features = ["v4"]
optional = true
[dependencies.v_htmlescape]
version = "0.17"
optional = true
[dependencies.whatlang]
version = "0.18.0"
optional = true
[dependencies.xberg-gliner]
version = "1.2.2"
optional = true
default-features = false
[dependencies.xberg-libheif]
version = "1.2.2"
features = ["v1_19"]
optional = true
default-features = false
[dependencies.xberg-libwpd]
version = "1.2.2"
optional = true
[dependencies.xberg-native-pdf]
version = "1.2.2"
optional = true
[dependencies.xberg-tesseract]
version = "1.2.2"
optional = true
[dependencies.zeroize]
version = "1"
optional = true
[dependencies.zip]
version = ">=7.0.0"
features = ["deflate-flate2"]
optional = true
default-features = false
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.dotenvy]
version = "0.15"
[dev-dependencies.filetime]
version = "0.2"
[dev-dependencies.image]
version = "0.25.10"
features = ["png"]
default-features = false
[dev-dependencies.jsonschema]
version = "0.56"
features = [
"resolve-file",
"resolve-http",
"tls-ring",
]
default-features = false
[dev-dependencies.qrcode]
version = "0.14"
features = ["image"]
default-features = false
[dev-dependencies.safetensors]
version = "0.8"
[dev-dependencies.serial_test]
version = "3.5.0"
[dev-dependencies.syn]
version = "3"
features = [
"full",
"visit",
]
[dev-dependencies.tar]
version = "^0.4"
[dev-dependencies.tempfile]
version = "3.27.0"
[dev-dependencies.tokio]
version = "1.53.1"
features = [
"rt",
"macros",
"sync",
"time",
"io-util",
"macros",
"time",
]
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dev-dependencies.uuid]
version = "1"
[dev-dependencies.wiremock]
version = "0.6"
[dev-dependencies.zip]
version = ">=7.0.0, <8.7.0"
features = ["deflate-flate2"]
default-features = false
[build-dependencies]
[target.'cfg(all(not(target_os = "windows"), not(target_arch = "wasm32")))'.dependencies.liter-llm]
version = "2.0.2"
features = [
"native-http",
"bedrock",
"tower",
"azure-auth",
"bedrock-auth",
"copilot-auth",
"vertex-auth",
]
optional = true
default-features = false
[target.'cfg(all(not(target_os = "windows"), not(target_arch = "wasm32")))'.dependencies.tokenizers]
version = "0.23"
features = ["fancy-regex"]
optional = true
default-features = false
[target.'cfg(all(not(target_os = "windows"), not(target_arch = "wasm32")))'.dependencies.xberg-candle-ocr]
version = "1.2.2"
optional = true
[target.'cfg(all(not(target_os = "windows"), not(target_arch = "wasm32")))'.dependencies.xberg-paddle-ocr]
version = "1.2.2"
optional = true
default-features = false
[target.'cfg(all(not(target_os = "windows"), not(target_arch = "wasm32"), not(target_os = "android")))'.dependencies.ureq]
version = "3.4"
features = [
"rustls",
"platform-verifier",
"json",
]
optional = true
default-features = false
[target.'cfg(all(target_os = "windows", not(target_arch = "wasm32")))'.dependencies.liter-llm]
version = "2.0.2"
features = [
"native-http",
"bedrock",
"tower",
"azure-auth",
"bedrock-auth",
"copilot-auth",
"vertex-auth",
]
optional = true
default-features = false
[target.'cfg(all(target_os = "windows", not(target_arch = "wasm32")))'.dependencies.tokenizers]
version = "0.23"
features = ["fancy-regex"]
optional = true
default-features = false
[target.'cfg(all(target_os = "windows", not(target_arch = "wasm32")))'.dependencies.ureq]
version = "3.4"
features = [
"rustls",
"platform-verifier",
"json",
]
optional = true
default-features = false
[target.'cfg(all(target_os = "windows", not(target_arch = "wasm32")))'.dependencies.xberg-candle-ocr]
version = "1.2.2"
optional = true
[target.'cfg(all(target_os = "windows", not(target_arch = "wasm32")))'.dependencies.xberg-paddle-ocr]
version = "1.2.2"
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.fs2]
version = "0.4.3"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.hf-hub]
version = "1.0"
features = ["blocking"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.model2vec-rs]
version = "0.2"
features = []
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.reqwest]
version = "0.13"
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokenizers-model2vec]
version = "0.21"
features = ["fancy-regex"]
optional = true
default-features = false
package = "tokenizers"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.53.1"
features = [
"rt",
"macros",
"sync",
"time",
"io-util",
"process",
"fs",
"rt-multi-thread",
]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tree-sitter-language-pack]
version = "1.20.0"
features = [
"serde",
"dynamic-loading",
"download",
"serde",
]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.4"
features = ["wasm_js"]
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom_02]
version = "0.2"
features = ["js"]
package = "getrandom"
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom_03]
version = "0.3"
features = ["wasm_js"]
package = "getrandom"
[target.'cfg(target_arch = "wasm32")'.dependencies.liter-llm]
version = "2.0.2"
features = ["wasm-http"]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.model2vec-rs]
version = "0.2"
features = ["wasm"]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.tree-sitter-language-pack]
version = "1.20.0"
features = [
"serde",
"serde",
]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.xberg-tesseract]
version = "1.2.2"
features = [
"build-tesseract-wasm",
"bundle-tessdata-eng",
]
optional = true
default-features = false
[target.'cfg(target_os = "android")'.dependencies.ureq]
version = "3.4"
features = [
"rustls",
"json",
]
optional = true
default-features = false
[target.'cfg(target_os = "macos")'.dependencies.ort]
version = "2.0.0-rc.13"
features = ["coreml"]
optional = true
default-features = false
[lints.clippy]
dbg_macro = "deny"
print_stderr = "deny"
print_stdout = "deny"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.rust]
unsafe_code = "deny"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(alef)",
'cfg(feature, values("alef-meta"))',
]