space ocr
指南文章价格文档

最好用的票据与发票 OCR 识别软件

票据与发票 OCR 软件选购指南:可验证的准确度、明细提取、导出、API 与 webhook、审计追踪,以及透明的定价——并用实时演示逐一印证。

凡是要跟纸打交道的企业,都绕不开票据和发票——而这两样东西手动录入起来都让人头疼。OCR 的卖点很直白:把单据拍下来,得到结构化数据,然后继续干别的。问题在于,大多数 OCR 工具只做到了看起来像那么回事。它们给你一个供应商名称和一个合计金额,剩下的就要你自己去信。记一笔个人开销,这没问题。但放到应付账款、费用对账,或者任何会被审计的场景里,“模型说是这样”可不是你敢拍胸脯担保的答案。

本文就是一份选购清单。它会带你梳理:到底是什么把真正好用的票据与发票 OCR 软件和一个华而不实的演示区分开来——可验证的准确度、明细行提取、干净的导出、带 Webhook 的真正 API、审计记录,以及你能预估的定价——然后展示 space-ocr 如何逐一做到,用一个实时、可核对的演示,而不是一张截图。

先看证据:一次你可以亲自核对的真实提取

在罗列任何功能之前,先看一样多数厂商不会给你看的东西:一次提取里,每一个数值都能指回它在页面上原本所在的确切位置。把鼠标悬停在下方任意字段上——票据上高亮的那个框,就是这个数值被读取的地方。

Receipts with extracted-field bounding boxes
Verified fields
KINSHO · 合計 2,045
ライフ · 合計 4,286

Each value with a box carries a verified on-page location — bbox + 4-point vertices + match_ratio — on a 0–1000 normalized grid (0,0 top-left → 1000,1000 bottom-right), the same shape the live API returns. Hover a field to trace it back to the pixels it came from.

票据与发票 OCR 该看哪些点

票据和发票是最难啃的“简单”单据。版式因供应商而异,合计金额藏在小计和税额之间,明细行会换行折行,而一张手机拍的照片往往是歪的、还带着反光。一个能搞定干净 PDF 的工具,下一张皱巴巴的热敏小票就可能崩盘。用下面这些标准,帮你穿过营销话术看清本质。

关键点为什么重要弱工具强工具
可验证的准确度一个无法追溯的数字,反正你还得重新录入一遍给出一个值,也许再加个置信度分数给出每个值连同它在页面上的位置,可一键跳转
明细行发票和票据是表格,不是一组扁平字段抓到合计,丢掉行提取可重复的明细行,每个单元格都带位置
导出数据得能离开工具才有用复制粘贴或锁死在查看器里通过 API 提供 CSV(Excel/中日韩文本安全)和 JSON
API + Webhook真有量就意味着自动化,而不是点鼠标只有界面,或一个单薄的同步接口带异步任务和签名 Webhook 的 REST API
审计记录审核者需要看到改了什么悄悄覆盖 OCR 输出把原始值保留在人工修改旁边
透明定价做预算最怕意外凡事“请联系我们”公开的单图价格加免费额度

本文余下部分会逐行展开。

可验证的准确度,胜过一个置信度分数

置信度分数告诉你模型自我感觉很有把握。它并不告诉你 total: 2,045 到底是不是票据上实际印着的那个数字。space-ocr 回答的是一个更严苛的问题,它在每个值旁边一并返回:

  • bbox——一个轴对齐矩形 { xmin, ymin, xmax, ymax },位于一个 0–1000 normalized(归一化)网格上(0,0 = 左上角,1000,1000 = 右下角),与图片的像素尺寸无关。
  • vertices——四个有序顶点,构成一个带方向的框,会跟随单据的倾斜角度,所以哪怕手机拍歪了也能干净地框住。
  • match_ratio——该值的字符中,实际在页面上被定位到的比例(0–1)。当达到 ≥ 0.85 时,该字段被视为可信匹配;1.0 表示每一个字符都被找到了。

因为位置是跟着值一起走的,你可以渲染出这个框、引用这些坐标,或者重新核对一个被标记的字段,而无需重跑 OCR。这正是 OCR 审计记录 的基础——也是上面那个演示不是摆拍的原因。

✓ Verified

这些坐标并不是听模型一面之词得来的。 语言模型会返回每个字段的文本——以及它用到了哪些词元(word token)的提示——但从不返回框本身。引擎随后把这段文本与视觉 OCR 在页面上实际检测到的符号逐字符匹配,于是框落在这些字符被找到的真实像素上,每个值也据此得到一个 match_ratio,表示它有多大比例被定位到了。模型给的词元提示可能有噪声(在重复出现的行之间它有时会张冠李戴),所以系统用列一致性和行一致性检查来验证这些提示,而不是盲目相信它们。重点不在于 AI 不会出错——而在于每个值都会回过头来与票据本身核对,并附上一个分数说明它匹配得有多好。

要的是明细行,不只是合计

廉价票据 OCR 最大的缺口就在表格。谁都能抓到一个总计;真正的价值在里——每一项商品、数量、单价和折扣。space-ocr 把这些提取为可重复的行,而且每个单元格都保留自己的位置,所以一条换行或合并的明细行依然可追溯。

你通过一个 type: "array" 的字段来请求它们,其 children 描述一行的结构。关于行模型更深入的讲解,参见 从发票中提取明细行

明细行字段定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "fields": [
    { "name": "vendor", "type": "string" },
    { "name": "invoice_date", "type": "string" },
    { "name": "total", "type": "string" },
    {
      "name": "line_items",
      "type": "array",
      "children": [
        { "name": "description", "type": "string" },
        { "name": "quantity", "type": "number" },
        { "name": "unit_price", "type": "number" }
      ]
    }
  ]
}

内置模板:省去写 schema 的功夫

常见场景下,你不必手写字段定义。space-ocr 自带预设模板,只需一个 templateId 即可套用——包括 receipt(票据)和 invoice(发票),还有名片、报价单、采购订单、送货单以及多种证件文档。模板会替你提供字段集合和提示词;如果你同时传入了自己的 fields,则以你的为准。

整个调用就是一次 HTTP 请求——不用 SDK,也不用对 PDF 做预处理(引擎接收栅格图像:JPEG、PNG、GIF、BMP、TIFF、WebP)。

用内置模板提取一张发票
1
2
3
4
5
6
7
8
curl -s https://api.space-ocr.com/ocr/fields \
  -H "Authorization: Bearer $SPACE_OCR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://example.com/invoice.jpg",
    "imageType": "url",
    "templateId": "invoice"
  }'

导出与 API:数据去往何处

如果数据被困在工具里,提取就毫无价值。space-ocr 给你两条干净的出口:

  • CSV——表格导出时带 UTF-8 BOM,这样 Excel 才能正确打开日文、韩文和中文文本。数组(明细行)会展开成子行,而任何人工修正都会在输出中覆盖 OCR 原值。
  • 基于 REST 的 JSON——POST /ocr/fields 处理单份单据,POST /upload 把图片直接推入一张表,GET /view 在服务端查询已存储的表(wheresortselectlimit),无需重跑 OCR,也不必再付一次费。

面向大批量的自动化,/upload 默认是异步的:它为每个文件返回一个任务,并在完成时通过 Webhook 通知你——每个空间一个签名(HMAC-SHA256)端点,事件如 ocr.completedocr.failed。这就是“你点鼠标的工具”和“自己跑起来的流水线”之间的区别。完整的接口面收录在 发票数据提取 API 指南API 文档 里。

丢进一张票据或发票,结构化字段就回来了——每一个都定位在源图像上

审计记录:机器读到了什么 vs. 人改了什么

最好的票据与发票 OCR,不只是记录它自己的输出——它还会记录修正。当你在 space-ocr 里编辑一个单元格时,你的值会与 OCR 原值分开存储,而一个 Original(原值)提示框始终显示引擎最初读到的内容。审核者可以并排看到机器值和人工覆盖值——这恰恰是审计所要的。

点击任意单元格,对应区域就会在原图上亮起——这是抽查一整批的最快方式。

透明、可预估的定价

可验证的准确度和一个实诚的价格,往往出自同一种态度。space-ocr 为每张图 ¥10。有每月 100 次扫描的免费额度,无需信用卡Pro 套餐 ¥7,980/月,含 1,100 次扫描、团队共享和 100 GB 存储。更大的用量由 Business 套餐通过联系洽谈承接。没有按字段计费,没有按页加价,针对已存储表的查询(GET /view)也是免费的。

如何提取一张票据或发票

  1. 发送图像
    把票据或发票 POST 到 /ocr/fields,imageType 取 'url' 或 'base64'。引擎接收栅格图像(JPEG、PNG、GIF、BMP、TIFF、WebP)。
  2. 套用模板或字段
    传入 templateId 'receipt' 或 'invoice' 以使用内置 schema,或者提供你自己的 fields——包括一个带 children 的 array 字段用于明细行。
  3. 读取结构化结果
    每个值返回时都带着它的 bbox、vertices、match_ratio 和 bbox_source,外加一个 field_bboxes 映射,定位页面上的每个字段。
  4. 核对与修正
    点击任意单元格即可高亮它被读取的确切区域;match_ratio 低于 0.85 会标记出一个值得再看一眼的值。修改会保存在原值旁边。
  5. 导出或查询
    下载 CSV(UTF-8 BOM,明细行已展开),或用 GET /view 配合 where、sort 和 select 查询已存储的表——无需重跑 OCR,也不额外收费。
票据和发票 OCR,哪款软件最好用?
最好的工具不止是识别文字——它们会提取明细行、导出干净的 CSV 和 JSON、提供带 Webhook 的 REST API、保留修正的审计记录,并透明定价。space-ocr 还加上了可验证的准确度:每个值返回时都带着它在页面上的边界框和一个匹配比例,所以你能把任何数字追溯回它来自的像素。它内置了 'receipt'(票据)和 'invoice'(发票)模板,并提供每月 100 次扫描的免费起步额度。
OCR 能从票据或发票里提取明细行吗,而不只是合计?
可以。在 space-ocr 里,你把明细行作为一个 'array' 类型的字段来请求,其 children 描述一行的结构(描述、数量、单价等等)。每个单元格都保留自己的边界框,所以一条换行或合并的明细行依然能追溯到它在页面上的位置。
票据和发票 OCR 对手机拍的照片管用吗?
管用。引擎在加载时会应用 EXIF 旋转,使返回的坐标与显示的图像一致;它还返回带方向的框(四个顶点),会跟随单据的倾斜角度。歪斜、旋转的手机照片依然能干净地框住。输入是栅格图像——JPEG、PNG、GIF、BMP、TIFF 或 WebP。
票据和发票 OCR 多少钱?
space-ocr 为每张图 ¥10。有每月 100 次扫描的免费额度,无需信用卡;还有 ¥7,980/月 的 Pro 套餐,含 1,100 次扫描、团队共享和 100 GB 存储。用 GET /view 查询已存储的数据是免费的,也没有按字段或按页的附加费。
我能把票据和发票处理做成大批量自动化吗?
可以。POST /upload 把图片直接推入一张表,默认异步运行,为每个文件返回一个任务,并在完成时通过签名(HMAC-SHA256)的 Webhook 通知你,例如 ocr.completed 和 ocr.failed。你也可以轮询 GET /jobs/{jobId} 作为 Webhook 的替代方案。

拿你自己的票据和发票,试试最好用的 OCR

免费额度——每月 100 次扫描,无需信用卡。每个值返回时都带着它在页面上的位置。

相关