OCR服务涉及到人们生活的方方面面,但凡有文字的地方,都有识别的影子。前段时间在朋友圈看到别人核对酒店账单很晚,但这种活交给OCR其实并不困难。百度增值税发票识别API,能够结构化识别增值税普票、专票、电子发票、卷票的所有关键字段,包括发票基本信息、销售方及购买方信息、商品信息、价税信息等,其中四要素识别准确率超过99%。对于一些简单重复的活,能够有效节省人力开支,让人工智能走进生活~
1. 功能介绍
- 全字段识别:支持对增值税普票、专票、电子发票、卷票全部关键字段的结构化识别,能够满足财税报销等场景中对任意字段的识别需求。
- 二维码识别校验:识别票面左上角的二维码,获取发票代码、号码、金额、开票日期、校验码五个字段信息,与识别到的对应字段信息进行匹配校验,保证更高的识别准确率。
2. 应用场景
- 财税报销:快速识别录入增值税普票或专票各字段信息,应用于企业税务核算及内部报销等场景,有效减少人工核算工作量,实现财税报销的自动化;
- 发票验真:智能识别发票代码、号码、开具金额、开票日期四个关键字段,以便快速接入税务机关发票查验平台进行真伪查验,有效降低人力成本,控制业务风险;
- 账单记录:对发票金额、开票日期等信息进行自动识别和录入,应用于理财记账场景,帮助用户快速录入账单信息,降低用户输入成本,提升使用体验。
3. 原理介绍
增值税发票的识别原理其实就是OCR的一种应用,这其中包括文字定位和识别。现阶段比较常用的文字识别方法是CRNN,在卷积层提取图像特征,在循环层进一步提取卷积特征,最后通过CTC来实现Decoder。对于水平的文字,一般的文字检测方法效果都不错,比如CTPN,而增值税发票可能存在印章视角为圆形的情况,这就需要用到一些图像校正方法实现检测。DB检测算法是一种新的检测方法,由于分割网络的结果可以准确描述诸如扭曲文本的场景,因而基于分割的自然场景文本检测方法变得流行起来。基于分割的方法其中关键的步骤是其后处理部分,这步中将分割的结果转换为文本框或是文本区域。DB文本检测算法也是基于分割,但是通过提出Differentiable Binarization(DB)来简化分割后的处理步骤,并且可以设定自适应阈值来提升网络性能。
4. 调用方法
我们使用Python3调用API,实现也非常简单,代码比较固定,这样也能方便开发者使用。过程分为两步:
1. Post 请求,获取access_token;
import requests
##############
### 参数 ###
##############
API_Key = 【API Key】
Secret_Key = 【Secret Key】
# 第一次 Post 请求,获取access_token
def get_access_token():
# url
url = 'https://aip.baidubce.com/oauth/2.0/token'
# 参数
params = {
'grant_type': 'client_credentials',
'client_id': API_Key,
'client_secret': Secret_Key
}
res = requests.post(url, data=params)
res = res.json()
access_token = res['access_token']
return access_token
2. Post请求,发送数据和Header。
import requests
import base64
'''
增值税发票识别
'''
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice"
# 二进制方式打开图片文件
f = open(【图片路径】, 'rb')
img = base64.b64encode(f.read())
params = {"image":img}
access_token = get_access_token()
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
5. 效果演示
返回的结果是JSON格式,为了更好地可视化,经过了一定处理。
体验下来,准确率和速度是杠杠的~!就连自己写请求也省了,在文档中提供了各种API的参考模板,如果还是嫌麻烦,那...我写了一个参考模板可以直接套用: https://aistudio.baidu.com/aistudio/projectdetail/1344552 。另外,百度有很多体验活动,开发者们可以发挥自己的想象,来参与体验,就像百度使命写的那样,”用科技让复杂的世界更简单“。