跳转到正文
Ztract
发票 & 采购订单

把每张发票的每条明细都抽出来。

发票号、日期、供应商信息、每一条带数量和单价的明细行、每行的增值税以及对得上的合计 —— 任意版式、任意币种、任意语言。

实时演示

在真实文档上看效果。

点击右侧任一字段,我们会在左侧高亮它的来源位置。

点任意字段或方框,即可联动。
Invoice — page 1

Extracted fields

Line items

Quantity Subtotal Tax rate Unit price Description

示例数据。真实引擎输出。

概览

什么是发票数据抽取?

发票数据抽取就是把无结构的发票 PDF 和扫描件,变成财务系统能读的结构化数据 —— 发票号、开票日期、供应商信息、每一条明细行,以及底部的合计。过去一份文档要花五分钟手敲的活儿,现在引擎几秒就能跑完,输出的是干净的 Excel/JSON,而不是复制粘贴进电子表格的零散字段。

在一张典型发票上,Ztract 会返回 发票号开票日期到期日期采购订单号;供应商的 公司名称账单地址;完整的 明细行表格,含描述、数量、单价和每行税率;以及三个可核对的合计 —— 小计税额合计含税合计。上方样本是一张 9 行的法语发票,增值税 20% —— 每个值都锚定到页面位置,审核人员一键即可核对。

引擎不依赖模板。新供应商的版式第一次上传就能跑通 —— 不用写规则,不用按供应商配置。法语、西班牙语、日语或阿拉伯语的发票按印刷文字读取;币种在输出中保持各自的形态,不会被悄悄统一;每行的增值税会留在它所属的那一行。如果引擎实在无法返回一个干净的值,那一页会退回到你的页数套餐里。

难点

这里为什么并不简单。

这一类文档比表面更难处理的几个原因 —— 以及我们的应对方式。

  • 跨页的明细行

    表格不会在页面结束时结束。表头会重复,合计只出现在最后一页 —— 我们把整张表拼回一个干净的数组。

  • 逐行税率不同

    商品 0%、服务 20%、运费 10% —— 全在一张发票上。税率会跟着它所属的行,而不是被汇总到页脚里。

  • 多币种、多语言

    发票用 USD,付款说明用 EUR;描述是法语,合计是数字 —— 币种和文字都会被保留下来,而不是被规范化掉。

  • 区分 Subtotal 和 Total

    不同供应商把 TOTAL 印在不同位置,含义也不同。我们靠上下文判断,而不是靠位置,挑出正确的那个。

谁在用

这些工作流用得上。

  • 应付账款

    把已审批的发票自动喂进 NetSuite、QuickBooks 或任意 ERP —— 没人需要再手动敲明细行。

  • 财务

    按税号、品类、币种汇总供应商支出 —— 从过去会计要手工录入的 PDF 里直接出数。

  • 合规

    每个值都保留与原文 bbox 的关联 —— 审计任何数字,点一下就能核对。

常见问题

常被问到的问题。

Ztract 跟传统发票 OCR 有什么不一样?
传统 OCR 返回的是字符 —— 你还得自己写规则,把 Total: $X 这样的内容映射到正确字段里。Ztract 返回的是结构化对象 —— invoice_number、line_items、totals —— 每个值都锚定到来源位置。新供应商版式不用你再加模板就能直接工作。
Ztract 能从多页发票里抽取明细行吗?
可以。引擎会把跨页表格拼回一个 line_items 数组。每页重复的表头会被去重,只出现在最后一页的合计也会被正确归到对应字段。
发票抽取支持哪些语言和币种?
拉丁、CJK、西里尔、阿拉伯文字 —— 包括一页里混合两三种文字的发票。币种保持原始形态(€、$、¥、₩ 等),不会被悄悄统一;每行的增值税或销售税会留在它所属的行上。
抽取后的发票数据有哪些输出格式?
Dashboard 里直接导出 JSON、CSV 或 Excel。结构与引擎抽取出来的 Schema 一致 —— 表头字段是扁平列,明细行用单独的 sheet 或嵌套数组。HTTP API 在 roadmap 上。
字段读不出来时会怎样?
那个字段会返回空,并排查看器会用每字段置信度标记出来。打开文档、点字段、输入正确值 —— 改动即时保存,下次导出自动用新值。如果整页失败,那页会退回到你的套餐里。

用你自己的文档试一下。

免费起步,赠送 30 页。无需信用卡,无需订阅,无需配置。