docparser-core 0.1.0

docparser 独立解析核心:IR / 统一错误 / 能力 trait / Registry / Router / Policy(零 native 依赖)
Documentation
  • Coverage
  • 32.95%
    58 out of 176 items documented0 out of 75 items with examples
  • Size
  • Source code size: 97.1 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.7 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 8s Average build duration of successful builds.
  • all releases: 8s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • hi-agents

docparser-core

独立文档解析的核心层:统一 IR、统一错误码、能力抽象、注册表、格式嗅探、策略与引擎编排。 零 native 依赖(仅 serde),不含任何具体格式实现——格式后端在 docparser-pdf / docparser-office 等 crate 中。

安装

cargo add docparser-core                                        # 内核 + 文本族(md/csv/html)

cargo add docparser-core --no-default-features                  # 只要内核:IR + 引擎 + txt

cargo add docparser-core --no-default-features --features md    # 只加 markdown

特性

feature 默认 作用
md ✅ Markdown 块级解析插件(标题/列表/引用/代码/表格)
csv ✅ CSV(RFC4180)→ TableData
html ✅ HTML 标签级块解析(docparser-epub 依赖它,不能裁)

txt 是底座(字节流读取 + 空行分段 + IR 组装),始终编译。 关掉某个 feature 后该格式不注册,engine 遇到对应扩展名返回 unsupported(不 panic)。 依赖树只有 serde,与开关无关;省下的是编译进来的代码量(实测 rlib 1.03 MB → 1.18 MB)。

需要开箱即用(含 PDF / Office 后端)时用门面 crate:

cargo add docparser-sdk

组成

模块 作用
model IR:Document / Page / Block / Image / TableData / Rect / DocMeta(serde 双向);DocMeta.extra 承载插件级元数据(EPUB 书名/作者/封面)与处理链告警
error ErrorCode{encrypted,corrupt,unsupported,timeout,native_crash,unknown} + DocError
plugin ParseCapability / ProcessCapability / FormatPlugin / RawDoc
registry 后端注册、按策略解析链、复合后端委托环检测
router magic + 扩展名嗅探(识别伪装件与加密 OOXML)
policy BackendPolicy:后端链、偏好、回退、超时、OCR/版面开关
engine DocumentEngine:嗅探 → 解析链 → 处理链 → assemble
emit to_text / to_markdown
plugins 内置文本族:txt(空行分段)/ md(标题/列表/引用/代码/表格)/ csv(RFC4180)/ html(标签级块)

用法

use docparser_core::{DocumentEngine, Registry};

let mut reg = Registry::new();
docparser_core::plugins::text::register_defaults(&mut reg); // txt/md/csv/html
let engine = DocumentEngine::new(reg);

let doc = engine.parse("note.md")?;
println!("{} pages, {} blocks", doc.pages.len(), doc.pages[0].blocks.len());

接入 PDF/Office 只需注册对应后端:

docparser_pdf::register_defaults(&mut reg);
docparser_office::register_defaults(&mut reg);

错误语义

解析失败返回 DocError,code 是跨后端稳定的结论:

  • encrypted / unsupported 是终止码,不会回退到兜底后端(避免真结论被兜底掩盖);
  • corrupt 表示后端链耗尽;
  • 处理链(OCR / layout)失败不致命,写入 meta["warnings"]。

许可

MIT OR Apache-2.0