本文目录导读:

- 方法一:使用成熟的API服务(推荐,最快最稳)
- 方法二:开源OCR引擎(适合免费/离线/二次开发)
- 方法三:无代码/低代码工具(适合业务人员)
- 方法四:专业财务软件集成(针对会计/企业)
- 关键步骤与常见问题
- 总结建议
提取票据信息(如发票、收据、支票、行程单等)通常涉及将非结构化的图像或PDF文件中的关键字段(如发票号、金额、日期、购买方、商品明细等)转化为结构化数据,根据你的技术背景和需求(是单次处理少量票据,还是需要搭建自动化系统),主要有以下几种方法:
使用成熟的API服务(推荐,最快最稳)
这是目前大多数企业最常用的方式,通常通过OCR+深度学习模型来识别,你需要将票据图片/PDF上传到接口,然后返回结构化的JSON。
-
阿里云 - 发票识别
- 功能: 支持增值税发票、卷票、打车票、定额发票、火车票、机票行程单等。
- 使用方式: 调用API,通常有每月免费额度(如50次/月),超出后付费。
- 示例字段:
invoiceCode,invoiceNumber,totalAmount,date,sellerName,buyerName等。
-
腾讯云 - 票据单据识别
- 功能: 支持增值税发票、出租车票、火车票、机票、定额发票、通用机打发票等。
- 特色: 支持多张票据混合识别(一次拍一张,自动区分类型)。
-
百度智能云 - 财务票据识别
- 功能: 支持多票据混贴、银行回单、财政票据等。
- 优势: 预训练模型效果好,文档详细,适合中小企业快速集成。
-
合合信息(TextIn)
- 功能: 国内老牌OCR服务,识别准确率很高,尤其对于复杂排版和手写体。
- 适用场景: 银行流水、医疗票据、国际票据等。
流程演示(以Python调用阿里云接口为例):
# 依赖安装: pip install alibabacloud_ocr_api20210707
from alibabacloud_ocr_api20210707.client import Client
from alibabacloud_ocr_api20210707.models import RecognizeTaxiInvoiceRequest
from alibabacloud_tea_openapi.models import Config
config = Config(
access_key_id='你的AccessKey',
access_key_secret='你的AccessSecret',
endpoint='ocr-api.cn-hangzhou.aliyuncs.com'
)
client = Client(config)
# 读取图片为二进制流
with open('taxi.jpg', 'rb') as f:
img_bytes = f.read()
req = RecognizeTaxiInvoiceRequest(body=img_bytes)
resp = client.recognize_taxi_invoice(req)
print(resp.body.data) # 输出结构化数据
开源OCR引擎(适合免费/离线/二次开发)
如果你需要部署在自己的服务器上,不依赖第三方云服务,或者有严格的隐私要求,可以使用开源方案。
-
PaddleOCR(百度开源,推荐)
- 优势: 识别效果在国产模型中极佳,支持80+种语言,轻量级模型,且包含了专门针对发票/票据的Finetune模型。
- 流程: 文本检测 -> 文本识别 -> 关键信息提取(可以基于规则或者使用预训练的关键信息抽取模型,如PaddleOCR中的
kie模块)。 - 示例: 配合LabelMe标注后,可以训练自己的票据模型。
-
Tesseract OCR
- 优势: 最经典的开源OCR引擎。
- 劣势: 对于中文印刷体识别尚可,但对于发票上的小字、模糊字或手写体效果不如PaddleOCR。
- 用法:
tesseract invoice.png out -l chi_sim --psm 6
-
EasyOCR
- 优势: 安装简单,对新手友好,支持中文。
- 劣势: 速度较慢。
无代码/低代码工具(适合业务人员)
如果你不会写代码,或者只需要偶尔提取几张票据信息:
-
在线识别网站:
- 搜索“在线发票识别”或“OCR识别”。
- 上传图片直接导出Excel或文本。
- 推荐: 传图识字、白描(App)、扫描全能王(“扫描” -> “发票识别”)。
-
微信小程序/钉钉应用:
- 很多财务管理软件(如微信发票助手、支付宝发票管家)自带拍照识别功能。
专业财务软件集成(针对会计/企业)
如果是为了做企业报销或记账:
- 用友、金蝶、SAP: 这些财务系统通常有智能报销插件,直接支持扫码枪扫描或拍照上传,自动提取数据填入凭证。
- 报销类SaaS: 易快报、每刻报销、红圈,这些应用App内置OCR,员工直接拍发票报销,系统自动填好金额和日期。
关键步骤与常见问题
-
图像预处理(提高识别率关键)
- 如果拍照模糊、角度歪斜、反光,建议先进行如下处理:
- 图像纠偏:使用OpenCV检测文本方向并校正。
- 去噪/对比度增强:提高文字清晰度。
- 步骤示例:
import cv2 img = cv2.imread('invoice.jpg') # 灰度化 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # 去噪 blurred = cv2.GaussianBlur(thresh, (3, 3), 0) # 保存处理后的图片 cv2.imwrite('processed.jpg', blurred)
- 如果拍照模糊、角度歪斜、反光,建议先进行如下处理:
-
关键信息提取(NLP/CV)
- 识别出所有文字后,需要找到你想要的字段(如发票号码通常是“No.”后面的数字)。
- 基于规则: 使用正则表达式(如金额:
\d+\.\d{2},日期:\d{4}-\d{2}-\d{2})。 - 基于模型: 使用BERT或LayoutLM(一种专门用于文档理解的模型)来定位字段,PaddleOCR自带的
kie(关键信息抽取)模型可以直接做到。
-
防伪验证(财务要求)
- 对于增值税发票,提取出发票代码、发票号码和校验码后6位后,可以去国家税务总局全国增值税发票查验平台验证真伪,部分API直接提供查验服务。
总结建议
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 个人或小团队、快速实现 | 阿里云/腾讯云/百度API | 稳定,有免费额度,提供Excel导出或直接JSON,10分钟接入。 |
| 企业项目、内网部署、隐私要求高 | PaddleOCR + 微调 | 开源免费,可控性好,中文校准效果最佳。 |
| 偶尔处理几张图片 | 在线网站 (传图识字) 或 微信小程序 | 零成本,不写代码。 |
| 做财务系统 | 对接财务软件API (用友/金蝶) 或 报销SaaS | 原生支持,数据自动流入会计凭证。 |
简单推荐: 现在立刻就能用的话,打开手机微信或支付宝,直接拍照扫描,会自动提取关键信息。
标签: 信息识别
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。