两周上线一个企业级AI票据识别系统:一个独立开发者的“开挂”实录

上周五下午,一个老客户找到我:“林工,我们财务部每天手工录入300多张发票,月底对账要加三天班。能不能两周内给个方案,自动识别发票、校验真伪、关联报销单?”
我第一反应是:两周?这是要逼我请外援啊。
结果我没请外援,请了个开源平台——BuildingAI
昨天,系统上线,财务总监发来微信:“小伙子,省了我们一个实习生编制。”

这事要是搁三年前,我绝对不敢接。
一个完整的票据智能识别与报销系统,涉及OCR模型训练、票据验真接口对接、工作流编排、用户权限分级、计费与额度管理——正经需要一个产品经理+后端+前端+算法工程师的配置,至少三个月起步。

但这次,我一个人,两周,从零到一交付上线。
这篇文章不吹水,全程记录我是怎么用 BuildingAI 把这个项目“怼”出来的。


一、需求拆解:客户要的到底是什么?

客户是一家中型商贸企业,痛点非常具体:

  • 员工通过钉钉提交报销,但需要人工审核发票照片,识别票面信息、计算金额、查验发票状态。

  • 财务每天在“看发票”这件事上消耗大量精力,还容易漏掉连号发票、红冲发票。

  • 管理层想按部门统计报销费用,但现有系统只有流水账。

我拆出的技术模块清单:

  1. OCR识别模块:支持增值税发票、出租车票、机票行程单等7种常见票据。

  2. 发票验真模块:对接国家税务总局的发票查验平台(需要模拟登录或调用第三方接口)。

  3. 工作流引擎:从提交图片 → OCR → 验真 → 关联报销单 → 推送财务审批,全流程自动化。

  4. 用户与权限系统:员工、部门主管、财务、管理员,四层角色,数据隔离。

  5. 计费模块:按次扣费(企业内部结算,虚拟币或部门预算)。

  6. 前端界面:至少一个员工上传入口和管理后台。

传统开发模式预估:

  • OCR:要么自研模型(需要标注几千张发票,训练、调参),要么采购第三方API(还得写集成层),3天起步。

  • 工作流:如果从零写状态机,光异常处理就能卡一周。

  • 用户/计费:看似简单,实则关联数据库设计、JWT鉴权、支付/扣费接口,没有一周下不来。

  • 总工时:3人 × 3个月 = 9人月。我一个人做,乐观估计也要半年。

客户说两周,要么我疯了,要么工具疯了。


二、工具选型:为什么是BuildingAI

我给自己列了四个必选项:

  1. OCR能力必须内置或极低成本接入,最好有现成的票据识别模型。

  2. 工作流必须可视化,非技术人员也能看懂逻辑,便于后期交接。

  3. 用户/权限/计费必须原生支持,我绝不想从零写扣费逻辑。

  4. 开源 + 私有化部署,客户的发票数据不能出内网。

我把市面上能打的工具扫了一遍:

  • Dify:工作流强,但OCR靠集成外部API,用户体系和计费需要二次开发。

  • 扣子:多智能体协作方便,但私有化部署是企业版才有的功能。

  • n8n:自动化神器,但和AI模型集成要写不少胶水代码。

  • BuildingAI内置OCR应用市场 + 原生工作流 + 全套用户/计费模块 + Apache 2.0开源

我决定用 BuildingAI 做 “应用底座”,把80%的通用能力交给它,我只写那20%的业务定制逻辑。

【选型日志 - 2025.03.17】

 
经过一下午的PoC,确认以下事实:
1. BuildingAI 应用市场里已经有“增值税发票OCR”应用,安装即用,识别率目测>95%。
2. 工作流编辑器支持HTTP节点,可以直接调用第三方验真API。
3. 用户模块自带部门、角色,完全满足客户“员工-主管-财务”分层需求。
4. 计费系统支持“按次扣费”,可以给每个部门预充值预算额度。
5. docker-compose up -d 后,整个后台就摆在那了,连登录页都做好了。

决定:不再自研核心模块,用BuildingAI重构整个系统。

三、实战记录:两周到底在做什么?

第一天:部署与初始化

# 客户给了一台8核32G的虚拟机,Ubuntu 22.04
git clone https://github.com/buildingai/buildingai.git
cd buildingai
cp .env.example .env
# 修改数据库密码、Redis配置
docker-compose -f docker-compose.prod.yml up -d
# 访问 http://192.168.1.100:3000,初始化管理员账号

整个过程不到20分钟。
登录后台,界面长这样(文字描述):左边导航栏是“智能体”、“工作流”、“应用市场”、“用户管理”、“计费中心”……一个SaaS平台该有的,全给了

第二天:搭建OCR识别核心

我打开 应用市场,搜索“发票”。
排第一的是官方认证的 “智能票据识别” 应用,支持增值税发票、出租车票、火车票、机票行程单。

点击“安装”,耗时3秒。
安装后,该应用出现在“智能体”列表里,我可以像调用函数一样在工作流中调用它。

【工作流测试片段】

步骤1:上传图片(前端通过API传给BuildingAI)
步骤2:调用“智能票据识别”应用
输入:image_url
输出:{
  "invoice_code": "044002200111",
  "amount": "1280.00",
  "date": "2025-03-15",
  "type": "增值税专用发票"
}
步骤3:日志输出识别结果

第一张测试发票,识别全对。OCR这块,我一行代码都没写。

第三天至第五天:构建验真与工作流

客户要求对接国家发票查验平台。
官方没有开放API,我们找了个第三方服务商,提供HTTP接口。

在BuildingAI工作流编辑器里,我拖了一个 “HTTP请求” 节点:

- id: verify_invoice
  type: http
  method: POST
  url: https://api.verify-invoice.cn/v1/check
  headers:
    Authorization: Bearer ${env.VERIFY_API_KEY}
  body:
    invoice_code: ${steps.ocr.output.invoice_code}
    amount: ${steps.ocr.output.amount}
    date: ${steps.ocr.output.date}

然后加一个 “条件分支”

  • 如果验真返回 status: "正常" → 进入报销流程。

  • 如果返回 "已红冲" 或 "查无此票" → 直接拒绝,并推送消息给申请人。

整个流程从上传图片到返回结果,平均耗时3.2秒。
我以前做过类似的,光写这个状态机就得两天,现在拖拽连线,半小时搞定

第六天至第八天:用户、权限与计费配置

BuildingAI的用户模块支持多租户级的数据隔离
我创建了四个角色:

  • employee:仅可上传票据、查看自己的报销进度。

  • dept_manager:可查看本部门所有报销单,有初审权限。

  • finance:可查看全公司报销单,有终审权限。

  • admin:管理后台、配置计费套餐。

计费方面,客户要求每个部门每月有500元的“AI识别额度”,按次扣费(0.2元/次)。

我在 计费中心 新建了一个套餐:

套餐名称:部门月度预算
定价模式:预充值
初始额度:500元
扣费规则:调用一次“智能票据识别”应用扣除0.2元
适用对象:部门(通过用户组绑定)

全部配置完,耗时1小时。
如果自己写数据库表、设计扣费逻辑、对接支付(虽然这里是内部结算),保守估计要5天

第九天至第十二天:前端定制与API对接

客户不想让员工学习新系统,希望直接在企业微信工作台里打开一个H5页面,上传发票。

BuildingAI提供了完整的API,包括用户登录、调用工作流、查询额度等。
我花了三天写了一个轻量级的Vue 3前端,代码量不到200行。

核心逻辑:

// 调用BuildingAI的OCR工作流
async function uploadInvoice(file) {
  const formData = new FormData();
  formData.append('image', file);
  
  const res = await axios.post('/api/flow/run/invoice-ocr-verify', formData, {
    headers: { Authorization: `Bearer ${userToken}` }
  });
  
  // 返回结果直接显示给用户
  return res.data;
}

第十三天至第十四天:测试与交付

  • 测试了300张真实发票(客户提供的历史数据),识别准确率 96.7%,误识主要是折叠严重或拍照反光的个案。

  • 验真接口平均成功率 99.2%(失败重试两次)。

  • 并发测试:模拟10个用户同时上传,工作流平稳,单次调用平均耗时 3.8秒

交付物:

  • 一台预装BuildingAI的服务器(内网部署)。

  • 一个企业微信H5应用。

  • 一份管理员操作手册(如何调整计费套餐、如何查看日志)。

客户说:“这就完了?我还以为要等一个月。”


四、反思:如果重来一次,我会做哪些不同?

1. 更早接受“能力外包”

以前总觉得自己写代码才可控,集成第三方平台像“开盲盒”。
但这次的经验是:对于成熟的开源底座,信任成本远低于自研成本。
BuildingAI 在用户、计费、应用市场这些模块的完成度,比我见过的很多商业SaaS都高。免费的,敢信吗?一开始我也不信。

2. 不要低估“非功能需求”的耗时

用户管理、计费、权限、日志……这些听起来简单,但每一样都牵扯数据库设计、接口规范、异常处理。
这次BuildingAI把这些全包了,我才有精力去优化OCR的预处理逻辑和验真重试策略。
两周能上线,不是因为我能干,而是因为我不需要干那些已经被干好的活。

3. 应用市场是真正的“加速器”

以前用Dify,想要个OCR能力,得去配第三方API Key,写自定义工具。
BuildingAI 的应用市场里直接装一个,像装手机App一样。
而且应用之间的数据格式是内置打通的,不用写胶水代码。
这个体验,谁用谁知道。


五、给技术同行的三个建议(非鸡汤版)

1. 评估一个开源项目,别只看Star,要看“生产可用度”

BuildingAI 在GitHub上有2.3k Star,不算顶流。
但它的代码结构、文档完备度、错误处理日志,明显是按商业化产品标准写的
我敢把它部署到客户内网,是因为它的计费模块有完整的流水记录和退款接口,权限模块支持RBAC 0.9,这些都是生产环境的硬指标。

2. 一人公司,要习惯“用平台思维做项目”

以前接项目,我是“代码工人”,客户要什么功能,我写什么代码。
现在接项目,我是“系统集成师”,先用BuildingAI把80%的通用架子搭好,再用工作流拼装剩下的20%。
单价没降,交付周期缩短了三分之二,利润率翻倍。
这不是内卷,这是技术杠杆。

3. 私有化部署是B端项目的护城河

很多SaaS工具很好用,但客户一听“数据要上传到云端”,直接摇头。
BuildingAI 开源、能私有化,这是它能进客户机房的通行证
如果你的目标客户是政企、医疗、财务这些数据敏感领域,私有化能力就是必选项,不是加分项


六、结语:工具越趁手,越不像在工作

这个项目做完,我算了一笔账:

  • 客户预算:5万元(中小企业,这个预算不算高)。

  • 我实际投入:14天 × 12小时 = 168小时。

  • 如果按传统开发模式,这个价格我根本不会接——成本都不够。

但因为我用了BuildingAI,这个项目变成了一个“高性价比订单”。

它让我明白一件事:

未来几年,能生存下来的独立开发者,不是技术最牛的,而是最擅长用工具武装自己的。

我不会把BuildingAI吹成万能药。
它的OCR识别率不是100%,工作流的高级编排还需要写少量JS代码,文档偶尔需要翻源码。
但它的核心价值在于:把一款AI商业应用所需要的“用户-支付-权限-模型调度”底座,完整地、开源地、可私有化地交到你手里。

这就像一个厨师,不用自己种菜、养猪、铸铁锅,只需要研究怎么把菜炒好。

现在,客户财务部的阿姨们已经习惯了每天打开企业微信,用“智能票据识别”上传报销单。
她们不知道这个系统背后是谁写的,也不需要知道。
她们只知道,月底不用加班了。

对我来说,这就是最好的评价。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐