Claude 读 PDF 表格抽错列、合错行

让 Claude 抽 PDF 表格,结果列错位、行合并错。多半是 PDF 本身没表结构、Claude 靠坐标推断出错——源文件和 prompt 两边都能修。

把 PDF 丢给 Claude 让它抽表格,拿到的东西形式上是张表,但列错位一格、本该分开的行合并了、或者数值落到错的表头下面。视觉上看着挺像那么回事,对一下源文件才发现问题。这是 PDF 工作里最常见的失败模式之一,原因是绝大多数 PDF 把表格存成「按坐标摆好的文本块」、没有显式的行列元数据——Claude(其实所有 PDF 工具都一样)只能从坐标推断网格,排版稍有古怪就会推错。源文件和 prompt 两边都有靠谱的绕过办法。

常见原因

按底层成因的命中率从高到低。

1. PDF 把文本存成坐标位置、没有真正的表结构

绝大多数 PDF(尤其是 Word、PowerPoint、扫描件导出的)按 xy 坐标摆文字。没有「第 3 行第 2 列」这种标记。Claude 靠间距推网格,间距不规则就推错。

怎么判断:用 Preview 或 Acrobat 打开 PDF,试着只选中一个单元格。如果一拖就选了整行,说明 PDF 没有表结构。

2. 合并单元格和多行单元格让行检测乱套

跨两行的单元格、或者一个单元格里塞了一段折行文字,行推断就模糊了。Claude 要么把相邻行合并、要么把一行拆成两行。

怎么判断:数源文件的行数和 Claude 输出的行数。差 1 或差 2 就是这个特征。

3. 表头视觉上是表头、结构上没标记

表头那行用加粗显示,人看是表头,PDF 存的方式跟其他数据行一模一样。Claude 可能把表头当数据行处理或者直接丢掉。

怎么判断:看 Claude 输出第一行是列名还是数据。

4. 扫描件 OCR 出错

图片型 PDF 先经过 OCR 再抽取。OCR 错误(1 vs l、0 vs O、小数点 vs 逗号)直接传染到表格里。OCR 排版没对齐也会让列推断挂掉。

怎么判断:PDF 是扫描的还是原生数字的?在文档里搜任意一个词,搜不到说明是扫描件、做过 OCR。

5. 多列页面排版被当成一张大宽表

有些报告用两栏排版。Claude 可能横跨整页读、把无关的列合到一起。

怎么判断:打开 PDF 看页面排版。两栏报纸式排版、中间有空隙,就是这个原因。

6. 数字格式(括号负数、货币符号)

会计 PDF 经常用 (1,234) 表示负数、$1,234.56 表示货币。Claude 可能不一致地剥符号、或者把负数当正数。

怎么判断:抽几个数和源文件对一下。符号错、货币丢,就是这个特征。

开始前

  • 想清楚最终需要什么形式:CSV、JSON、Markdown 表、纯文本叙述,prompt 写法不一样。
  • 有原始 Excel 或 CSV 就直接用,从 PDF 抽永远有损失。
  • prompt 前先用 Acrobat 或 Preview 打开 PDF 看一下结构。

需要收集的信息

  • PDF 的页数和表格数。
  • PDF 是数字原生还是扫描。
  • 列数、行数、有没有合并单元格。
  • Claude 输出里正确的行和错误的行各举一例。
  • 页面排版(单栏、多栏、横向)。
  • PDF 是用什么工具生成的(Word、LaTeX、扫描仪)。

一步一步修复

Step 1:先看 PDF 源结构

Acrobat 或 Preview 打开。试着选中一个单元格。一拖就选整行,那就是没有表结构、抽取要靠坐标推断。先把预期摆正。

Step 2:prompt 里写明表格结构

提前告诉 Claude 表格形态:「第 4 页的表有 5 列:Name、Date、Region、Revenue、Margin。把所有行抽成 CSV,按这个表头顺序。数字可能用括号表示负数,请保留为负数。」明确结构对准确率提升非常大。

Step 3:先抽一行验证

让它:「读第 4 页表格的第 7 行,每个单元格单独一行输出、前面带列名。」强制让 Claude 锚到结构而不是粗扫。

Step 4:复杂表格先用专门工具抽、再让 Claude 清洗

复杂表先用 Tabula、Camelot、AWS Textract 抽一遍。把 CSV 贴给 Claude 让它清列对齐、校验数字格式。比让 Claude 从原始 PDF 抽靠谱得多。

Step 5:多栏页面先拆栏

页面是两栏的话,先转成单栏。Acrobat:Export PDF → Single column layout。或者人工把页面从中间一分为二再丢给 Claude。

Step 6:随机抽 3 行对源验证

挑第 3 行、第 15 行、最后一行。和源 PDF 一格一格比对。错误的规律(每行差一格、表头互换)能指向系统性问题、prompt 里就能修。

Step 7:会计 PDF 在 prompt 里锁死数字格式

加:「(1,234) 当作 -1234$1,234.56 当作数字 1234.56 和货币 USD。输出两列:amount、currency。」消除数字解析歧义。

怎么验证修好了

  • 输出表头和源文件表头一字不差。
  • 输出行数和源文件行数对得上。
  • 随机三行一格一格比对都对。
  • 数字总和(如果有)能和源文件合计对上。

长期预防

  • 内部报告 PDF 旁边同步发一份 CSV,下游就能完全跳过抽取。
  • 扫描件先用高质量 OCR(Acrobat Pro、ABBYY)跑一遍再丢给 Claude。
  • 任何可能被机器读的文档都别用两栏排版。
  • 处理财务或科研数据的 Project 加自定义指令:「抽表格之前先把推断出的表头回显一次让用户确认。」
  • 重复性流程里搭一个 Tabula 或 Camelot 预抽取步骤,把干净 CSV 喂给 Claude。

容易踩的坑

  • 拿到 Claude 抽出来的表不验证就用。错误通常是系统性的、不是随机的。
  • 直接问「把表给我」、不指定列。Claude 会自己推、经常推错。
  • 把扫描件直接贴进去就指望 OCR 级质量。先单独做一次 OCR。
  • 忘了合并单元格和脚注行会把抽取搞乱。
  • 不告诉 Claude 怎么解析括号负数,就直接当正数处理。

常见问答

  • 为啥列差一格? 一般是表头那个单元格折成两行了,或者第一列异常宽把坐标推断带偏。
  • Claude 能读扫描 PDF 吗? 能,内置 OCR。质量看扫描分辨率。关键内容先用专门工具做一次 OCR。
  • 抽什么格式最稳? CSV,prompt 里显式写表头。Markdown 表好看但回灌时有损失。
  • 模型版本有差吗? 有,新模型处理排版推断明显更好。表格密集的活用最新 Opus 或 Sonnet。
  • 跨多页的表要不要拆? 特别宽或特别长的表要拆,每页一条 prompt,Excel 里再拼回去。
  • 有硬性大小上限吗? Web 上传单 PDF 软上限约 100 页。超出就拆开。

相关

标签: #Claude #排查 #PDF