Coze+飞书表格:5分钟搞定电子发票自动归档(附完整代码包)

📅 发布时间:2026/7/6 11:10:30 👁️ 浏览次数:
Coze+飞书表格:5分钟搞定电子发票自动归档(附完整代码包)
告别发票整理噩梦用Coze与飞书表格打造你的全自动财务归档系统每个月总有那么几天财务人员或者需要报销的同事会陷入一种“发票焦虑”中。邮箱里塞满了PDF手机相册里躺着各种拍照的发票微信聊天记录里还散落着几张。手动录入、核对、归档不仅耗时费力还极易出错一个数字看错整个账目就可能对不上。这种重复、低效且容错率极低的工作正在大量吞噬着现代职场人的宝贵时间与精力。今天我想分享一套我自己在团队中实践了近半年的自动化方案。它不要求你懂复杂的编程也不需要购买昂贵的财务软件。核心工具就是两个你可能已经在用的产品字节跳动的Coze国内用户常称其为“扣子”和飞书多维表格。通过将它们巧妙地连接起来你可以构建一个“电子发票处理中心”实现从发票文件上传到关键信息提取再到结构化归档的全流程自动化。整个过程你只需要点击几下剩下的交给“机器人”来完成。这篇文章我将为你彻底拆解这个系统的搭建思路、每一个关键步骤的实操细节以及我踩过的一些坑和优化技巧。无论你是中小企业的财务负责人还是经常需要处理报销的个人这套方案都能让你从繁琐的票据整理中解放出来。1. 系统蓝图理解自动化归档的核心逻辑在动手搭建之前我们得先想清楚这个系统要做什么以及它如何运转。传统的发票处理流程是线性的、手动的接收文件 - 人工查看 - 敲键盘录入表格 - 反复核对。我们的目标是将这个流程改造为一个自动化的闭环。这个自动化系统的核心逻辑可以概括为三个关键动作感知、理解、执行。感知输入系统需要能“拿到”发票文件。这些文件可能来自邮件附件、微信传输、或本地文件夹。在我们的方案中我们简化这一步为手动或通过Coze Bot上传文件但这为后续对接更自动化的文件收集方式如邮箱机器人留下了接口。理解处理这是最核心的一步即从发票文件中准确提取出结构化信息。一张增值税普通发票上我们需要的关键信息通常包括发票代码、发票号码、开票日期、销售方名称、购买方名称、金额含税/不含税、税额、价税合计等。让机器理解这些信息需要借助大语言模型LLM的视觉与文本理解能力。Coze平台集成了这类模型使其成为可能。执行输出将理解后得到的结构化数据写入到一个固定的、可查询的数据库中。我们选择飞书多维表格因为它界面友好、协作方便并且提供了完善的API供程序调用完美充当这个数据库的角色。整个工作流在Coze中将以“工作流”的形式呈现。你可以把它想象成一个可视化的编程流程图每个节点完成一个特定任务节点之间通过数据流连接。下面这个表格概括了我们将要创建的核心节点及其职责节点序号节点类型核心功能输入输出开始输入接收用户提供的飞书表格链接和发票文件列表。飞书表格URL、发票文件数组原始参数节点1插件链接读取读取发票文件PDF/图片中的原始文本和图像信息。发票文件文件内容文本节点2大语言模型分析文件内容识别并提取关键发票字段并按指定JSON格式输出。文件内容文本结构化的发票数据JSON节点3业务逻辑循环遍历大模型输出的多张发票数据列表。发票数据列表单张发票数据节点4业务逻辑代码将单张发票的JSON数据转换为飞书表格API所需的写入格式。单张发票数据飞书API可识别的记录集节点5插件飞书多维表格调用飞书API将数据记录写入指定的多维表格。飞书表格Token、记录集写入结果结束输出返回处理完成的飞书表格链接供用户查看。写入结果飞书表格URL理解了这张蓝图你就掌握了整个系统的骨架。接下来我们进入实战环节从零开始一步步赋予这个骨架血肉。2. 环境准备创建你的Coze机器人与飞书表格万事开头难但这一步其实非常简单。你需要准备好两个“场地”一个是处理自动化逻辑的Coze机器人另一个是存放最终结果的飞书多维表格。2.1 在飞书中搭建你的“发票数据库”首先打开你的飞书创建一个新的多维表格。你可以把它命名为“公司发票归档库”或“个人报销台账”。在这个表格里你需要预先设计好表头也就是每一列代表什么信息。这直接对应着后续我们从发票中提取的字段。我建议至少包含以下列你可以根据实际需求增减发票代码(文本)发票号码(文本) -与发票代码共同构成发票唯一标识开票日期(日期)销售方名称(文本)购买方名称(文本) -通常就是你自己的公司或姓名价税合计总金额(数字)税额(数字)不含税金额(数字)发票类型(单选如增值税专用发票、普通发票等)归档时间(创建时间 - 通常可自动生成)原始文件(附件 - 用于存放上传的发票PDF或图片便于溯源)提示在“购买方名称”这一列你可以提前填好常用信息或者留空在后续流程中由大模型填充。设置好列类型文本、数字、日期等非常重要能避免后续数据格式错误。创建好表格后获取它的API访问权限是关键。你需要进入飞书开放平台open.feishu.cn创建一个应用并为该应用添加“多维表格”权限。随后在这个表格的页面点击右上角的“···” - “权限管理” - “开放平台接入”将你创建的应用添加进来。这个过程会获得一个app_token和table_id请妥善保存它们相当于你表格的“地址”和“钥匙”。不过别担心在Coze的飞书插件中我们有一种更简单的方式。2.2 在Coze中配置你的“财务助理”机器人登录Coze平台点击“创建Bot”。给你的机器人起个直观的名字比如“发票小秘书”。在描述里可以简单写上“自动提取发票信息并归档到飞书表格”。创建完成后我们进入核心的“工作流”编辑界面。在这里我们将用拖拽的方式构建上一章提到的那个自动化流程图。首先我们需要让机器人能操作飞书表格。在Coze的插件商店中搜索并添加“飞书多维表格”官方插件。添加时Coze会引导你进行飞书账号授权。完成授权后这个插件就具备了访问和操作你飞书表格的能力无需再手动处理复杂的app_token这是Coze平台带来的巨大便利。准备工作至此完成。我们有了数据仓库飞书表格也有了处理中心Coze机器人并且给处理中心配好了操作仓库的“手”飞书插件。接下来就是构建处理中心内部的生产线了。3. 核心构建从零搭建Coze自动化工作流现在我们进入Coze工作流编辑器开始搭建整个自动化的流水线。请跟随我的步骤并注意每个节点的配置细节。3.1 设置输入与文件读取节点工作流的起点是“开始”节点。我们需要在这里定义两个输入参数feishu_table_url类型为“文本”这是你的飞书多维表格的完整浏览器地址。用户每次运行时需要粘贴进来。files类型为“文件多个”允许用户一次性上传多张发票的图片或PDF文件。紧接着拖入一个“链接读取”插件节点。这个节点的作用是将用户上传的二进制文件图片/PDF转换成机器可以分析的文本内容。将“开始”节点的files变量拖拽连接到本节点的url输入框。由于files是数组这里Coze会自动进行批处理。在节点配置中确保“单次/批处理”模式选择为“批处理”。这样无论用户上传多少文件它都会一次性全部读取。3.2 赋予机器“理解力”大语言模型提示词工程这是整个系统的大脑也是最体现技巧的部分。我们需要一个大语言模型节点来解析“链接读取”节点输出的文本。拖入一个“大语言模型”节点Coze支持多种模型如DeepSeek、GPT等选择你熟悉或平台推荐的最新版本即可。将上一个节点的输出outputList连接到本节点的item1。关键在于“系统提示词”和“用户提示词”的编写。这相当于给模型下达清晰、准确的指令。我们的目标是让模型从一段可能杂乱无章的OCR文本中精准地找到我们需要的信息。下面是我经过多次调试后效果比较稳定的一套提示词模板系统提示词你是一位专业的财务数据处理专家。你的任务是从用户提供的发票文本信息中准确提取出关键字段并以严格、规范的JSON格式输出。无论原始文本多么混乱你都必须专注于识别以下字段 - invoice_code (发票代码) - invoice_number (发票号码) - invoice_date (开票日期格式必须为YYYY-MM-DD) - seller_name (销售方名称) - buyer_name (购买方名称) - total_amount (价税合计即总金额浮点数) - tax_amount (税额浮点数) - amount_without_tax (不含税金额浮点数) - invoice_type (发票类型如增值税专用发票、增值税普通发票等) 如果某个字段在文本中确实不存在则在JSON中将其值设为null。不允许捏造信息。你的输出必须是且仅是一个合法的JSON对象。用户提示词请分析以下发票文本内容并提取上述要求的字段信息。 发票文本内容 {{item1}}注意{{item1}}是Coze的变量插值语法它会自动将“链接读取”节点传来的文件内容文本填充到这里。提示词的质量直接决定数据提取的准确率。如果发现某些字段识别不准可以尝试在提示词中加入更具体的描述或例子。配置好提示词后运行测试一下。上传一张发票图片查看这个节点的输出。理想情况下你应该看到一个干净、结构化的JSON对象包含了所有提取出的字段。3.3 数据处理与飞书API对接大模型节点输出的是一个包含多张发票数据的列表数组。我们需要遍历这个列表并逐一处理。循环节点拖入一个“循环”节点。将大模型节点的outputList连接到循环的list输入。设置“并行运行数量”为1保证顺序处理“批处理次数上限”可以设一个较大的值如100。这个节点会把发票数据一条条地送出来。代码节点格式转换器这是连接Coze内部数据与飞书外部API的桥梁。拖入一个“代码”节点选择Python语言。循环节点每次输出的单条数据output会作为这里的输入。我们需要写一段简单的Python脚本将我们自定义的JSON格式转换成飞书多维表格插件所需的格式。飞书插件通常要求数据是特定结构的列表。# 输入input 变量即单张发票的JSON数据 import json # 假设大模型输出的数据在 input 变量中是一个字典 invoice_data input # 构建飞书表格单条记录的字段映射 # 这里的键如“发票代码”必须与你飞书表格中的列名完全一致 record { 发票代码: invoice_data.get(invoice_code), 发票号码: invoice_data.get(invoice_number), 开票日期: invoice_data.get(invoice_date), 销售方名称: invoice_data.get(seller_name), 购买方名称: invoice_data.get(buyer_name), 价税合计总金额: invoice_data.get(total_amount), 税额: invoice_data.get(tax_amount), 不含税金额: invoice_data.get(amount_without_tax), 发票类型: invoice_data.get(invoice_type) } # 飞书插件“新增记录”动作需要的输入是一个记录列表 records [record] # 输出一个名为‘records’的变量供下一个节点使用 output { records: records }这段代码的核心是字段映射。确保record字典里的键名与你之前在飞书表格里创建的列名一字不差。飞书插件节点最终写入拖入“飞书多维表格”插件节点。选择“新增记录”动作。app_token这里不需要再输入复杂的token因为插件已授权。你可以直接从变量列表中选择一个代表表格的变量或者更简单的方法——这个参数可以直接留空插件会智能地从你提供的表格URL中解析出所需信息这是Coze插件的便捷之处。稳妥起见你可以将“开始”节点的feishu_table_url连接过来。records连接代码节点输出的records变量。最后将“飞书多维表格”节点的输出连接到“结束”节点。你可以在结束节点返回一个成功消息和表格链接。至此一个完整的自动化工作流就搭建完成了。点击发布你的“发票小秘书”机器人就正式上岗了。4. 进阶优化与实战避坑指南基础流程跑通后我们可以让它变得更强大、更稳定。以下是我在实际使用中总结的几个优化方向和常见问题的解决方法。4.1 提升识别准确率提示词与后处理技巧大模型并非100%准确尤其是面对模糊的图片或排版特殊的发票。除了优化提示词还可以加入“后处理”逻辑。在代码节点增加校验与清洗在格式转换的Python代码中可以加入简单的数据清洗逻辑。例如检查日期格式是否正确金额是否为数字如果购买方名称为空则填充一个默认值等。# 示例简单的日期格式检查和金额类型转换 from datetime import datetime raw_date invoice_data.get(invoice_date) formatted_date None if raw_date: try: # 尝试解析常见日期格式 for fmt in (%Y年%m月%d日, %Y-%m-%d, %Y/%m/%d): try: formatted_date datetime.strptime(raw_date, fmt).strftime(%Y-%m-%d) break except ValueError: continue except: formatted_date raw_date # 如果解析失败保留原值 # 确保金额是数字类型 total invoice_data.get(total_amount) if total is not None: try: total float(total) except (ValueError, TypeError): total None record[开票日期] formatted_date record[价税合计总金额] total设计人工复核环节对于非常重要的财务数据完全信任AI可能存在风险。可以在工作流中增加一个分支当大模型输出的置信度较低比如某些关键字段为null时不直接写入飞书而是将这条数据通过“飞书群消息”插件发送到指定群聊或给自己发消息提醒人工介入核对。这实现了“人机协同”。4.2 扩展应用场景从被动处理到主动收集我们目前的工作流是“被动”的需要人工上传文件。如何让它“主动”起来对接邮箱Coze平台支持邮箱插件。你可以创建一个规则让机器人定期检查指定邮箱如专门接收发票的公共邮箱receiptsyourcompany.com自动抓取附件中的发票文件然后触发我们刚刚建好的工作流。这样就实现了从“接收邮件”到“归档完成”的全自动。构建聊天机器人界面将你的Coze Bot发布到飞书群组中。团队成员只需要在群里机器人并发送发票图片机器人就能自动处理并归档。这极大地简化了操作流程体验非常流畅。定时批量处理利用Coze的“定时任务”功能你可以设置机器人每天凌晨自动运行一次处理某个共享网盘文件夹里新增的所有发票文件实现无人值守的批量归档。4.3 我踩过的那些“坑”列名不匹配这是最常见的问题。飞书表格里的列名是“开票日期”而代码里写的却是“开票时间”数据就无法写入。务必保持完全一致包括中英文符号。文件格式兼容性虽然Coze的“链接读取”插件支持PDF和常见图片格式但对于某些加密的PDF或扫描质量极差的图片OCR效果会大打折扣。建议在引导用户上传时给出文件建议如清晰的截图、非加密PDF。网络超时与重试在处理大量文件或网络不稳定时调用飞书API可能会失败。Coze工作流节点本身具备重试机制但对于关键任务可以在“飞书多维表格”节点后接一个“条件判断”节点检查写入是否成功如果失败则记录日志或通知管理员。模型上下文长度如果你一次性上传几十张发票大模型节点的输入文本可能会非常长超出模型的上下文限制。稳妥的做法是在“循环”节点之前确保“链接读取”和“大模型”节点都工作在“批处理”模式但每次处理一个文件这样更稳定。这套系统运行几个月下来团队里负责报销的同事反馈最好。以前每月底要花一两天整理发票现在零星收到就随手丢给机器人月底一键导出表格轻松无比。技术带来的价值莫过于此——将人从重复劳动中解放出来去处理更需创造力和判断力的事情。如果你在搭建过程中遇到任何具体问题不妨从检查节点连线和数据格式开始那往往是突破口。