xberg Python 实战:开启语言检测并读取文档的 ISO 639-3 检测结果 后端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 的 Python 绑定中开启文档语言检测language detection通过ExtractionConfig的language_detection配置节传入 JSON 参数提取完成后从结果中读取 ISO 639-3 语言代码。读完后你将掌握enabled、min_confidence、detect_multiple三个参数的含义与默认值、单语/多语两种检测模式的差异以及底层基于 whatlang 的检测链路在源码中的实现位置。快速上手启用语言检测并读取结果xberg 提供的 Python 官方示例自动生成于 language_detection_config.md演示了完整的调用方式import asyncio from xberg import extract, ExtractInput, ExtractInputKind from xberg._xberg import ExtractionConfig async def main() - None: input ExtractInput(kindExtractInputKind(uri), mime_typetext/plain, urihttps://example.com/text/report.txt) config ExtractionConfig.from_json({\language_detection\:{\detect_multiple\:false,\enabled\:true,\min_confidence\:0.5}}) result await extract(input, config) print(result.results[0].detected_languages) asyncio.run(main())要点拆解ExtractInput使用uri类型的输入源xberg 服务端负责拉取该 URI 指向的文本该示例的契约测试通过 mock 服务器返回text/plain内容见下文契约测试一节所有配置都通过ExtractionConfig.from_json(...)以一段 JSON 字符串传入语言检测只需在其中添加language_detection键提取完成后语言代码位于result.results[0].detected_languages是一组 ISO 639-3 代码例如英文文本返回eng。仓库中的契约测试 language_detection_config.json 与上述示例一一对应它对英文文本断言results[0].detected_languages[0]等于eng并配置了同样的三个参数enabled: true、min_confidence: 0.5、detect_multiple: false。如果你希望覆盖多语言混合文档的场景可以参考同目录下的 language_detection_multilingual.json。配置参数详解language_detection配置节对应 Rust 核心中的LanguageDetectionConfig结构体定义于 types.rs其字段与默认值如下参数类型默认值说明enabledbooltrue是否启用语言检测。注意整个language_detection配置节缺省时处理器不会运行必须显式提供该节才会生效min_confidencef640.8最低置信度阈值0.0–1.0低于该值的检测结果会被丢弃detect_multipleboolfalse是否检测文档中的多种语言多语模式按 200 字符分块统计各语言占比结构体使用了#[serde(deny_unknown_fields)]也就是说配置 JSON 中多写的字段会直接导致解析失败上面三个字段就是全部可配置项。Rust 侧的Default实现types.rs确认了默认组合为enabled: true、min_confidence: 0.8、detect_multiple: false——注意契约测试示例中把min_confidence调低到 0.5是在用更宽松的阈值换取更高的检出率。输出结构不止有 ISO 代码除扁平的detected_languages列表外xberg 还并行填充了结构化的每语言详情detected_language_confidences对应 extraction.rs 中的LanguageConfidence结构与detected_languages按相同顺序一一对应每个条目包含languageISO 639-3 代码confidence该语言的置信度[0.0, 1.0]。单语模式下是 whatlang 对整篇文档的Info::confidence()多语模式下是所有被判定为该语言的 200 字符块的置信度均值proportion该语言占文档分析内容的比例。单语模式下恒为1.0多语模式下是被判定为该语言的块数占比未达min_confidence的块不计入分子但计入分母scriptwhatlang 识别出的书写系统如Latin、Cyrillicreliable该检测结果是否可靠。单语模式取 whatlang 自身的Info::is_reliable()其内部阈值为 0.9多语模式取块均置信度是否高于同一 0.9 阈值源码中对应AGGREGATE_RELIABLE_THRESHOLD常量见 mod.rs。Python 侧的类型存根 xberg/_xberg.pyi 中暴露了这两个字段因此既可以从detected_languages取轻量代码列表也可以在需要置信度、占比和书写系统时切换到detected_language_confidences。底层实现whatlang 与 Early 阶段后处理器从源码结构看语言检测在 xberg 核心中是一个标准的后处理器插件。processor.rs 中的LanguageDetector实现要点插件名为language-detection运行在ProcessingStage::Early早期阶段优先于其他后处理逻辑should_process的判断条件是config.language_detection.is_some()——这解释了为什么必须显式传入该配置节仅靠enabled: true默认值是不够的它调用detect_language_details将结果同时写入result.detected_languages和result.detected_language_confidences两者任一检测失败时统一置回None处理器按文本长度估算耗时estimated_duration_ms每 1KB 计 1ms最小 1ms优先级为 40。真正的检测算法由 whatlang crate 完成mod.rs 开头的注释明确了这一依赖。两条路径的行为差异值得注意单语模式detect_multiple: false对整篇文本调用一次 whatlang 的detect若置信度 min_confidence则返回单元素列表否则返回Nonemod.rs。多语模式detect_multiple: true将文本按 200 个字符分块CHUNK_SIZE常量逐块检测只保留置信度达到min_confidence的块再按语言聚合计数与置信度和。最终列表按各语言占块数的降序排列平局时按 ISO 639-3 代码字典序打破平局。如果没有任何块达到阈值会回退到单语模式对全文做一次整体检测mod.rs。此外whatlang 完全无法分类的块如纯符号文本在多语聚合中按置信度 0.0 计入以避免分母虚低造成的假性高占比。语言代码覆盖方面lang_to_iso639_3将 whatlang 的Lang枚举映射到约 70 种 ISO 639-3 代码涵盖eng英语、cmn普通话、jpn日语、kor韩语、ara阿拉伯语、rus俄语等主流语言mod.rs。行为边界与验证依据以下边界行为均可在源码中直接确认配置时建议知悉检测被禁用或文本为空时不产生结果detect_language_details在config.enabled为 false 或文本trim()后为空时直接返回Nonemod.rs阈值过滤min_confidence是硬性门槛——单语模式下整篇文本的置信度低于它就没有结果多语模式下低于它的块会被静默丢弃enabled默认 true 但节缺省即不运行处理器在配置节为None时直接跳过processor.rs所以启用实际上要求你在 JSON 中显式写出language_detection键契约测试language_detection_config.json 用 mock 服务器提供text/plain文本断言提取非错误且detected_languages[0]为eng可作为端到端行为的最权威参照。小结在 Python 侧一段三行的ExtractionConfig.from_json配置加上对detected_languages/detected_language_confidences的读取即可完成提取 语言判定的完整流程调参核心只有min_confidence检出率与准确率的权衡和detect_multiple单语快路径 vs 分块多语统计。赞分享后端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 语言检测实战通过 C FFI 开启 Language Detection 并读取 ISO 639-3 结果xberg 语言检测实战通过 C FFI 开启 Language Detection 并读取 ISO 639 3 结果 在 xberg 的多格式文档智能管线中后端AI 应用NLPXberg 多语言检测实战启用 detect_multiple 并读取每个 ISO 639-3 语言码Xberg 多语言检测实战启用 detect_multiple 并读取每个 ISO 639 3 语言码 本文以 xberg 的语言检测Language De后端AI 应用NLPXberg 语言检测配置实战在 Elixir 中启用语言检测并读取 ISO 639-3 代码Xberg 语言检测配置实战在 Elixir 中启用语言检测并读取 ISO 639 3 代码 本文聚焦 Xberg 的语言检测Language Detect后端AI 应用NLP上一篇XXMI Launcher 游戏模组管理终极指南一个启动器搞定六款热门游戏下一篇GTA5线上辅助工具怎么用免费开源小助手全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考