跳到主要内容

Zapier中的发票 OCR:使用PDF4me AI Document Parser遍历共享邮箱中的每个附件

· 阅读需 26 分钟
SEO and Content Writer

PDF4me AI Document Parser是一个Zapier操作,它利用人工智能读取文档并以 JSON 格式返回其字段。配合Looping by Zapier,它可以处理应付账款中的常见情况:一封电子邮件包含多张发票,每个附件单独运行一次进行解析。

所有发票OCR工具都演示了相同的过程:输入一份文档,输出干净的字段。但发票的实际到达方式并非如此。它们通常以电子邮件的形式发送到共享邮箱,供应商会附上三个PDF文件,并在邮件正文中写上“ PFA ”。真正的问题不在于读取一张发票,而在于如何将单个触发器转换为多个解析步骤。大多数演练都悄悄地跳过了这一步骤,直接监控一个已被拆分文件的文件夹。但这个Zap不会跳过这一步骤。它包含三个步骤,中间的步骤是循环。

Zap概览
1. New Email in Shared Mailbox
Microsoft Outlook, polling every 2 minutes. One email is one supplier sending one or more invoices.
2. Create Loop From Line Items
Looping by Zapier. Turns the attachment list into one iteration per file.
3. AI - Document Parser
PDF4me. Runs your Analyzer against the attachment and returns the fields as JSON.
简短版

供应商通过电子邮件向您的共享邮箱发送了两份发票附件。Zapier Looping by Zapier会将附件列表拆分成每个文件一个迭代,每个迭代运行一次PDF4me AI Document Parser来解析其对应的附件。您将获得每份发票对应的结构化 JSON 文件,其中包含每个字段的置信度评分,可直接导入到 Sheets、 Airtable或您的账簿中。只需三步,无需编写任何代码。

基于原因的问答​

Why trigger on a shared mailbox instead of a folder?因为发票本来就在那里。要求供应商上传到门户网站,或者要求某人先将附件保存到Dropbox,这恰恰是在你想要自动化的环节增加了一个手动步骤。共享邮箱也是一种即使有人离职也能继续使用的方案:邮箱地址属于部门,而不是个人。

Why do you need a loop at all?因为Zap步骤每次触发只运行一次,而一封邮件可以包含任意数量的附件。如果没有循环, Zapier会解析第一个发送给你的附件,然后默默地丢弃其余附件,这是最糟糕的错误: Zap完成,但发票却消失了。 Looping可以将附件列表转换为每个文件一次迭代。

Why an Analyzer instead of a fixed invoice schema?因为您实际需要的字段取决于您的账簿。AI AI Document Parser运行您在PDF4me控制面板中定义一次的Analyzer,因此同一个操作现在可以处理发票,以后也可以处理采购订单或送货单。更改架构后,指向该Analyzer每个Zap都会自动更新,无需重新构建。

Why do confidence scores matter more than the extracted values?因为 OCR 识别失败时不会发出明显的错误信号。它会返回一个看似合理的错误答案。解析器会为每个字段报告一个分数,因此您可以将低于阈值的任何结果转交给人工审核,而不是直接发布。在捕获的运行结果中,总分都在 90 多分,而账单状态的得分只有 59.8 分,这正是审核队列应该采取行动的依据。


您将获得​

输入:共享邮箱中的一封电子邮件,其中包含任意数量的 PDF 发票附件。输出:每个附件运行一次Zap,每次运行返回结构化的 JSON 格式发票,并为每个字段分配置信度评分,可直接映射到任何下游应用程序。

Outlook showing an email with the subject invoice and the body PFA, carrying two attachments, Samples 2.pdf at 196 KB and Samples 1.pdf at 199 KB, listed as 2 attachments totalling 395 KB

两个附件,一条消息,正文只有两个字。这就是Zap需要处理的输入。

Zapier Zap history listing two successful runs of the Email Doc Parser Zap on Oct 15 2026 at 07:02:53 pm and 07:03:37 pm, each consuming 1 task, with the Outlook, Looping and PDF4me app icons shown on both rows

一封邮件输入,两次运行结束。每次循环迭代都会在历史记录中算作一次单独的Zap运行。


你需要什么​

  • A Zapier account。Looping by Zapier这是一个内置应用,无需安装。请查看您的套餐:需要使用多步骤Zap,并且每次循环迭代都算作一个任务。
  • PDF4me API key。Get your API key捕获的Zap runs在PDF4me应用程序的 1.30.0 版本上。
  • An Analyzer saved in the PDF4me dashboard。Open the Analyzer list内置的default_invoice_extraction Analyzer会生成此处显示的输出,因此您可以从这里开始,稍后构建自己的分析器。
  • A Microsoft Outlook shared mailbox您需要一个用于接收供应商发票的账户,以及一个拥有读取权限的账户。如果您还没有这样的账户,Microsoft documents how to create one。
  • A test email you control至少附上两个 PDF 文件,这样你就可以证明循环运行不止一次,然后再将Zap指向供应商的实际邮件。
请使用本教程中使用的同一张发票。
将此附件添加到您的测试邮件中,您的Doc Text应与下方所示的 JSON 逐字段匹配。这是一个包含两个项目的示例发票,其中一个项目为负折扣,这有助于检查解析器是否正常工作。
下载sample-invoice-13594027.pdf

Zap概览​

  1. New Email in Shared Mailbox ( Microsoft Outlook)每 2 分钟轮询一次邮箱。
  2. Create Loop From Line Items ( Looping by Zapier)将附件列表转换为每个文件一次迭代。
  3. AI - Document Parser (PDF4me) 对当前迭代中的附件运行Analyzer。

Zap完整概览​

Zapier editor showing the three step Email Doc Parser Zap: step 1 Microsoft Outlook New Email in Shared Mailbox with a 2 min polling badge reporting Found 1 new Email, step 2 Looping by Zapier Create Loop From Line Items reporting Sent 1 new Loop, and step 3 Pdf4me 1.30.0 AI - Document Parser reporting Sent 1 new Process Document

三个步骤。中间的循环使得第三步每次附件执行一次。


步骤 1:如何从共享邮箱触发Zap?​

目前流程:尚未启动,这是触发点。

收到发票是事件,所以邮箱是触发器。

  1. 创建一个Zap,然后选择Microsoft Outlook > New Email in Shared Mailbox。
  2. 连接具有邮箱读取权限的帐户,然后选择共享邮箱地址和要监视的文件夹。先监视收件箱即可。
  3. 使用您准备好的电子邮件测试触发器。Zapier Zapier报告“在Microsoft Outlook中找到 1 封新邮件”,并且附件列表将作为行项目供后续步骤使用。

捕获的Zap的轮询间隔显示为2 分钟,这是Zapier计划的计划,而不是您在步骤中配置的任何内容。

Tip.一旦这不再是测试性质的邮件,就应该使用专用文件夹,而不是整个收件箱。服务器端Outlook规则会将供应商邮件归档到指定文件夹。Invoices文件夹提供了一个清晰的触发范围,方便你在出现问题时进行查找。它还可以阻止Zap对新闻简报的销毁任务。


步骤 2:如何遍历一封电子邮件中的每个附件?​

目前流程: Outlook触发器。

这一步骤将一封电子邮件变成每张发票一次处理。

  1. Looping by Zapier > Create Loop From Line Items。
  2. 在Values to Loop中,映射触发器中的附件行项目。捕获的运行会将两个值循环在一起,这就是要复制的模式:
    • Attachments Name,即文件名
    • Attachments File,即文件本身。
  3. 测试该步骤。Zapier 报告Zapier Looping by Zapier发送 1 个新循环”,并且Data out ”选项卡显示第一次迭代以及所有迭代的预览。

Create Loop From Line Items​

Looping by Zapier step 2 Run details Data out tab showing Loop Iteration 1 with Attachments Name Samples 2.pdf and an Attachments File URL on zapier-dev-files.s3.amazonaws.com, a preview_loop_values block listing iteration 1 as Samples 2.pdf and iteration 2 as Samples 1.pdf, and the fields Loop Id, Loop Id And Iteration, Loop Iteration Is Last false, Loop Iteration Last 2 and Loop Total Iterations 2

Loop Total Iterations读取为 2,每个附件一次,而preview_loop_values在解析任何文件之前就命名了这两个文件。

循环带给你的是什么​

场地捕获运行中的值你用它做什么
Loop Iteration1你当前使用的是第几张通行证,从 1 开始计数
Attachments NameSamples 2.pdf本次迭代的文件名,可用于下游记录的命名。
Attachments Filezapier-dev-files.s3.amazonaws.com URL文件本身,以及你映射到解析器中的内容
Loop Total Iterations2邮件中包含多少个附件?
Loop Iteration Is Lastfalse仅当此条件成立时才触发摘要或通知
Loop Idd889b92b-c6a1-4abc-a6a1-a1d4c1c78e1d将同一封电子邮件的每次迭代都关联起来,这就是您按下游分组的内容。
preview_loop_values迭代 1 Samples 2.pdf,迭代 2 Samples 1.pdf整个列表,第一次浏览即可看到。

在继续之前,有两点需要注意。循环的运行顺序与Outlook中附件的显示顺序并不一致:邮件首先显示的是“示例 2”,循环也遵循了这一顺序,但你不应该依赖这一点。此外, Loop Id是唯一能将结果行与其来源邮件关联起来的依据,因此现在就应该在下游进行映射,以免日后后悔。

Tip.每次迭代都是一次独立的Zap运行,会消耗一个任务。一封包含十个附件的电子邮件需要执行十个任务,而不是一个,这正是每月账单上最常见的意外支出。Zapier documents the loop limits而且,在你把这封邮件投递到繁忙的邮箱之前,这些内容都值得一读。


步骤 3:如何将每个附件转换为结构化的 JSON?​

目前流程:触发器加循环。

从这里开始,每个附件都会运行一次,因为它位于循环内部。

  1. 添加PDF4me > AI - Document Parser并连接您的 API 密钥。
  2. 配置:
    • File:指的是循环中获取Attachments File令牌,而不是触发器中的令牌。这是人们容易犯的一个错误。
    • File Name和File Ext:根据循环的Attachments Name构建名称。
    • AI Analyzer Id:请从下拉菜单中选择您的Analyzer default_invoice_extraction会生成以下输出。
    • AI Analyzer Name (Deprecated):留空。
  3. 测试。Zapier 报告已向Pdf4me发送 1 个新的Process Document Zapier并且Data out包含已解析的字段。

AI - Document Parser输出,第一个附件​

PDF4me AI - Document Parser step 3 Run details Data out showing Trace Id 57525903-32b5-47ff-ad16-6c58179b5aa1, a Document Document Id of b9de2201-e98f-5659-b196-70d9bf18ff0e, and a Document Doc Text JSON holding invoiceNumber 13594027, vendorName Your Business Name, billTo John Smith, subTotal 37.5, two line items and a docConfidenceLevel block scoring every field

Doc Text包含发票内容。每个字段也会显示在docConfidenceLevel中,并附带一个分数。

AI - Document Parser输出,第二个附件​

The same PDF4me AI - Document Parser step on the second loop iteration, showing a different Trace Id 0b16be26-64be-4cee-a764-8a52f2a263df and Document Id 5450ac57-f16a-50ec-834f-10bf80c5b505, with the same invoice fields and slightly different confidence scores

不同的Trace Id和不同的文档 ID,就是通过它们在日志中区分这两个解析结果的方法。

此次捕获的两个附件都包含同一份示例发票,因此提取的数据一致。第二次运行的结果并非证明解析器能够处理两种不同的布局,而是证明第三步对同一封邮件执行了两次。

返回的结果​

输出字段它包含什么
Trace Id每次调用都不同。请在支持工单中引用此信息。
Document Document IdPDF4me解析文档的 ID,每次运行都不同。
Document Doc TextJSON 有效负载:提取的字段加上docConfidenceLevel
Document File Name, Document Name, DocMetadata命名和元数据,根据您映射的内容填充。

在Doc Text中, default_invoice_extraction Analyzer返回以下字段:标题字段( invoiceNumber、 invoiceDate、 invoiceDateString、 orderId、 customerPO、 paymentDeadline)、供应商块( vendorName、 vendorAddress、 vendorPhone、 vendorEmail以及税务标识符,包括vendorGSTIN、 vendorPAN、 vendorCIN、 vendorVatUidNr、 iban)、客户块( billTo、 billToAddress、 billToPhone、 billToEmail、 billToState、 billToPincode)、总计( subTotal、 cgst、 sgst、 cgstRate、 sgstRate、 totalTaxAmount、 total)以及lineItems数组。对于invoiceNumber为13594027、 billTo抬头为John Smith、 total 37.5示例发票,有两行项目,第二行是-12.5折扣行。

解读置信度得分​

docConfidenceLevel形状与此类似,只是每个值都用数字代替。这些数字代表两次运行的得分,而差值就是点数。

场地运行 1第二轮它告诉你什么
vendorEmail98.998.9机器可读文本,请相信它
vendorName98.598.5标题清晰,相信它
billTo97.397.3干净,相信它
subTotal9594.7很好,值得对total进行容差检查。
total92.892.8很好,但这个字段值得自动检查。
billToAddress79.581.9多行文本并已打包,请检查是否重要
billToPincode60.860.8该样本同时运行城市、州和邮政编码。
billToState59.859.8位于文档最底部,未经审核请勿发布。

同一份文件在两次测试中得分略有不同,这对于模型来说是正常的,也正是为什么你需要设定阈值而不是仅仅依赖单一数值的原因。选定一个楼层,将该楼层以下的物品转交给指定人员,其余物品则放行。


运行Zap并验证​

  1. Publish Zap。
  2. 向共享邮箱发送一封测试邮件,并附上两个 PDF 文件。
  3. 等待投票结果,然后打开Zap history。
  4. 你应该看到Zap运行两次,而不是一次,每次都标记为成功,并且每次都消耗 1 个任务。
  5. 打开每个运行并检查步骤 3 的Data out: Trace Id和Document Document Id应该彼此不同,并且Doc Text应该包含该附件的发票。
  6. 在步骤 2 中检查Loop Total Iterations如果附加两个文件后显示为 1,则问题出在Values to Loop映射上,而不是解析器上。

在捕获的运行中,两次Zap runs分别于 2026 年 10 月 15 日晚上 7:02:53 和 7:03:37 完成,均成功,每次运行执行 1 个任务,均来自一封包含 395 KB 附件的电子邮件。

What did you actually build?发票接收流程从发票实际到达的地方开始。无需下载附件,无需重新输入总额,一封包含五张发票的电子邮件会生成五条结构化记录,而不是一条。置信度评分可以帮助您合理划分自动处理和审核处理之间的界限。


无需重建即可添加的常见变体​

每张发票都写在一张纸上。
在解析器之后、仍在循环内添加一个Google Sheets或Airtable步骤。将Loop Id映射到单独的列中,以便将同一封电子邮件中的每一行数据重新分组在一起。
将置信度低的发票转交给人工处理。
在Filter by Zapier为docConfidenceLevel级别字段添加筛选器。高于您设置的阈值,文档将自动发布;低于阈值,则会进入审核队列或Slack频道,并附上Trace Id。
跳过所有非发票内容。
供应商也会附上签名和徽标。在循环内添加一个以.pdf结尾的Attachments Name过滤器,可以防止解析器对图像进行解析,从而避免浪费资源。
解析发票以外的内容
该行动由模式驱动。要点AI Analyzer Id在ClassifyAnalyzer和Zap处理发票、采购订单和送货单,返回匹配的类型及其字段。

与其他发票OCR方法相比,这种方法有何异同?​

每一行都描述了一种替代方案。最后一行是这个Zap。

比较谁在运营它发票来源你所维护的
AP自动化平台对比Zap金融,在专门的产品中该产品的转发地址单份合同及其审批规则
通过代码调用 OCR API 与此Zap开发人员在应用程序中无论你的代码获取什么代码、邮箱轮询和重试
ERP采集模块与此ZapERP系统中的财务部分扫描仪或文件夹许可证,以及与该ERP系统关联的工作流程。
这个Zap任何能够编辑Zap人您目前使用的共享邮箱三个步骤和一个Analyzer方案

常见问题​

什么是发票OCR?​

发票OCR是指使用软件而非人工读取发票,从而将供应商、日期、明细项目和总计等信息以数据形式提取出来,供您的系统使用。传统的OCR只能识别页面上的字符,需要您自行计算哪个数字是总计;而取代它的AI解析器则可以直接返回已命名的字段。

在选择工具时,这种区别至关重要。一个性能优异的库。optical character recognition它会返回文本。文档解析器会返回total、 invoiceNumber和billTo,而Zap可以将这些信息映射到电子表格中。

Zapier的循环功能是如何工作的?​

Looping by Zapier是一个内置应用,它会重复执行其下方的步骤,每个步骤执行一次。 Create Loop From Line Items会从之前的步骤(例如电子邮件的附件列表)中获取一组行项目,并针对每个项目启动一次迭代。

每次迭代都是一次独立的Zap运行,在Zap history中都有自己的条目,并且各自消耗不同的任务。在每次迭代中,您可以获取Loop Iteration、 Loop Total Iterations、 Loop Iteration Is Last以及一个Loop Id,该 ID 由同一源记录的所有迭代共享。

什么是OCR发票处理?​

OCR发票处理是一个完整的流程,而不仅仅是读取步骤:发票到达后,系统会提取其字段,检查数值,并将结果记入账簿或审核队列。提取通常是最简单的部分。

实际应用中能否成功取决于数据接收和异常处理两个部分。本Zap涵盖了使用共享邮箱和循环进行数据接收,并提供了使用docConfidenceLevel进行异常处理的原始数据。

如何实现应付账款自动化?​

从收款环节开始,因为手动操作会抵消后续所有步骤。给供应商提供一个统一的地址,并以此为触发条件,确保一封包含多张发票的电子邮件生成多条记录,而不是只有一条。

然后决定哪些条目会自动发布。提取字段的置信度阈值会将发票分为两类:一类是账簿可以自动处理的,另一类是需要人工审核的。正是这种划分,使得自动化流程可以安全地运行。


故障排除​

只有第一个附件会被解析。

查看Loop Total Iterations在步骤 2 中,如果读数为 1,Values to Loop映射到单个字段而不是附件行项目,因此循环没有可迭代的内容。如果读取到 2 但只进行了一次解析,则步骤 3 的File映射到触发器而不是循环的Attachments File。

任务数量超出预期

这是按预期运行的循环。一封包含十个附件的电子邮件会触发十次运行和十个任务。在循环内部添加一个过滤器,这样签名、徽标以及任何非 PDF 格式的内容都不会被解析器处理。

Doc Text为空或缺少字段

Analyzer决定哪些字段存在。空键表示模式要求的内容此文档中不存在,这是正常的。完全为空Doc Text通常意味着错误AI Analyzer Id或者,某个文件在执行操作时没有扩展名,因此请检查。File Name和File Ext。

数值看起来正确,但下游发布错误。

看看docConfidenceLevel在指责地图绘制之前。在此次捕获中,总得分超过 92 分,而billToState得分59.8,所以即使某个领域存在、看似合理,也可能是错误的。保留Trace Id在每条记录上,您可以将错误的行追溯到它的运行。


后续步骤​

发票自动化的难点从来不在于读取发票本身,而在于装发票的信封,以及用来打开信封的循环装置。