增值税发票内容的识别
增值税发票内容的识别技术在当今社会识别越来越普遍,我们今天就来看看这项技术是怎么实现的?欢迎光临
解决思路:1.发票矫正 2.文字检测 3.文字识别 4.版面分析
这是一张增值税发票
定位发票边框的四个点
透视变换之后,做文字检测
文字识别,版面分析
结果:
{
"发票代码": "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接口实现,文字识别,大大减轻工作量,开箱即用,非常简单。
示例:
增值税发票内容的识别相关推荐
- 利用OCR解决增值税发票内容文本识别
增值税发票文本识别 对于增值税发票文本识别这个问题,许多大公司都有现成的API可以调用,比如百度.京东等等. 但是我们并不知道里面的方法,况且调用是要Money的,那么怎么实现一个属于自己的模型呢? ...
- 给满分为其点赞的增值税发票OCR扫描识别系统
财务管理是企业管理中至关重要的组成部分,每个企业的生存与发展都需要良好完善的财务管理.作为企业进销存活动的重要凭证,发票尤为重要.随着企业活动的增加,企业内部充斥着大量发票,这些发票纸张轻薄,采用专门 ...
- 关于增值税发票内容识别
请教各位大神 增值税发票有没有稽核内容的软件或方式 如图像识别技术,扫描转换文字等技术,或税务局是否有稽核机器 如有请帮忙告知 万般感谢!
- python获取网页文本框内容_python识别html主要文本框
在抓取网页的时候只想抓取主要的文本框,例如 csdn 中的主要文本框为下图红色框: 抓取的思想是,利用 bs4 查找所有的 div,用正则筛选出每个 div 里面的中文,找到中文字数最多的 div 就 ...
- html邮件内容能识别么,【外贸技巧】HTML邮件之扫盲篇
按照邮件的撰写形式大体可以分为两类:纯文字邮件&HTML邮件. 平常我们所采用的大部分是纯文字邮件,顶多在里面插入一个图片之类:而HTML邮件则是使用HTML语言编辑或者撰写的邮件,说的通俗一 ...
- ubuntu18.04 (rk3399pro) U盘内容不能识别
问题: Ubuntu18.04 插入存储设备后,会自动识别,但是挂载目录下内容识别不了 vaild 解决方案:手动挂载 lsblk # 显示设备信息 sudo mkdir temp_usb # 新建临 ...
- 人工智能学习梳理和总结
人工智能学习梳理和总结 今天笔者专门做一期发文的目录,算是对之前的学习的回顾.梳理和总结吧! 入门篇 人工智能学习心得 人工智能入门书籍推荐 深度学习框架的比较(1) 深度学习的框架比较(2) 深度学 ...
- 成长了,记录一下,增值税发票识别写入excel文件里
在写博客方面,我有一点点成长了,现在能够把话讲得更简洁了,而且能够让别人复用我代码的难度降低了,这得记录一下,哈哈哈哈 之前写过一篇增值税发票ocr的博客,是我写的这些文章里获赞最多的,哈哈哈,虽然也 ...
- IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
具体表现为:新建maven工程后,pom.xml文件内容显示为灰色,具体内容无法识别.如下: 原因分析: idea无法识别xml文件. 解决步骤: 1.选择File->Settings: 2.选 ...
最新文章
- vue前端用服务器上路径的图片展示_5分钟教你用nodeJS手写一个mock数据服务器
- 相见恨晚的 Python 内置库:itertools
- #20071-[NOIP2020模拟赛B组Day6]礼物购买【二分】
- (转)基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用...
- China’s movie heroes 《红海行动》展现中国英雄本色
- LeetCode - Two Sum
- 无缝对接数据、制图成果无损转换——MapGIS 10.5 Pro制图成果转换工具
- 《相关性准则——大数据时代的高效能之道》一一1.6 相关性准则
- Python的excel工作簿写入与读取操作
- 让耳机有个思想准备 趣谈煲耳机方法
- 【互动媒体技术】有关十二个“一”的文艺创作-拓展
- 总结:Grafana
- homeassistant添加米家空调伴侣
- 【saltstack】配置salt-master端REDIS_RETURN
- Kotlin扩展方法进化之Context Receiver
- miui 9 android pay,小米9多功能NFC再升级,Mi Pay线上支付上线
- 热图(Heat Map)的绘制
- java中创建对象的一般格式是什么_Java零基础快速入门|对象的创建和使用(下)...
- 小米mix3 android os是什么,小米MIX 3
- 想听一首歌好难?程序员教你一键下载
热门文章
- JS替换字符串中的指定字符
- 计算机组成原理移位运算实验报告,计算机组成原理移位运算实验报告
- 【ArcGIS】ArcGIS Pro和ArcMap的简单对比
- 风机效率计算的python代码
- 性能监视器- Performance Monitor
- c程序语言捉迷藏,捉迷藏幼儿园小班语言教案
- 【图像重建】基于matlab BP神经网络双基地SAR成像图像重建【含Matlab源码 1950期】
- Pythonxy'import sitecustomize'错误的解决办法
- 顺序栈计算器 中缀转后缀表达式
- cocos2dx基础篇(20) 扩展动作CCGridAction