用途:当用户需要从 PDF(财务报表、科学表格、发票、电子表格式 PDF)或表格文件/图片中获取结构化表格数据时使用。Xberg 通过布局模型(RT-DETR v2)检测表格,再用可配置的表格模型重建单元格结构。
主要能力与用法:
- 开启布局感知提取需加 --layout,否则表格退化为纯文本重排,丢失单元格边界。基础命令:xberg extract report.pdf --layout --content-format markdown;结构化 JSON:xberg extract report.pdf --layout --format json,表格位于 result.tables。
- 两种输出面:--content-format markdown 让表格以 | col | col | 内联在 content 中,便于 LLM 摄入;--format json 给出 tables 数组,每项含 cells[][](行×列)、markdown(预渲染)、page_index、bbox,适合下游精确访问单元格。开启 --layout 时两者同时填充。
- 表格模型由 --layout-table-model 选择:tatr(默认,密集复杂表格,最重最准)、slanet_auto(按表分派 wired/wireless)、slanet_wired(有边框,比 tatr 快)、slanet_wireless(无边框,适合发票、简单网格)、slanet_plus(混合、比 slanet_auto 轻)、disabled(只做布局检测,不做表格结构)。
- 布局漏检时可降低阈值(默认约 0.5),如 --layout-confidence 0.3。
- 电子表格:.xlsx、.ods、.csv、.tsv 由专用解析器处理,无需布局模型,每个工作表自动成为 Markdown 或结构化表格。仅在用不同配置反复处理同一文件时加 --no-cache=true。
- 也可用配置文件,其中 output_format 等价于 CLI 的 --content-format,[layout_detection] 下可设 enabled、confidence_threshold、table_model。
- Python/Node.js 可编程访问,结构化表格位于 result.results[0].tables,可读取 table.markdown 与 table.cells[0][0]。
已知限制:合并单元格在 v0.1 中按跨区重复值重建,不保留合并元数据;旋转表格对图像型 PDF 需先开启 --ocr-auto-rotate true;嵌套表格被扁平化,检测成功但结构嵌套丢失;多页表格每页单独产生一条 tables[] 记录,需自行按表头拼接;布局与表格模型依赖 ONNX Runtime,WASM 构建与 Android x86_64 模拟器不可用,原生目标完整支持。
常见失败模式:开启 --layout 后表格为空,多为阈值过高或模型不匹配,可降至 0.3 并试用 tatr;Markdown 表格参差时改用 slanet_wired(有边框)或 slanet_wireless(发票);提取慢时因 tatr 较重,可默认用 slanet_auto 或 slanet_plus,仅在重视准确度时用 tatr。
价格、收费、平台支持范围等资料暂未提供。