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 。另外,百度有很多体验活动,开发者们可以发挥自己的想象,来参与体验,就像百度使命写的那样,”用科技让复杂的世界更简单“。