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

PDF4me AI Document Parser是一个Zapier操作,它利用人工智能读取文档并以 JSON 格式返回其字段。配合Looping by Zapier,它可以处理应付账款中的常见情况:一封电子邮件包含多张发票,每个附件单独运行一次进行解析。
所有发票OCR工具都演示了相同的过程:输入一份文档,输出干净的字段。但发票的实际到达方式并非如此。它们通常以电子邮件的形式发送到共享邮箱,供应商会附上三个PDF文件,并在邮件正文中写上“ PFA ”。真正的问题不在于读取一张发票,而在于如何将单个触发器转换为多个解析步骤。大多数演练都悄悄地跳过了这一步骤,直接监控一个已被拆分文件的文件夹。但这个Zap不会跳过这一步骤。它包含三个步骤,中间的步骤是循环。
供应商通过电子邮件向您的共享邮箱发送了两份发票附件。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 格式发票,并为每个字段分配置信度评分,可直接映射到任何下游应用程序。

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

一封邮件输入,两次运行结束。每次循环迭代都会在历史记录中算作一次单独的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_extractionAnalyzer会生成此处显示的输出,因此您可以从这里开始,稍后构建自己的分析器。 - A Microsoft Outlook shared mailbox您需要一个用于接收供应商发票的账户,以及一个拥有读取权限的账户。如果您还没有这样的账户,Microsoft documents how to create one。
- A test email you control至少附上两个 PDF 文件,这样你就可以证明循环运行不止一次,然后再将Zap指向供应商的实际邮件。
Zap概览
- New Email in Shared Mailbox ( Microsoft Outlook)每 2 分钟轮询一次邮箱。
- Create Loop From Line Items ( Looping by Zapier)将附件列表转换为每个文件一次迭代。
- AI - Document Parser (PDF4me) 对当前迭代中的附件运行Analyzer。
Zap完整概览

三个步骤。中间的循环使得第三步每次附件执行一次。
步骤 1:如何从共享邮箱触发Zap?
目前流程:尚未启动,这是触发点。
收到发票是事件,所以邮箱是触发器。
- 创建一个Zap,然后选择Microsoft Outlook > New Email in Shared Mailbox。
- 连接具有邮箱读取权限的帐户,然后选择共享邮箱地址和要监视的文件夹。先监视收件箱即可。
- 使用您准备好的电子邮件测试触发器。Zapier Zapier报告“在Microsoft Outlook中找到 1 封新邮件”,并且附件列表将作为行项目供后续步骤使用。
捕获的Zap的轮询间隔显示为2 分钟,这是Zapier计划的计划,而不是您在步骤中配置的任何内容。
Tip.一旦这不再是测试性质的邮件,就应该使用专用文件夹,而不是整个收件箱。服务器端Outlook规则会将供应商邮件归档到指定文件夹。Invoices文件夹提供了一个清晰的触发范围,方便你在出现问题时进行查找。它还可以阻止Zap对新闻简报的销毁任务。
步骤 2:如何遍历一封电子邮件中的每个附件?
目前流程: Outlook触发器。
这一步骤将一封电子邮件变成每张发票一次处理。
- Looping by Zapier > Create Loop From Line Items。
- 在Values to Loop中,映射触发器中的附件行项目。捕获的运行会将两个值循环在一起,这就是要复制的模式:
- Attachments Name,即文件名
- Attachments File,即文件本身。
- 测试该步骤。Zapier 报告Zapier Looping by Zapier发送 1 个新循环”,并且Data out ”选项卡显示第一次迭代以及所有迭代的预览。
Create Loop From Line Items

Loop Total Iterations读取为 2,每个附件一次,而preview_loop_values在解析任何文件之前就命名了这两个文件。
循环带给你的是什么
| 场地 | 捕获运行中的值 | 你用它做什么 |
|---|---|---|
Loop Iteration | 1 | 你当前使用的是第几张通行证,从 1 开始计数 |
Attachments Name | Samples 2.pdf | 本次迭代的文件名,可用于下游记录的命名。 |
Attachments File | zapier-dev-files.s3.amazonaws.com URL | 文件本身,以及你映射到解析器中的内容 |
Loop Total Iterations | 2 | 邮件中包含多少个附件? |
Loop Iteration Is Last | false | 仅当此条件成立时才触发摘要或通知 |
Loop Id | d889b92b-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?
目前流程:触发器加循环。
从这里开始,每个附件都会运行一次,因为它位于循环内部。
- 添加PDF4me > AI - Document Parser并连接您的 API 密钥。
- 配置:
- File:指的是循环中获取Attachments File令牌,而不是触发器中的令牌。这是人们容易犯的一个错误。
- File Name和File Ext:根据循环的Attachments Name构建名称。
- AI Analyzer Id:请从下拉菜单中选择您的Analyzer
default_invoice_extraction会生成以下输出。 - AI Analyzer Name (Deprecated):留空。
- 测试。Zapier 报告已向Pdf4me发送 1 个新的Process Document Zapier并且Data out包含已解析的字段。
AI - Document Parser输出,第一个附件

Doc Text包含发票内容。每个字段也会显示在docConfidenceLevel中,并附带一个分数。
AI - Document Parser输出,第二个附件

不同的Trace Id和不同的文档 ID,就是通过它们在日志中区分这两个解析结果的方法。
此次捕获的两个附件都包含同一份示例发票,因此提取的数据一致。第二次运行的结果并非证明解析器能够处理两种不同的布局,而是证明第三步对同一封邮件执行了两次。
返回的结果
| 输出字段 | 它包含什么 |
|---|---|
Trace Id | 每次调用都不同。请在支持工单中引用此信息。 |
Document Document Id | PDF4me解析文档的 ID,每次运行都不同。 |
Document Doc Text | JSON 有效负载:提取的字段加上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 | 第二轮 | 它告诉你什么 |
|---|---|---|---|
vendorEmail | 98.9 | 98.9 | 机器可读文本,请相信它 |
vendorName | 98.5 | 98.5 | 标题清晰,相信它 |
billTo | 97.3 | 97.3 | 干净,相信它 |
subTotal | 95 | 94.7 | 很好,值得对total进行容差检查。 |
total | 92.8 | 92.8 | 很好,但这个字段值得自动检查。 |
billToAddress | 79.5 | 81.9 | 多行文本并已打包,请检查是否重要 |
billToPincode | 60.8 | 60.8 | 该样本同时运行城市、州和邮政编码。 |
billToState | 59.8 | 59.8 | 位于文档最底部,未经审核请勿发布。 |
同一份文件在两次测试中得分略有不同,这对于模型来说是正常的,也正是为什么你需要设定阈值而不是仅仅依赖单一数值的原因。选定一个楼层,将该楼层以下的物品转交给指定人员,其余物品则放行。
运行Zap并验证
- Publish Zap。
- 向共享邮箱发送一封测试邮件,并附上两个 PDF 文件。
- 等待投票结果,然后打开Zap history。
- 你应该看到Zap运行两次,而不是一次,每次都标记为成功,并且每次都消耗 1 个任务。
- 打开每个运行并检查步骤 3 的Data out:
Trace Id和Document Document Id应该彼此不同,并且Doc Text应该包含该附件的发票。 - 在步骤 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?发票接收流程从发票实际到达的地方开始。无需下载附件,无需重新输入总额,一封包含五张发票的电子邮件会生成五条结构化记录,而不是一条。置信度评分可以帮助您合理划分自动处理和审核处理之间的界限。
无需重建即可添加的常见变体
Loop Id映射到单独的列中,以便将同一封电子邮件中的每一行数据重新分组在一起。docConfidenceLevel级别字段添加筛选器。高于您设置的阈值,文档将自动发布;低于阈值,则会进入审核队列或Slack频道,并附上Trace Id。.pdf结尾的Attachments Name过滤器,可以防止解析器对图像进行解析,从而避免浪费资源。与其他发票OCR方法相比,这种方法有何异同?
每一行都描述了一种替代方案。最后一行是这个Zap。
| 比较 | 谁在运营它 | 发票来源 | 你所维护的 |
|---|---|---|---|
| AP自动化平台对比Zap | 金融,在专门的产品中 | 该产品的转发地址 | 单份合同及其审批规则 |
| 通过代码调用 OCR API 与此Zap | 开发人员在应用程序中 | 无论你的代码获取什么 | 代码、邮箱轮询和重试 |
| ERP采集模块与此Zap | ERP系统中的财务部分 | 扫描仪或文件夹 | 许可证,以及与该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 格式的内容都不会被解析器处理。
Analyzer决定哪些字段存在。空键表示模式要求的内容此文档中不存在,这是正常的。完全为空Doc Text通常意味着错误AI Analyzer Id或者,某个文件在执行操作时没有扩展名,因此请检查。File Name和File Ext。
看看docConfidenceLevel在指责地图绘制之前。在此次捕获中,总得分超过 92 分,而billToState得分59.8,所以即使某个领域存在、看似合理,也可能是错误的。保留Trace Id在每条记录上,您可以将错误的行追溯到它的运行。
后续步骤
发票自动化的难点从来不在于读取发票本身,而在于装发票的信封,以及用来打开信封的循环装置。