如何使用自定义列提取:只获取你需要的数据,而不是整页内容

大多数文档提取工具的工作方式就像文字复印机:扫描页面,把找到的所有内容都倒进电子表格。如果你只需要采购订单上的三个字段——单号、供应商名称和总金额——却会得到页面上所有 47 个文本字符串,然后还要手动从中挑出那三个。自定义列提取颠覆了这一逻辑。你先告诉 AI 你想要什么,它只返回那些内容。

自定义列提取:定义你的列,让 AI 只从文档中提取那些字段

为什么"提取全部内容"是错误的起点

传统 OCR 只回答一个问题:"这一页上有哪些文字?"它将文档图像转换为一串机器可读的字符——每个单词、每个数字、每个不经意的水印和页码。对于一页发票来说,可能会产生 50 到 80 个独立的文本字符串,全部倾倒进电子表格,毫无结构、也没有标签。接下来你要做的是:通读输出结果,找出哪个字符串是发票号,哪个是日期,哪个是总金额,再手动复制到你实际使用的工作表中。

这正是"OCR 全部文字"在企业文档处理中几乎从不是正确答案的原因。你几乎从不需要文档上的每一条文字。你只需要五到十个特定字段。其余的都是噪声——而你花在过滤这些噪声上的时间,正是你最初试图通过自动化来节省的时间。

自定义列提取从另一个方向出发。不是先提取一切再事后过滤,而是提前定义好你的列。AI 以你的目标字段为"镜头"阅读文档——搜寻单号、供应商名称和总金额,忽略其他所有内容。输出结果正是你想要的电子表格,列名正是你所命名的那些。

核心洞察:缩小目标范围能提升提取精度。被要求"查找并提取所有文字"的 AI 没有优先级机制——页面上的每个文本字符串都被同等对待。被要求"查找单号、供应商名称和订单总额"的 AI 则能将注意力集中在定位这些具体值上,借助语义线索("单号长什么样?")和上下文("总金额通常出现在哪里?")来提升精准度。越具体,越准确。

列名即指令:命名策略

你输入的列名是你与 AI 之间的主要沟通渠道。一个写得好的列名是一条精准的指令——它告诉 AI 要查找什么类型的值,以及如何格式化。模糊的列名("金额")给 AI 的引导太少。好的列名("订单总金额"或"发票合计")能缩小搜索范围,提高第一次就得到正确数字的概率。

以下命名原则能产生最准确的提取结果:

原则一般写法更好写法原因
明确指定实体NumberPO Number"Number" 可以是任何编号——发票号、行号、参考号。"PO Number" 精确告知 AI 要找哪个编号。
说明位置或角色背景DateInvoice Date一份文档中可能有多个日期(开具日期、截止日期、交货日期)。指定是哪个日期可避免歧义。
使用描述性限定词AddressShipping Address发票和采购订单通常同时包含账单地址和收货地址。加上类型限定词可消除混淆。
声明你想要的格式AmountTotal Amount (Number)附加"(Number)"可提示 AI 只提取数值,去掉货币符号。
使用文档中的常见术语CustomerBuyer Company Name使用文档中实际出现的语言。"Buyer" 在采购订单中是标准术语;"Customer" 在发票中更常见。

你不必遵循严格的命名规范——AI 能理解自然语言。"Due Date" 和 "Payment Due Date" 都能正常工作。但你越具体,AI 需要解决的歧义就越少,提取精度也就越高。

三个真实场景示例

同样的自定义列机制可以适应截然不同的文档类型和工作流程。以下是三个常见场景,每个场景都有不同的列设置策略。

场景一:发票处理

你需要的字段:Invoice Number、Invoice Date、Due Date、Vendor Name、Subtotal、Tax Amount、Total Amount、Currency。无论格式或版式如何,这八个字段几乎出现在每张发票上。

列设置方式:按上述字段名依次输入。对于包含明细行的多页发票,可添加"Item Description"、"Quantity"、"Unit Price"和"Line Total"列。每个明细行在输出中对应一行,发票表头字段(编号、日期、供应商)在该发票的每一行中重复出现——便于按供应商进行筛选和汇总。

批量处理技巧:如果你要同时处理来自多个供应商的发票(例如月末应付账款),可以将所有发票一次性上传。AI 对每张发票独立提取,然后将结果合并为一张电子表格,所有行使用统一的列结构。

场景二:采购订单处理

你需要的字段:PO Number、Issue Date、Supplier Name、Item Code、Item Description、Quantity Ordered、Unit Price、Line Total、Requested Delivery Date。这些字段一次性涵盖了采购订单的表头和明细行详情。

列设置策略:采购订单比发票包含更多表格内容。将所有需要的明细行列(Item Code、Description、Quantity、Unit Price、Line Total)与表头字段放在同一个列列表中。AI 能理解表头字段(PO Number、Supplier Name)适用于整个文档,会在每个明细行中重复,而明细行字段则在表格的每一行中各有不同。

多页处理:对于跨越多页且每页重复列标题的采购订单,AI 能识别重复的表头并将其从输出中排除。一份包含 200 个明细行的 10 页采购订单,输出结果是 200 行数据,而非需要手动拼接的 10 个独立表格。

场景三:供应商报价比较

你需要的字段:Supplier Name、Item Description、Quantity、Unit Price、Line Total、Lead Time (Days)、Payment Terms、Currency。将五个不同供应商的报价批量上传,AI 使用相同的列定义从每份报价中提取数据——无论每个供应商的报价格式有多大差异。

核心优势:不同供应商可能对同一信息使用不同名称。有的叫"SKU",有的叫"Part Number",还有的叫"Item Code"。AI 的语义理解能力会将三种表述全部映射到你的"Item Code"列,无需你配置同义词或针对每个供应商的专属映射规则。

JPG/PNG/PDF AI 提取

文件经过安全处理,不会被存储。

保存为模板:一次设置,永久复用

一旦你为某种特定文档类型定义了一套效果良好的列集合——比如你的标准发票提取列——就可以将其保存为模板。下次处理发票时,只需点击一下加载模板,无需重新输入所有列名。

这就是一次性设置成本能持续回报的地方。第一次设置发票列需要两分钟。此后每批发票——无论是五张还是五十张——都以预加载好的列开始处理。你上传文件,AI 按照你保存的模板进行处理,每次都能得到结构一致的电子表格。

模板还有助于团队保持一致性。如果团队中有多人处理文档,共享同一个模板能确保所有人的输出具有完全相同的列、相同的顺序——字段名不会有差异,不会有缺失列,也不会随时间推移出现格式漂移。

常见问题

应该定义多少列——有数量限制吗?

没有硬性限制,但有实际上的最优区间。15 到 20 列以内,提取结果通常非常可靠。超过这个数量,你开始覆盖一些可能不是每份文档都有的边缘字段。一组 5 到 12 个命名良好的重点列,几乎总是比一份包含 30 列的详尽清单产生更好的结果,因为 AI 可以对每个字段给予更集中的注意力。如果你确实需要很多字段,可以考虑分两次处理:第一次提取核心字段,第二次提取补充字段。

如果某个字段在特定文档中不存在,会怎样?

该单元格留空。例如,如果你的列集合包含"Tax Amount",但其中某份文档没有税费(跨省 B2B 发票或出口文件中常见),输出表格中对应行的 Tax Amount 单元格就会为空。电子表格的结构保持一致——所有行具有相同的列——但只有 AI 在文档中找到对应值时才会填入数据。

一个批次中可以混合不同类型的文档吗?

可以,但前提是你的列集合对批次中的所有文档类型都有意义。如果你将发票、采购订单和收据混在一起上传,列名设置为"Invoice Number / PO Number / Receipt Number",AI 会尝试在每份文档中查找每个字段。不包含某个字段的文档,该列对应的单元格将为空。为获得最佳效果,建议将同类文档放在一个批次处理——所有发票放一批,所有采购订单放另一批。这样列定义更聚焦,输出结果也更整洁。

与手动录入数据相比,准确率如何?

对于打印清晰、格式规范的文档,字段级准确率超过 90%——即首次提取时每 10 个值中有 9 个是正确的。相比之下,手动数据录入根据数据质量研究,每次按键的固有错误率为 1% 到 3%。区别在于:AI 的错误往往是可预测的(混淆相似字段名、误读低分辨率文字),而人工错误是随机的(拼写错误、数字颠倒、跳行)。快速浏览一遍 AI 输出就能发现大多数问题;而要发现自己手动录入的错误,则需要逐行对照原始文档核对——这和原本录入花费的时间一样长。

AI 能处理复选框、印章和签名吗?

可以——你可以为这些内容定义列。使用描述性名称,例如"Approval Checkbox (Checked/Unchecked)"、"Company Stamp Present (Yes/No)"或"Authorized Signature Present (Yes/No)"。AI 能识别这些视觉元素并返回相应状态。对于签名,输出通常是"Present"或"Not Present"——它验证签名是否存在,而非验证签名的身份。