尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Xberg Dart API 参考指南:在 Flutter 与纯 Dart 环境中调用 Rust 文档智能引擎

Xberg Dart API 参考指南:在 Flutter 与纯 Dart 环境中调用 Rust 文档智能引擎 后端AI 应用NLP【免费下载链接】xbergPolyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with CLI, REST API, and MCP server.项目地址https://gitcode.com/gh_mirrors/kr/xberg点击查看免费下载本文以仓库内 Dart API Referencev1.2.8由 alef 自动生成为骨架结合 Dart 包 README 与 示例代码 展开。你将掌握如何安装并加载 xberg Dart 绑定、通过XbergBridge完成单文件/批量/URL 地图等核心提取调用、读懂ExtractionConfig与ExtractedDocument两大核心类型、配置 OCR/分块/嵌入/LLM 等高级能力以及如何通过插件注册表OCR、后处理、校验器、渲染器等八大 trait bridge扩展引擎行为。Xberg 是一个以 Rust 为核心的文档智能引擎而 Dart 绑定借助 flutter_rust_bridge 将同一套引擎带到 Flutter 应用与纯 Dart 服务端提供 isolate 安全的 Future/Stream API。Dart 包与 Rust、Python、Node.js、Go、Java 等其余 14 种绑定共享同一份 Rust 实现——底层能力完全一致只是入口语言不同。安装与系统要求通过 pub 安装dart pub add xbergFlutter 项目使用flutter pub add xberg系统要求见 packages/dart/README.mdDart SDK 3.0纯 Dart 消费方Flutter 支持 macOS、iOS、Android、Linux、WindowsFlutter Web 不受支持原生运行时由 flutter_rust_bridge 交付随包附带各支持平台的预编译二进制可选Tesseract OCR如需 OCR 功能包内结构可以直接在仓库中查看lib/xberg.dart是入口rust/flutter_rust_bridge.yaml是绑定生成配置example/xberg_example.dart演示了最简加载test/xberg_test.dart提供可运行的测试参考。快速开始从文档中提取内容最基础的单文件提取调用摘自 README Quick Startimport package:xberg/xberg.dart; Futurevoid main() async { final output await XbergBridge.extract( const ExtractInput( kind: ExtractInputKind.uri, uri: document.pdf, ), config: await createExtractionConfigFromJson(json: {}), ); print(output.results.first.content); }要点ExtractInput是一个不可变的生成数据类用const构造kind决定输入是原始字节ExtractInputKind.bytes还是本地路径 /file:/// HTTP(S) URLExtractInputKind.uri。ExtractionConfig同样是由代码生成的数据类且字段没有默认值——因此推荐用createExtractionConfigFromJson从 JSON 构造凡是省略的字段都保留 Rust 侧的默认值。这是 Dart 绑定与 Rust 侧ExtractionConfig默认语义对齐的关键机制。核心函数一览参考文档定义了 26 个顶层函数按用途可分四组。提取入口extract/extractBatch/mapUrl函数签名作用extractFutureExtractionResult extract(ExtractInput input, ExtractionConfig config)从单个字节或 URI 输入提取内容extractBatchFutureExtractionResult extractBatch(ListExtractInput inputs, ExtractionConfig config)从多个字节或 URI 输入批量提取mapUrlFutureMapResult mapUrl(String uri, UrlExtractionConfig config)不提取文档内容仅发现uri可达的所有页面与 sitemap返回 URL 清单mapUrl底层由config.crawl构建crawlberg.CrawlEngine并调用CrawlEngine.mapMapResult即 crawlberg 类型的再导出。典型场景是在投入完整文档提取之前先拿到站点的 URL 清单来构建爬取队列或校验范围若爬取配置校验失败或 map 操作本身失败返回Validation错误。批量提取示例READMEfinal inputs [ const ExtractInput(kind: ExtractInputKind.uri, uri: report.pdf), const ExtractInput(kind: ExtractInputKind.uri, uri: notes.txt), ]; final output await XbergBridge.extractBatch(inputs); for (final result in output.results) { print(result.content); }ExtractionResult是统一的结果信封除results按发现顺序排列的ExtractedDocument列表外还携带errors非致命的逐输入错误ExtractionErrorItem含稳定数字错误码code、snake_case 的errorType、来源标识与消息summary聚合统计输入数、结果数、错误数、远程 URL 数、爬取页面数、下载文档数crawlFinalUrls/crawlRedirectCount/crawlUniqueNormalizedUrlsURL 摄取期间的重定向与去重信息。能力枚举listSupportedFormatsFutureListSupportedFormat listSupportedFormats()返回按扩展名排序的(extension, mimeType)列表。文档特别强调了两条实现约束静态的EXT_TO_MIME表描述的是代码库知道的全部格式与编译进当前二进制的 Cargo feature 无关——直接对外宣传该表会声称支持本构建中并不存在的提取器GH#1387因此实现将表与文档提取器注册表取交集只有某个已注册提取器确实声明了该 MIME 类型该扩展名才会被列入。这样广告清单永不偏离现实并自动覆盖运行时注册的第三方提取器。没有注册文件扩展名的格式如按内容动态检测的源代码不会出现在列表中。插件注册表管理Xberg 的插件系统以全局注册表为中心Dart 绑定为每一类插件提供register/unregister/clear/list四件套下表来自文档 Trait Bridges 一节TraitRegisterUnregisterClearOcrBackendXbergBridge.registerOcrBackendXbergBridge.unregisterOcrBackendXbergBridge.clearOcrBackendsPostProcessorXbergBridge.registerPostProcessorXbergBridge.unregisterPostProcessorXbergBridge.clearPostProcessorsValidatorXbergBridge.registerValidatorXbergBridge.unregisterValidatorXbergBridge.clearValidatorsDocumentExtractorXbergBridge.registerDocumentExtractorXbergBridge.unregisterDocumentExtractorXbergBridge.clearDocumentExtractorsEmbeddingBackendXbergBridge.registerEmbeddingBackendXbergBridge.unregisterEmbeddingBackendXbergBridge.clearEmbeddingBackendsRendererXbergBridge.registerRendererXbergBridge.unregisterRendererXbergBridge.clearRenderersRerankerBackendXbergBridge.registerRerankerBackendXbergBridge.unregisterRerankerBackendXbergBridge.clearRerankerBackendsTokenizerBackendXbergBridge.registerTokenizerBackendXbergBridge.unregisterTokenizerBackendXbergBridge.clearTokenizerBackends清单类函数listEmbeddingBackends、listOcrBackends、listPostProcessors、listRenderers、listRerankerBackends、listTokenizerBackends、listValidators、listDocumentExtractors被 xberg-cli、api/mcp 端点以及各语言绑定共同使用。值得注意的语义细节registerDocumentExtractor按name建索引并为supportedMimeTypes()返回的每个 MIME 类型建立映射插件名为空或含空白时返回Validation。提取器优先级同一 MIME 类型有多个提取器时注册表选优先级最高者。默认 500–25 为回退级、51–75 为增强级、76–100 为专用级。unregisterDocumentExtractor是 no-op 安全的未注册同名提取器时无事发生。clearRenderers会移除包括内置默认markdown、html、djot、plain在内的所有渲染器调用后需按需重新注册。clearOcrBackends、clearEmbeddingBackends、clearRerankerBackends、clearTokenizerBackends都会先对每个已注册后端调用shutdown()再清空注册表首个shutdown错误会中断后续处理。分析辅助函数函数签名说明classifyChunksOwnedFutureExtractedDocument classifyChunksOwned(ExtractedDocument result, ChunkClassificationConfig config)对文档分块做多标签分类并返回更新后的文档。owned 形式保证文档跨语言绑定边界时变更不丢失Rust 调用方持有可变文档时可用classifyChunks避免移动findUnmarkedClaimsFutureListString findUnmarkedClaims(String markdown)找出既无脚注引用锚[^...]也无推理标记[*inference*]的断言行。启发式含字母词、以句末标点结尾、且不是标题/空行/纯标记的行视为断言引用块---!-- citations ... --之后中的行被排除verifyExcerptFuturebool verifyExcerpt(String excerpt, String sourceText)默认精确匹配同时尝试空白归一化匹配PDF 抽取文本常有不规则空白maxSimScoreFuturedouble maxSimScore(MultiVectorEmbedding query, MultiVectorEmbedding doc)ColBERT MaxSim 算子对每个查询 token 向量取与任一文档 token 向量的最大点积再跨查询 token 求和。维度不匹配、零 token、或MultiVectorEmbedding不合规范data长度 ≠num_tokens * dim时返回 0.0。纯 CPU 原语无需 ONNX RuntimemaxSimRankFutureListLateInteractionMatch maxSimRank(MultiVectorEmbedding query, ListMultiVectorEmbedding docs)按 MaxSim 分数降序排列文档集镜像crate::reranking::build_results的排序/截断形态不含 top-k 截断由调用方自行切片doctorFutureDoctorReport doctor(ExtractionConfig config)探测config中的后端与设置报告本主机上实际会执行什么。不触发任何下载或计费 API 调用未编译进构建或模型未缓存的后端报Skip而非失败OcrBackendCapabilities相关的两个函数需要一起理解listOcrBackendCapabilities按name排序返回每个后端的支持语言清单但不保证支持语言有序。注意成本TesseractBackend.supported_languages()首次调用会分配 Tesseract API 并按真实任务解析的 tessdata 目录resolve_tessdata_path初始化来枚举已安装语言之后走缓存。ocrBackendSupportsLanguage(backend, language)委托后端自身的supports_language做逐语言判定——不要从 capabilities 的空语言列表推断不支持因为空列表可能是不枚举而非不支持任何语言。后端名查找不区分大小写并解析与后端调度相同的paddleocr别名。核心数据类型输入ExtractInput统一提取输入字段kindbytes要求bytesuri要求uri、bytesUint8List、uri本地路径 /file:/// HTTP(S) URL、mimeTypeMIME 提示、filename供 MIME 探测与元数据使用、configFileExtractionConfig逐输入覆盖。配置枢纽ExtractionConfig主提取配置可从 TOML/YAML/JSON 文件加载也可编程创建。字段极其丰富按主题梳理MIME 探测mimeDetectionPolicy默认PreferContent优先内容签名回退扩展名TrustExtension信任扩展名——文档安全提示强调文件名是上传/下载中的攻击者可控输入仅对可信来源使用ContentOnly完全忽略扩展名。OCR 相关ocrOcrConfig、forceOcr、forceOcrPages1 起始页码列表、disableOcr、ocrStrategyAuto默认只对未通过质量检查的页 OCRScannedPages额外对所有像扫描件的页 OCR带minConfidence。分块chunkingChunkingConfignull即禁用。输出outputFormatPlain/Markdown/Djot/Html/Json/DocTags/Custom、resultFormatUnifiedvsElementBased、escapeMarkdown默认true防止#06-18之类的字面文本被 CommonMark 解析器误读为标题、tableAnchors可选的在每个表格 Markdown 块前插入[TABLE:{table_id}]标记。文档结构includeDocumentStructure启用document树layout启用布局检测RT-DETR via ONNX RuntimeuseLayoutForMarkdown在非 OCR 的 PDF markdown 路径上运行布局检测成本约 150–300ms/页 CPU。缓存useCache、cacheNamespace租户隔离目录为{cache_dir}/{namespace}/仅字母数字/连字符/下划线最长 64 字符、cacheTtlSecs0表示完全跳过缓存读写。后处理链postprocessor、ner、redaction、summarization、translation、pageClassification、chunkClassification、captioning、qrCodes。LLM 结构化提取structuredExtractionStructuredExtractionConfig发送文档内容 JSON schema 给 VLM结果存structured_output。资源与安全extractionTimeoutSecs默认 600 秒批量中每个文件独立超时、maxConcurrentExtractions、concurrency线程预算、securityLimits归档炸弹防护maxArchiveSize500 MB、maxCompressionRatio100:1、maxFilesInArchive10000、maxNestingDepth1024、maxTableCells100000 等、maxEmbeddedFileBytes默认 50 MiB、maxArchiveDepth默认 3。URL 摄取urlUrlExtractionConfig含modeAuto/Document/Crawl。CSV/GeoJSON/Emailcsv显式分隔符与注释前缀、geojson默认输出有界摘要而非完整坐标、emailMSG 回退代码页。树形代码智能treeSitterTreeSitterConfig371 种语言的语法感知提取。FileExtractionConfig允许批量内异构配置所有字段都是OptionTnull表示用批量级默认。其中maxConcurrentExtractions、useCache、acceleration、securityLimits为批量级专属不可逐文件覆盖。结果ExtractedDocumentextract/extractBatch返回的每个文档载荷字段众多核心包括content纯文本表示mimeType源文档 MIME 类型metadataMetadata含通用字段title、authors、keywords、language、createdAt、modifiedAt、pages、ocrUsed、additional等与按格式判别联合formatFormatMetadataPdf、Docx、Excel、Email、Pptx、Archive、Image、Xml、Text、Html、Ocr、Csv、Bibtex、Citation、FictionBook、Dbf、Jats、Epub、Pst、Audio、Codecounts廉价结构计数页/表/图始终填充无需开启逐页/逐图提取即可用于报告、成本估算、配额tables、images、pages、chunks、elements、ocrElements、document结构化树、formulas、formFields、annotations、children归档递归结果、uris、revisionsDOCXw:ins/w:del等修订跟踪各后处理产物extractedKeywords、qualityScore、processingWarnings、entities、summary、translation、pageClassifications、redactionReport、structuredOutput、codeIntelligence、llmUsage、extractionConfidencedetectedLanguagesISO 639-1与detectedLanguageConfidencesv1.1置信度、文档占比、书写系统、可靠性。配置类详解OCR 配置OcrConfig字段众多重点backendtesseract默认、paddleocr、sceptre、vlm或自定义注册名language语言码列表默认[eng]列表是绑定对象 API 的规范形式配置文件中也可接受单个字符串或engdeu加号连接形式pipeline/vlmFallback多后端流水线。vlmFallback是OcrPipelineConfig的语法糖OnLowQuality合成[classical_stage, vlm_stage]Always只保留 VLM 阶段两者都要求vlm_config为Some否则OcrConfig.validate在提取时报Validation而非 panicautoRotate用 ONNX PP-LCNet 文档方向分类器检测 0/90/180/270 度旋转不调用 Tesseract 自己的 OSDqualityThresholds原生文本→OCR 回退决策的质量阈值minTotalNonWhitespace、minAlnumRatio、criticalFragmentedWordRatio、minOcrMeanConfidence等一整套backendOptions透传给后端的任意键值 JSON未知键静默忽略——是pipeline为 null 时唯一的推荐扩展点tessdataBytesWASM 构建用无文件系统原生构建通常忽略并依赖TessdataManager。分块配置ChunkingConfigmaxCharacters默认 1000、overlap默认 200、trim、chunkerTypeText/Markdown/Yaml/Semantic、sizingCharacters默认Tokenizer可用 HuggingFace tokenizer 或自注册的TokenizerBackend按 token 计、topicThreshold语义分块余弦阈值默认 0.75、tableChunkingSplit默认 vsRepeatHeader、embedding/sparseEmbedding/lateInteraction分别为稠密、SPLADE、ColBERT 向量受对应 Cargo feature 门控。嵌入与重排EmbeddingConfig模型默认gte-modernbert-basepreset、normalize默认 true、batchSize32、acceleration、maxSequenceLengthRerankerConfigtopK、batch 32SparseEmbeddingConfig默认opensearch-v3-distillpresetLateInteractionConfig默认gte-moderncolbertpresetqueryMaxLength32 对应 ColBERT 论文的 query augmentation 技巧。LLM 配置LlmConfig经 liter-llm 路由model形如openai/gpt-4o、anthropic/claude-sonnet-4-20250514apiKey为 null 时回退到提供方标准环境变量如OPENAI_API_KEY另有baseUrl、timeoutSecsVLM OCR 路径默认 300 秒、maxRetries、temperature、maxTokens、topP、stop统一表达为列表、seed、bedrockAWS Bedrock凭据字段永不打印、credentialProviderAzure AD / Vertex OAuth2 / Vertex ADC / Bedrock Web Identity、maxConcurrency进程级真实并发上限、maxResponseBytes等。每个 featureVLM OCR、VLM embeddings、结构化提取携带独立LlmConfig可逐 feature 选用不同提供方。OCR 元素与表格OcrElementConfigincludeElements、minLevel、minConfidence、buildHierarchy控制ocrElements输出OcrElement统一 Tesseract矩形与 PaddleOCR四边形的几何、置信度OcrConfidence分离检测/识别、层级与旋转信息。Table的boundingBox坐标语义分两条路线PDF 原生内容与扫描 PDF 走 OCR 管线时为左下原点的 PDF 点坐标独立图片 OCR 时为左上原点的光栅像素坐标——调用方必须知道表格由哪条路线产生再解释该字段。枚举速查执行提供方ExecutionProviderTypeAuto自动选择macOS 用 CoreML、Linux 用 CUDA、其余 CPU另有Cpu/CoreMl/Cuda/TensorRt。MIME 探测MimeDetectionPolicyPreferContent/TrustExtension/ContentOnly。输出格式OutputFormatPlain/Markdown/Djot/Html/Json/DocTags/Custom。OCR 策略OcrStrategyAuto/ScannedPagesVlmFallbackPolicyDisabled/OnLowQuality/Always。PDF 引擎PdfBackendNative默认纯 Rust 引擎crates/xberg-native-pdfPdfium需pdf-pdfiumfeature选择级别在 CLI 验证层与提取层双重强制。嵌入/重排模型EmbeddingModelType、RerankerModelType、SparseEmbeddingModelType、LateInteractionModelType均含Preset/Custom/Llm/Plugin变体Plugin变体在进程内回调已注册后端无需 HF 下载与 ONNX Runtime。表结构模型TableModelTatr默认 30MB、SlanetWired/SlanetWireless365MB、SlanetPlus7.78MB、SlanetAuto分类器路由、Disabled。布局类LayoutClass18 个规范类Caption、Chart、Formula、PageHeader/Footer、Table、Text、Title、KeyValueRegion、Form 等各模型后端统一映射到这套共享集合。分块语义ChunkerType、ChunkSizing、TableChunkingMode、ChunkTypeHeading、PartyList、Definitions、OperativeClause、SignatureBlock、Schedule、TableLike、Formula、Function/Class/Module 等法律/代码语义分类。输出形状ResultFormatUnifiedvsElementBased与OutputFormat渲染层面正交。浏览器回退BrowserModeAuto/Always/Never/Stealth、BrowserWait、BrowserBackendChromiumoxide/Native。可信度语义ConfidenceSemanticsLegibility可作绝对质量门槛Uncalibrated切勿作门控None无页面级置信度与PageOrientationHandlingSelfCorrecting/RecognisesRotatedText/RequiresUpright——文档记录了真实 A/B 观测Tesseract 能在侧置光栅上直接重建阅读顺序PaddleOCR 能识别旋转文本但块列表保持原始光栅顺序sceptre 在侧置光栅上产出乱码。PII 与脱敏PiiCategory、RedactionStrategyMask/Hash/TokenReplace/Drop。错误模型与 FFI 错误码主错误类型为XbergError枚举所有操作共用保留错误链Io、Parsing、Ocr、Validation、Cache、ImageProcessing、Serialization、MissingDependency、Plugin、LockPoisoned、UnsupportedFormat、Embedding、Reranking、Transcription、Timeout、Cancelled、Security、Other。每个变体携带alef(error_code N)注解构成跨 FFI 边界的稳定公开契约代码块为XbergError1000–1017、HeuristicsError1100–1101、LoadError1200–1205、ResolveError1300避开 alef 自身保留的 0–4。这些数字被编译进已发布的各语言绑定因此只追加、永不重编号或复用新变体取块内下一个空闲编号而非按声明顺序插入。另有三个辅助错误类型HeuristicsErrorConfigError/PdfAnalysisError、LoadErrorpreset 文件加载Parse/SchemaValidation/Deserialize/IdMismatch/BadMetaSchema/Io、ResolveErrorpreset 解析SchemaNotObject。插件 trait 速览文档为各插件 trait 定义了完整契约Plugin基类name()唯一、小写连字符、URL 安全、version()、initialize()注册时调用一次取self故需内部可变性、shutdown()、description()、author()全部要求Send Sync。DocumentExtractorextract、supportedMimeTypes支持精确application/pdf与前缀image/*、priority、canHandle可选默认 true。OcrBackendprocessImage/processImageFile/processDocument、supportsLanguage、supportsTableDetection、supportsDocumentProcessing、emitsStructuredMarkdown端到端 VLM 后端应覆写为 true、confidenceSemantics、pageOrientationHandling。PostProcessorprocess就地修改结果避免克隆、processingStageEarly/Middle/Late、shouldProcess、priority错误默认非致命。Validator与 post-processor 关键区别是快速失败——校验错误会使提取立即失败shouldValidate、priority。EmbeddingBackenddimensions注册时恰好调用一次并被缓存、embed必须返回与texts等长的向量且每向量长度等于dimensions违反即Validation而非 panic。RerankerBackendrerank必须返回等长原始 logit调度器加 sigmoid 转[0,1]并降序排序。TokenizerBackend同步trait分块边界搜索中会高频调用count_tokens非空文本必须返回非零计数注册时探测、运行时不可信则退化为字符计数并记日志。RendererrenderResult格式名取自Plugin.name注册重名渲染器即替换该格式的旧渲染器。常见配置模板扫描 PDF 强制 OCRREADMEimport package:xberg/xberg.dart; Futurevoid main() async { final config await createExtractionConfigFromJson(json: { force_ocr: true, ocr: { backend: tesseract, language: [eng] } } ); const input ExtractInput( kind: ExtractInputKind.uri, uri: scanned.pdf, ); final output await XbergBridge.extract(input, config: config); final document output.results.first; print(document.content); }音频转写TranscriptionConfig推荐起点TOML 形态[extraction.transcription] enabled true model tiny配套约束model可选tiny/base/small/medium/large-v3maxDurationMs默认 30 分钟、maxBytes默认 512 MiB、timeoutMs默认 10 分钟allowNetworkfalse支持完全离线部署。深入阅读Dart API Reference本文档来源Dart 包 README安装与 Quick StartDart 示例Dart 包清单 pubspec.yamlDart 绑定入口库Rust 侧绑定生成代码 与 flutter_rust_bridge 配置无论是 Flutter 移动端文档扫描、纯 Dart 服务端的批量文档管线还是需要 OCR/嵌入/重排/LLM 联合工作的 RAG 场景上述 API 面都覆盖了从单次extract到多后端插件编排的完整能力而doctor()能在一开始就告诉你当前主机上哪些能力真正可用。赞分享后端AI 应用NLP【免费下载链接】xbergPolyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with CLI, REST API, and MCP server.项目地址https://gitcode.com/gh_mirrors/kr/xberg点击查看免费下载相关推荐Xberg PHP API 实战参考用 PHP 8.2 调用 Rust 文档智能提取引擎Xberg PHP API 实战参考用 PHP 8.2 调用 Rust 文档智能提取引擎 Xberg 是一个以 Rust 为核心的跨语言文档智能引擎可对后端AI 应用NLPXberg WebAssembly API 参考指南在浏览器与 Node.js 中调用 Rust 文档智能内核Xberg WebAssembly API 参考指南在浏览器与 Node.js 中调用 Rust 文档智能内核 Xberg 的 WebAssembly 绑定将后端AI 应用NLPJar Analyzer 性能优化秘籍G1GC与ZGC在大型JAR文件分析中的对比测试Jar Analyzer 性能优化秘籍G1GC与ZGC在大型JAR文件分析中的对比测试 在处理大型JAR文件分析时JVM垃圾收集器的选择直接影响Jar An后端AI 应用NLP上一篇终极免费无人机固件管理神器DankDroneDownloader完全指南下一篇bot-on-anything容器网络策略微服务间通信控制终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表