Current section

Files

Jump to
xberg lib xberg native.ex
Raw

lib/xberg/native.ex

# This file is auto-generated by alef — DO NOT EDIT.
# alef:hash:926a121ce8858da89e1c2dae78836bd02775ed955b144da6ce043a83737b8c26
# To regenerate: alef generate
# To verify freshness: alef verify --exit-code
defmodule Xberg.Native do
@moduledoc false
use RustlerPrecompiled,
otp_app: :xberg,
crate: "xberg_nif",
base_url: "https://github.com/xberg-io/xberg/releases/download/v#{Mix.Project.config()[:version]}",
version: Mix.Project.config()[:version],
targets: [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-unknown-linux-gnu",
"x86_64-unknown-linux-gnu",
"x86_64-pc-windows-gnu"
],
nif_versions: ["2.16"],
force_build: System.get_env("XBERG_BUILD") in ["1", "true"] or Mix.env() in [:dev]
@doc false
def set_env(_key, _value), do: :erlang.nif_error(:nif_not_loaded)
@doc "Extract content from a single bytes or URI input."
def extract_async(_input, _config), do: :erlang.nif_error(:nif_not_loaded)
@doc "Extract content from multiple bytes or URI inputs."
def extract_batch_async(_inputs, _config), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Discover all pages and sitemaps reachable from `uri` without extracting document content.
Builds a [`crawlberg::CrawlEngine`] from `config.crawl`, calls
[`CrawlEngine::map`], and returns the set of discovered URLs as a
[`crawlberg::MapResult`] (re-exported as `MapResult`).
Use this when you need the URL inventory of a site before committing to
full document extraction — e.g. to build a crawl queue or validate scope.
# Errors
Returns `Validation` if the crawl configuration fails
validation or if the map operation itself fails.
"""
def map_url_async(_uri, _config), do: :erlang.nif_error(:nif_not_loaded)
@doc """
List all supported document formats.
Returns every file extension Xberg recognizes together with its
corresponding MIME type, derived from the central format registry.
Formats that have no registered file extension (such as source code,
which is detected dynamically) are not included.
The list is sorted alphabetically by file extension.
# Returns
A vector of [`SupportedFormat`] entries sorted by extension.
# Example
```
use xberg::core::mime::list_supported_formats;
let formats = list_supported_formats();
assert!(!formats.is_empty());
assert!(formats.iter().any(|f| f.extension == "pdf"));
```
"""
def list_supported_formats, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Clear all embedding backends from the global registry.
Calls `shutdown()` on every registered backend, then empties the registry.
# Errors
- Any error returned by a backend's `shutdown()` method. The first error
encountered stops processing of remaining backends.
"""
def clear_embedding_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc """
List the names of all registered embedding backends.
Used by `xberg-cli`, the api/mcp endpoints, and generated language
bindings.
"""
def list_embedding_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc "List names of all registered document extractors."
def list_document_extractors, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Clear all document extractors from the global registry.
Calls `shutdown()` on every registered extractor, then empties the registry.
# Errors
- Any error returned by an extractor's `shutdown()` method. The first error
encountered stops processing of remaining extractors.
"""
def clear_document_extractors, do: :erlang.nif_error(:nif_not_loaded)
@doc """
List all registered OCR backends.
Returns the names of all OCR backends currently registered in the global registry.
# Returns
A vector of OCR backend names.
# Example
```rust
use xberg::plugins::list_ocr_backends;
let backends = list_ocr_backends()?;
for name in backends {
println!("Registered OCR backend: {}", name);
}
```
"""
def list_ocr_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Clear all OCR backends from the global registry.
Removes all OCR backends and calls their `shutdown()` methods.
# Returns
- `Ok(())` if all backends were cleared successfully
- `Err(...)` if any shutdown method failed
# Example
```rust
use xberg::plugins::clear_ocr_backends;
clear_ocr_backends()?;
```
"""
def clear_ocr_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc """
List all registered post-processor names.
Returns a vector of all post-processor names currently registered in the
global registry.
# Returns
- `Ok(Vec<String>)` - Vector of post-processor names
- `Err(...)` if the registry lock is poisoned
# Example
```rust
use xberg::plugins::list_post_processors;
let processors = list_post_processors()?;
for name in processors {
println!("Registered post-processor: {}", name);
}
```
"""
def list_post_processors, do: :erlang.nif_error(:nif_not_loaded)
@doc "Remove all registered post-processors."
def clear_post_processors, do: :erlang.nif_error(:nif_not_loaded)
@doc """
List names of all registered renderers.
# Errors
Returns an error if the registry lock is poisoned.
"""
def list_renderers, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Clear all renderers from the global registry.
Removes every renderer, including the built-in defaults (markdown, html,
djot, plain). After calling this no renderers are registered; re-register
as needed.
# Errors
Returns an error if the registry lock is poisoned.
"""
def clear_renderers, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Clear all reranker backends from the global registry.
Calls `shutdown()` on every registered backend, then empties the registry.
# Errors
- Any error returned by a backend's `shutdown()` method. The first error
encountered stops processing of remaining backends.
Since v5.0.0.
"""
def clear_reranker_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc """
List the names of all registered reranker backends.
Used by `xberg-cli`, the api/mcp endpoints, and generated language
bindings.
Since v5.0.0.
"""
def list_reranker_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Clear all tokenizer backends from the global registry.
Calls `shutdown()` on every registered backend, then empties the registry.
# Errors
- Any error returned by a backend's `shutdown()` method. The first error
encountered stops processing of remaining backends.
"""
def clear_tokenizer_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc """
List the names of all registered tokenizer backends.
Used by `xberg-cli`, the api/mcp endpoints, and generated language
bindings.
"""
def list_tokenizer_backends, do: :erlang.nif_error(:nif_not_loaded)
@doc "List names of all registered validators."
def list_validators, do: :erlang.nif_error(:nif_not_loaded)
@doc "Remove all registered validators."
def clear_validators, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Find unmarked claims in markdown text.
Returns lines that assert a claim but carry neither a footnote citation anchor (`[^...]`)
nor an inference marker (`[*inference*]`).
The heuristic is simple: a line that contains alphabetic words, ends with sentence punctuation,
and is not a heading, blank line, or markup-only line is considered a claim.
Exclude lines that appear in the citation block (after `---` + `<!-- citations ... -->`).
# Arguments
* `markdown` - The markdown text to search
# Returns
A vector of trimmed line text strings for unmarked claims.
# Examples
```rust
let text = r#"This is a claim without citation.
Another claim with citation.[^1]
This is a claim with inference.[*inference*]
[^1]: Citation"#;
let unmarked = find_unmarked_claims(text);
assert_eq!(unmarked.len(), 1);
assert!(unmarked[0].contains("without citation"));
```
"""
def find_unmarked_claims(_markdown), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Verify that an excerpt appears verbatim in source text.
Performs exact matching by default. Also tries whitespace-normalized matching
(collapsing runs of whitespace on both sides) since PDF-extracted text often
has irregular spacing.
# Arguments
* `excerpt` - The text snippet to find
* `source_text` - The full source text to search
# Returns
`true` if the excerpt appears (exactly or with normalized whitespace), `false` otherwise.
# Examples
```rust
let source = "The document states: Exact quoted text.";
let excerpt = "Exact quoted text";
assert!(verify_excerpt(excerpt, source));
// Whitespace normalization
let source2 = "Text with irregular spacing.";
let excerpt2 = "Text with irregular spacing";
assert!(verify_excerpt(excerpt2, source2));
```
"""
def verify_excerpt(_excerpt, _source_text), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Score a query against a document using ColBERT's MaxSim operator: for each
query token vector, take the maximum dot product against any document
token vector, then sum across query tokens.
Returns `0.0` if `query` and `doc` have mismatched dimensionality, if either
has zero tokens, or if either is not well-formed per
[`MultiVectorEmbedding::is_well_formed`] (its `data` length does not match
`num_tokens * dim`).
Pure CPU primitive — available without ONNX Runtime.
Since v5.0.0.
"""
def max_sim_score(_query, _doc), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Rank a set of documents against a query by MaxSim score, descending.
Mirrors the sort/truncate shape of `crate::reranking`'s `build_results`,
minus top-k truncation (callers slice the returned `Vec` themselves).
Pure CPU primitive — available without ONNX Runtime.
Since v5.0.0.
"""
def max_sim_rank(_query, _docs), do: :erlang.nif_error(:nif_not_loaded)
def visitor_reply(_ref_id, _result), do: :erlang.nif_error(:nif_not_loaded)
def complete_trait_call(_reply_id, _result_json), do: :erlang.nif_error(:nif_not_loaded)
def fail_trait_call(_reply_id, _error_message), do: :erlang.nif_error(:nif_not_loaded)
def register_ocr_backend(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_ocr_backend(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_post_processor(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_post_processor(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_validator(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_validator(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_document_extractor(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_document_extractor(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_embedding_backend(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_embedding_backend(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_renderer(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_renderer(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_reranker_backend(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_reranker_backend(_name), do: :erlang.nif_error(:nif_not_loaded)
def register_tokenizer_backend(_pid, _name, _implemented_methods), do: :erlang.nif_error(:nif_not_loaded)
def unregister_tokenizer_backend(_name), do: :erlang.nif_error(:nif_not_loaded)
def contentfilterconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def extractionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Check if image processing is needed by examining OCR and image extraction settings.
Returns `true` if either OCR is enabled or image extraction is configured,
indicating that image decompression and processing should occur.
Returns `false` if both are disabled, allowing optimization to skip unnecessary
image decompression for text-only extraction workflows.
# Optimization Impact
For text-only extractions (no OCR, no image extraction), skipping image
decompression can improve CPU utilization by 5-10% by avoiding wasteful
image I/O and processing when results won't be used.
Returns `true` when image binary data should be extracted.
True when `config.images.extract_images` is set, captioning is configured, or QR-code
detection is enabled. Captioning and QR-code detection both require image bytes
regardless of whether the caller also requested image extraction.
"""
def extractionconfig_needs_image_data(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Returns `true` when any image processing is needed during extraction.
# Optimization Impact
For text-only extractions (no OCR, no image extraction, no captioning), skipping
image decompression can improve CPU utilization by 5-10% by avoiding wasteful
image I/O and processing when results won't be used.
"""
def extractionconfig_needs_image_processing(_obj), do: :erlang.nif_error(:nif_not_loaded)
def svgoptions_default, do: :erlang.nif_error(:nif_not_loaded)
def extractinput_default, do: :erlang.nif_error(:nif_not_loaded)
@doc "Build a bytes input with a MIME type and optional filename hint."
def extractinput_from_bytes(_bytes, _mime_type, _filename), do: :erlang.nif_error(:nif_not_loaded)
@doc "Build a URI input from a local path, `file://` URI, or HTTP(S) URL."
def extractinput_from_uri(_uri), do: :erlang.nif_error(:nif_not_loaded)
@doc "Build an output containing one successful result."
def extractionresult_single(_result), do: :erlang.nif_error(:nif_not_loaded)
def urlextractionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def imageextractionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def tokenreductionoptions_default, do: :erlang.nif_error(:nif_not_loaded)
def languagedetectionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def htmloutputconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def lateinteractionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def layoutdetectionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def ocrqualitythresholds_default, do: :erlang.nif_error(:nif_not_loaded)
def ocrconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def pageconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def pdfconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def hierarchyconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def postprocessorconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def chunkingconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def embeddingconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def redactionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Validate user-supplied terms and patterns at config-construction time.
Compiles every [`RedactionPattern::pattern`] (with the case-insensitive
inline flag where applicable) and returns the first compilation error so
the caller can reject the config before the redaction pipeline runs.
Pure terms (regex-escaped) cannot fail to compile, but the function
still rejects empty values to avoid degenerate zero-length matches.
"""
def redactionconfig_validate(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc "Build a term whose label is the literal value itself (case-insensitive)."
def redactionterm_literal(_value), do: :erlang.nif_error(:nif_not_loaded)
@doc "Build a term with a custom label."
def redactionterm_labeled(_label, _value), do: :erlang.nif_error(:nif_not_loaded)
@doc "Build a pattern with the given label (case-insensitive by default)."
def redactionpattern_labeled(_label, _pattern), do: :erlang.nif_error(:nif_not_loaded)
def rerankerconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def sparseembeddingconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def transcriptionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def treesitterconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def treesitterprocessconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def serverconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Get the server listen address (host:port).
# Example
```rust
use xberg::core::ServerConfig;
let config = ServerConfig::default();
assert_eq!(config.listen_addr(), "127.0.0.1:8000");
```
"""
def serverconfig_listen_addr(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Check if CORS allows all origins.
Returns `true` if the `cors_origins` vector is empty, meaning all origins
are allowed. Returns `false` if specific origins are configured.
# Example
```rust
use xberg::core::ServerConfig;
let mut config = ServerConfig::default();
assert!(config.cors_allows_all());
config.cors_origins.push("https://example.com".to_string());
assert!(!config.cors_allows_all());
```
"""
def serverconfig_cors_allows_all(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Check if a given origin is allowed by CORS configuration.
Returns `true` if:
- CORS allows all origins (empty origins list), or
- The given origin is in the allowed origins list
# Arguments
* `origin` - The origin to check (e.g., "<https://example.com>")
# Example
```rust
use xberg::core::ServerConfig;
let mut config = ServerConfig::default();
assert!(config.is_origin_allowed("https://example.com"));
config.cors_origins.push("https://allowed.com".to_string());
assert!(config.is_origin_allowed("https://allowed.com"));
assert!(!config.is_origin_allowed("https://denied.com"));
```
"""
def serverconfig_is_origin_allowed(_obj, _origin), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Get maximum request body size in megabytes (rounded up).
# Example
```rust
use xberg::core::ServerConfig;
let mut config = ServerConfig::default();
assert_eq!(config.max_request_body_mb(), 100);
```
"""
def serverconfig_max_request_body_mb(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Get maximum multipart field size in megabytes (rounded up).
# Example
```rust
use xberg::core::ServerConfig;
let mut config = ServerConfig::default();
assert_eq!(config.max_multipart_field_mb(), 100);
```
"""
def serverconfig_max_multipart_field_mb(_obj), do: :erlang.nif_error(:nif_not_loaded)
def securitylimits_default, do: :erlang.nif_error(:nif_not_loaded)
def tokenreductionconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc "Create a fresh counter with no previous state."
def tokencounter_new, do: :erlang.nif_error(:nif_not_loaded)
def footnoteconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc "Set whether to parse the citation block."
def footnoteconfig_with_parse_citations(_obj, _enabled), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Compute and populate the `node_types` field from the current `nodes`.
Call this after all nodes have been added to the structure. Internal
construction paths (builder, derivation) call this automatically.
# Examples
```rust
use xberg::types::document_structure::{DocumentStructure, DocumentNode, NodeContent, NodeId};
let mut structure = DocumentStructure {
nodes: vec![DocumentNode {
id: NodeId::from("n1"),
content: NodeContent::Paragraph { text: "Hello".into() },
parent: None,
children: vec![],
content_layer: Default::default(),
page: None,
page_end: None,
bbox: None,
annotations: vec![],
attributes: None,
}],
source_format: None,
relationships: vec![],
node_types: vec![],
};
structure.finalize_node_types();
assert!(structure.node_types.contains(&"paragraph".to_string()));
```
"""
def documentstructure_finalize_node_types(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc "Check if the document structure is empty."
def documentstructure_is_empty(_obj), do: :erlang.nif_error(:nif_not_loaded)
def documentstructure_default, do: :erlang.nif_error(:nif_not_loaded)
def imagepreprocessingconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def tesseractconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Returns `true` when no metadata fields, format-specific metadata, or
additional postprocessor fields are populated.
"""
def metadata_is_empty(_obj), do: :erlang.nif_error(:nif_not_loaded)
def diffoptions_default, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Returns `true` if `data` holds exactly `num_tokens * dim` values — i.e.
the flat buffer matches the declared shape.
All fields are `pub` and the type is `Deserialize`, so a value coming
from an untrusted source (FFI caller, JSON, a store row) may be
malformed. [`max_sim_score`] guards on this so a length-mismatched
buffer scores `0.0` rather than silently mis-scoring (a shorter `data`
would make [`rows`](Self::rows)' `chunks_exact` drop a trailing partial
chunk). Uses `checked_mul` so an overflowing `num_tokens * dim` is
reported as malformed instead of wrapping.
Since v5.0.0.
"""
def multivectorembedding_is_well_formed(_obj), do: :erlang.nif_error(:nif_not_loaded)
def yakeparams_default, do: :erlang.nif_error(:nif_not_loaded)
def rakeparams_default, do: :erlang.nif_error(:nif_not_loaded)
def keywordconfig_default, do: :erlang.nif_error(:nif_not_loaded)
def heuristicsconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Validate the configuration.
# Errors
Returns [`HeuristicsError::ConfigError`] when:
- `target_pages_per_chunk` is 0
- `max_pages_per_chunk` < `target_pages_per_chunk`
- `file_size_threshold_bytes` is 0
"""
def heuristicsconfig_validate(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc "Get the number of pages in this range."
def pagerange_page_count(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Derive signals from raw page text.
Callers that already have structured per-page data (e.g. from a PDF extractor)
can set individual fields directly. This constructor is for callers that only
have the plain-text content of a page (e.g. from `PageContent`).
# Arguments
* `page_number` — 1-indexed page number.
* `text` — Full extracted text for the page.
* `layout_text_density` — Pre-computed text density in `[0.0, 1.0]`. Pass `0.0`
when unknown (disables density-shift detection for this page).
# Heuristics
All signal derivations are *conservative starting points*. Each is documented
inline. They err on the side of fewer false positives; tune thresholds via
[`MultidocThresholds`] rather than by changing these heuristics.
"""
def pagesignals_from_page_text(_page_number, _text, _layout_text_density), do: :erlang.nif_error(:nif_not_loaded)
def multidocthresholds_default, do: :erlang.nif_error(:nif_not_loaded)
@doc "Compile the given JSON text as a Draft 2020-12 meta-schema."
def metaschema_compile(_meta_schema_json), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Validate `raw` against the meta-schema and deserialize into a [`Preset`],
stamping the fingerprint over the canonical file bytes.
"""
def metaschema_parse_preset(_obj, _path, _raw), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Build the registry from preset files embedded at compile time under
`src/presets/library/`. Validates every file against the meta-schema.
"""
def registry_load_embedded, do: :erlang.nif_error(:nif_not_loaded)
@doc """
Return the global registry, loading it on first access.
# Panics
Panics if any embedded preset is malformed. The build-time validation
test ensures this cannot happen for the embedded presets; a panic here
indicates a build artifact problem, not a runtime error.
"""
def registry_global, do: :erlang.nif_error(:nif_not_loaded)
@doc "Look up a preset by its identifier."
def registry_get(_obj, _id), do: :erlang.nif_error(:nif_not_loaded)
@doc "Materialize a [`PresetSummary`] list for the public registry endpoint."
def registry_summaries(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc "Number of presets currently loaded."
def registry_len(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc "Whether the registry contains zero presets."
def registry_is_empty(_obj), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Read raw sample bytes for `<preset_id>` from
`library/<id>/samples/<name>`. Returns `None` when the file is absent.
"""
def registry_sample_bytes(_obj, _preset_id, _name), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Load additional preset files from a runtime directory and insert them
into this registry.
Reads every `*.json` file directly under `dir` (non-recursive),
validates each against the meta-schema, and inserts it. Files that fail
validation are rejected — the error is returned immediately and the
registry is left in a partially-updated state. Existing entries with the
same id are overwritten.
Returns the number of presets successfully loaded from `dir`.
# Use case
This is the injection point for downstream catalogs that add curated
presets on top of the single embedded OSS preset.
"""
def registry_extend_from_dir(_obj, _dir), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets a custom cache directory for model files.
# Arguments
* `path` - Path to cache directory
# Examples
```no_run
use xberg::PaddleOcrConfig;
use std::path::PathBuf;
let config = PaddleOcrConfig::new("en")
.with_cache_dir(PathBuf::from("/tmp/paddle-cache"));
```
"""
def paddleocrconfig_with_cache_dir(_obj, _path), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Enables or disables table structure detection.
# Arguments
* `enable` - Whether to enable table detection
# Examples
```no_run
use xberg::PaddleOcrConfig;
let config = PaddleOcrConfig::new("en")
.with_table_detection(true);
```
"""
def paddleocrconfig_with_table_detection(_obj, _enable), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Enables or disables angle classification for rotated text.
# Arguments
* `enable` - Whether to enable angle classification
"""
def paddleocrconfig_with_angle_cls(_obj, _enable), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the database threshold for text detection.
# Arguments
* `threshold` - Detection threshold (0.0-1.0)
"""
def paddleocrconfig_with_det_db_thresh(_obj, _threshold), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the box threshold for text bounding box refinement.
# Arguments
* `threshold` - Box threshold (0.0-1.0)
"""
def paddleocrconfig_with_det_db_box_thresh(_obj, _threshold), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the unclip ratio for expanding text bounding boxes.
# Arguments
* `ratio` - Unclip ratio (typically 1.5-2.0)
"""
def paddleocrconfig_with_det_db_unclip_ratio(_obj, _ratio), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the maximum side length for detection images.
# Arguments
* `length` - Maximum side length in pixels
"""
def paddleocrconfig_with_det_limit_side_len(_obj, _length), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the batch size for recognition inference.
# Arguments
* `batch_size` - Number of text regions to process simultaneously
"""
def paddleocrconfig_with_rec_batch_num(_obj, _batch_size), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the minimum recognition confidence threshold.
# Arguments
* `score` - Minimum confidence (0.0-1.0), text below this is dropped
"""
def paddleocrconfig_with_drop_score(_obj, _score), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets padding in pixels added around images before detection.
# Arguments
* `padding` - Padding in pixels (0-100)
"""
def paddleocrconfig_with_padding(_obj, _padding), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the model tier controlling detection/recognition model size.
# Arguments
* `tier` - `"mobile"` (default, lightweight, faster) or `"server"` (high accuracy, GPU/complex documents)
"""
def paddleocrconfig_with_model_tier(_obj, _tier), do: :erlang.nif_error(:nif_not_loaded)
@doc """
Sets the model generation.
# Arguments
* `version` - `"pp-ocrv6"` (default) or `"pp-ocrv5"`. Under `"pp-ocrv6"`, `model_tier`
selects among `"medium"`/`"small"`/`"tiny"`.
"""
def paddleocrconfig_with_model_version(_obj, _version), do: :erlang.nif_error(:nif_not_loaded)
@doc "Creates a default configuration with English language support."
def paddleocrconfig_default, do: :erlang.nif_error(:nif_not_loaded)
@doc false
def acceleration_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def captioning_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_classification_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def content_filter_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def email_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extraction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def file_extraction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def svg_options_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extract_input_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extraction_error_item_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extraction_summary_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extraction_result_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def url_extraction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def image_extraction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def token_reduction_options_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def language_detection_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def html_output_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def late_interaction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def layout_detection_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def llm_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def structured_extraction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ner_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_quality_thresholds_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_pipeline_stage_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_pipeline_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def pdf_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def hierarchy_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def post_processor_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def chunking_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def embedding_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def redaction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def redaction_term_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def redaction_pattern_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def reranker_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def sparse_embedding_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def summarization_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def transcription_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def translation_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def tree_sitter_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def tree_sitter_process_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def supported_format_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def server_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def docx_app_properties_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def core_properties_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def security_limits_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def token_reduction_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def footnote_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def pdf_annotation_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_classification_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def classification_label_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def djot_content_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def formatted_block_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def inline_element_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def djot_image_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def djot_link_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def footnote_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def document_structure_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def document_relationship_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def document_node_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def table_grid_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def grid_cell_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def text_annotation_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def entity_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def document_counts_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extracted_document_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def archive_entry_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def processing_warning_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def llm_usage_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def chunk_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def heading_context_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def heading_level_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def chunk_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extracted_image_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def bounding_box_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def element_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def element_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def pdf_form_field_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def image_preprocessing_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def tesseract_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def image_preprocessing_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def formula_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def code_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def code_chunk_info_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def excel_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def email_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def archive_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def image_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def xml_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def text_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def header_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def link_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def image_metadata_type_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def structured_data_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def html_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def error_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def pptx_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def docx_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def csv_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def bibtex_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def citation_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def year_range_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def fiction_book_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def dbf_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def dbf_field_info_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def jats_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def contributor_role_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def epub_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def pst_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def audio_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_confidence_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_rotation_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_element_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ocr_element_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_structure_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_boundary_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_info_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_content_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def layout_region_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_hierarchy_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def hierarchical_block_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def qr_code_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def qr_bounding_box_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def redaction_report_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def redaction_finding_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def cell_change_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def property_change_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def document_revision_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def revision_delta_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def document_summary_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def table_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def translation_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extracted_uri_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def diff_options_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def sparse_embedding_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def multi_vector_embedding_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def late_interaction_match_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def yake_params_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def rake_params_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def keyword_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def keyword_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def extraction_confidence_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def heuristics_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_range_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def page_signals_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def multidoc_thresholds_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def preset_sample_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def preset_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def preset_summary_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def paddle_ocr_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def pdf_metadata_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def proxy_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def content_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def browser_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def crawl_config_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def sitemap_url_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def map_result_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
@doc false
def ssrf_policy_from_json(_json), do: :erlang.nif_error(:nif_not_loaded)
end