SuperAPI AI 工具集

format-specific-extraction

数据与分析

查看项目

更新于 10-16 07:16

技能介绍

用途:面向不同文档格式实现各自适配的提取流程,产出文本、表格与元数据,并统一通过安全预算约束恶意或超大输入。

主要能力与用法: Office XML(DOCX/PPTX/ODT):用 zip::ZipArchive::new(cursor) 打开,读取 word/document.xml、ppt/slides/*.xml、content.xml 等部件,再用 quick-xml::Reader 流式解析,递归时传入 &mut budget;成员数量上限来自 config.security_limits…max_files_in_archive。此路径不使用 ZipBombValidator。元数据经 crate::extraction::office_metadata,无 extract_metadata()。相关文件 extractors/docx.rs、pptx.rs、odt.rs。 PDF:用 xberg_native_pdf::PdfDocument::from_bytes(content.to_vec())? 接收自有 Vec<u8>,逐页取文本,无文本页回退 OCR;可用 config.force_ocr 或 config.force_ocr_pages 强制 OCR;config.pages 控制逐页输出,不控制表格。受 #[cfg(feature = "pdf")] 门控,后端由 PdfConfig.backend 指定(默认 native,pdfium 需 pdf-pdfium)。见 extractors/pdf/mod.rs。 压缩包:提取前先 ZipBombValidator::new(limits).validate(&mut archive)?,再由 extraction/archive/ 中各格式辅助函数取元数据与文本,如 extract_{zip,tar,7z,gzip}metadata、extract{zip,tar,7z,gzip}text_content、extract{zip,tar,7z}_file_bytes,无 build_archive_result()。见 extractors/archive.rs。 结构化文本:单一 StructuredExtractor 用对应格式库解析后美化输出为文本,见 extractors/structured.rs。 邮件:解析头部、提取正文、处理附件,嵌套深度由 SecurityBudget 派生的 DepthValidator 限制,见 extraction/email.rs、extractors/email.rs、extractors/pst.rs。

新增格式:在 core/mime.rs 的 FORMATS 注册表加一条 FormatEntry,EXT_TO_MIME 与 SUPPORTED_MIME_TYPES 由其派生;实现 InternalDocumentExtractor(非 DocumentExtractor),设置 supported_mime_types() 与 priority()(默认 50),在 extractors/mod.rs 的 register_default_extractors() 注册;可选格式加 #[cfg(feature = "my-format")];对用户内容施加 SecurityBudget/SecurityLimits;给结构体加 #[cfg_attr(alef, alef(skip))] 否则绑定重生成中止;配合夹具文件补测试。

限制:Office 路径不使用 ZipBombValidator;安全类型为 pub(crate),crate 内提取器可用,外部插件作者不可用;新增格式须遵循注册与特性门控流程。其余配置细节与夹具来源暂未提供。