# Docling 表格导出 CSV：空单元格、三行金额与合计

Docling 表格导出 CSV按本页输入、步骤与检查复现。真实 Fast 输出发生列错位；Accurate 恢复三行数值与空备注但表头为 unit _price。已对照原 PDF 人工重命名为 unit_price，reviewed CSV 验收通过；原始失败文件独立保留。

## 1. 查看原始四列表格
source.pdf 含 sku、quantity、unit_price、note，CUP-A 与 BOX-C 的备注为空。

## 2. 按官方参数准备独立环境
run-docling.py 默认 Accurate。先用 --fast --out raw-fast 保存失败对照，再用 --out raw-accurate 保存准确模式，输出目录分开，原输入不改。两次均关闭 OCR、固定 CPU 与 2 线程。本样例 Fast 列错位，Accurate 恢复数字但表头仍为 unit _price。
```sh
python3 run-docling.py --fast --out raw-fast
python3 run-docling.py --out raw-accurate
```

## 3. 保留 Fast 失败并对比 Accurate
保留 raw-fast/table-1.csv；CUP-A 被放进末列且缺少预期价格。再读 raw-accurate/table-1.csv，三行数据恢复，但实际表头有空格。转换成功状态不等于满足字段 schema。

## 4. 对照 PDF 人工修正已确认表头
对照原始 PDF 确认 unit _price 指单价列后，review-table.py 先核对三行与原文完全相等，再把该表头重命名 unit_price。不能用同一重命名脚本修复 Fast 错位记录；保留 raw 与 reviewed 两份。
```sh
python3 review-table.py
python3 check-output.py reviewed-table.csv
```

## 5. 按原数重新合计
审核后 CSV 的三行分别为 CUP-A 2×12.50、BAG-B 3×8.00、BOX-C 1×6.00，合计 55.00。CUP-A 与 BOX-C 备注仍为空；金额、ID、列和空值全部检查。

## 6. 读取文件检查而非只看截图
对 raw-fast 与 raw-accurate 运行检查都会非零；reviewed-table.csv 才通过。失败日志与原始文件都可下载，不能把模型原始输出称为全部准确。真实 Fast 输出发生列错位；Accurate 恢复三行数值与空备注但表头为 unit _price。已对照原 PDF 人工重命名为 unit_price，reviewed CSV 验收通过；原始失败文件独立保留。
```sh
python3 check-output.py raw-fast/table-1.csv
python3 check-output.py raw-accurate/table-1.csv
python3 check-output.py reviewed-table.csv
```

## 7. 保存来源与错误样本
保留 source.pdf/source.png、原始 JSON、软件版本和人工核对记录。自动结构检查只验证本教材约定，仍需检查布局与语义。