增值税发票内容的识别

增值税发票内容的识别技术在当今社会识别越来越普遍,我们今天就来看看这项技术是怎么实现的?欢迎光临

解决思路:1.发票矫正   2.文字检测   3.文字识别  4.版面分析

这是一张增值税发票

增值税发票内容的识别_第1张图片

定位发票边框的四个点

增值税发票内容的识别_第2张图片透视变换之后,做文字检测

增值税发票内容的识别_第3张图片

文字识别,版面分析

结果:

{   

    "发票代码": "3200153160",    

     "发票代码": "00352801",    

    "日期": "2014年04月21日",    

    "金额": "19417.48",    

     "税额": "582.52",   

     "税价合计": "20000.00",   

      "校验码": "",

}

原图地址:http://n1.itc.cn/img8/wb/recom/2016/04/27/146175098939471750.JPEG

下面我们用Python3来做一下:

调用地址:https://ocrapi-invoice.taobao.com/ocrservice/invoice
请求方式:POST
返回类型:JSON

请求参数(body):

{
  //图像数据:base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,和url参数只能同时存在一个
  "img": "",
  //图像url地址:图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,和img参数只能同时存在一个
  "url": ""
}

请求代码Python3版:

import urllib.request
import urllib.parse
import json
import time
import base64
with open('1.jpg', 'rb') as f:  # 以二进制读取本地图片
    data = f.read()
    encodestr = str(base64.b64encode(data),'utf-8')
#请求头
headers = {
         'Authorization': 'APPCODE 你自己的AppCode',
         'Content-Type': 'application/json; charset=UTF-8'
    }
def posturl(url,data={}):
  try:
    params=json.dumps(dict).encode(encoding='UTF8')
    req = urllib.request.Request(url, params, headers)
    r = urllib.request.urlopen(req)
    html =r.read()
    r.close();
    return html.decode("utf8")
  except urllib.error.HTTPError as e:
      print(e.code)
      print(e.read().decode("utf8"))
  time.sleep(1)
if __name__=="__main__":
    url_request="https://ocrapi-invoice.taobao.com/ocrservice/invoice"
    dict = {'img': encodestr}


    html = posturl(url_request, data=dict)
    print(html)

正常返回示例:

{
  "发票代码": "032001500XXX",
  "发票号码": "25272XXX",
  "开票日期": "2017年XX月XX日",
  "校验码": "15922733756000XXXXXX",
  "发票金额": "XXX.00",
  "发票税额": "XXX.43",
  "不含税金额": "XXX.57",
  "受票方名称": "XXX",
  "受票方税号": "XXXX",
  "受票方地址、电话": "XXX",
  "受票方开户行、账号": "XXX",
  "销售方名称": "XXX",
  "销售方税号": "913201043023368XXX",
  "销售方地址、电话": "XXX",
  "销售方开户行、账号": "XXX"
}

失败返回示例:

{
  "error_code": 400,
  "error_msg": "img和url参数不能同时存在"
}

错误代码定义:

错误码 错误信息 描述
400 参数错误 具体错误请参考返回的error_msg
401 您无该功能的权限,请开通后使用 您无该功能的权限,请开通后使用
403 购买的容量已用完或者签名错误 购买的容量已用完或者签名错误
500 服务器错误,请稍后重试 服务器错误,请稍后重试

当然也可以不用写代码,比如阿里云自己开发,调用API接口实现,文字识别,大大减轻工作量,开箱即用,非常简单。

示例:

增值税发票内容的识别_第4张图片

增值税发票内容的识别_第5张图片

增值税发票内容的识别_第6张图片


你可能感兴趣的:(增值税发票内容的识别)