用途:当用户需要结构化表格数据(财务报表、科学表格、发票、表格型 PDF)时使用。Xberg 通过布局模型 RT-DETR v2 检测表格,并用可配置的表格模型重建单元格结构。
主要能力:
- 布局感知提取:加 --layout 开启,否则表格回退为纯文本重排,丢失单元格边界。
- 两种输出:Markdown 表格嵌入 content(--content-format markdown,适合 LLM 摄取);结构化 tables 数组(--format json),每项含 cells[][]、markdown、page_number、bounding_box(无位置数据时省略)。--layout 开启时两者同时生成。
- 表格模型(--layout-table-model):tatr(默认,最重、精度最高,适合密集复杂表格)、slanet_auto(按表分派 wired/wireless)、slanet_wired(有边框表格,快于 tatr)、slanet_wireless(无边框,如发票)、slanet_plus(混合,轻于 slanet_auto)、disabled(仅布局检测,不重建结构)。
- 电子表格:.xlsx、.ods、.csv、.tsv 由专用解析器处理,无需布局模型,每个工作表自动成为 Markdown 或结构化表格。
- 配置文件可用 output_format 等价 --content-format,[layout] 下设 confidence_threshold 与 table_model。
- 程序化访问:Python 中 result.results[0].tables,Node.js 结构类似(camelCase 字段)。
必要用法示例: xberg extract report.pdf --layout --content-format markdown xberg extract report.pdf --layout --format json xberg extract bank-statement.pdf --layout --layout-table-model tatr --content-format markdown xberg extract noisy-scan.pdf --layout --layout-confidence 0.3 xberg extract workbook.xlsx --content-format markdown
限制:合并单元格仅以重复值重建,不保留合并元数据;旋转表格需先 --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。仅在用不同配置迭代同一文件时才用 --no-cache=true。