Total Pageviews

Monday, 13 June 2022

增值税发票识别

 增值税发票OCR识别,使用flask微服务架构.

识别type:增值税电子普通发票,增值税普通发票,增值税专用发票;识别字段为:发票代码、发票号码、开票日期、校验码、税后金额等.

环境

  1. python3.5/3.6
  2. 依赖项安装:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. 有GPU环境的可修改安装requirements.txt对应版本的tensorflow-gpu,config.py文件中控制GPU的开关

模型架构

YOLOv3 + CRNN + CTC

模型

  1. 模型下载地址:链接:https://pan.baidu.com/s/1bjtd3ueiUj3rt16p2_YQ2w
  2. 将下载完毕的模型文件夹models放置于项目根目录下

服务启动


  1. python3 app.py
  2. 端口可自行修改
  3. 服务调用地址:http://...: [端口号]/invoice-ocr,例:http://127.0.0.1:11111/invoice-ocr

测试demo

  1. 测试工具:postman,可自行下载安装.

参考

chineseocr https://github.com/chineseocr/chineseocr

from https://github.com/guanshuicheng/invoice 

-----

C-OCR是携程自研的OCR项目,主要包括身份证、护照、火车票、签证等旅游相关证件、材料的识别。 项目包含4个部分,拒识、检测、识别、后处理。

from https://github.com/ctripcorp/C-OCR

------

百度文字识别api,Python3,包含了(通用文字识别,通用文字识别(含位置信息版),通用文字识别(高精度版),通用文字识别(高精度含位置版),网络图片文字识别,身份证识别,银行卡识别,驾驶证识别,行驶证识别,营业执照识别,车牌识别,表格文字识别-提交请求,通用票据识别,手写文字识别,增值税发票识别,数字识别,欢迎使用!请使用新版文字识别https://github.com/chenguanyou/BaiduTextApi

新版文字识别接口封装

https://github.com/chenguanyou/BaiduTextApi

百度文字识别

百度文字识别api,Python3,包含了(通用文字识别,通用文字识别(含位置信息版),通用文字识别(高精度版),通用文字识别(高精度含位置版),网络图片文字识别,身份证识别,银行卡识别,驾驶证识别,行驶证识别,营业执照识别,车牌识别,表格文字识别-提交请求,通用票据识别,手写文字识别,增值税发票识别,数字识别,欢迎使用!

测试使用

1、在shitu_api/confing.py里配置您的AK,SK。 2、运行python3 shitu_api/bin/CharacterRecognition/test.py 文件即可测试.

from https://github.com/chenguanyou/CharacterRecognition 

-------

基于OPENCV和tesseract的中文扫描票据OCR识别。 

jx_ocr

应用tensorflow实现票据识别

这款OCR仍然处于开发阶段。demo可以运行~/OCR v1.0/ocrFile/fileOcrTrement.py 将图片文件地址换成你想用的。

欢迎提交issues讨论。

项目小结

1. 项目目录概况:

图片目录:

    /OCR_pic

图片处理目录:

    /ocrFile、/photoPretreatLib

图片识别引擎主要处理程序目录:

    /lib

其他插件及其文档地址:

    tesseract       https://github.com/tesseract-ocr/tesseract
    chinese-ocr     https://github.com/chineseocr/chinese-ocr
    Chinese-ocr-with-cpu  https://github.com/eragonruan/text-detection-ctpn
    Mnist-master    http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html
    Pyocr           https://github.com/openpaperwork/pyocr
    sceneReco       https://github.com/bear63/sceneReco

2. OCR识别

目录:

    /lib

依赖安装:

    /lib/demoPy27/requirements.txt

文件:

    baiduapi.py  文档地址:http://ai.baidu.com/docs#/ImageClassify-Python-SDK/top
    demoDir.py  批量ocr处理图片
    demoFile.py  逐个ocr处理图片
    ocrOutput.py  输出接口
    outputXml.py  NC凭证post上传接口
    resize.py  图片大小规范文件
    zengzhishuiTemplate.py  增值税发票模板接口
    /demoPy27  兼容python2的百度ocr处理文档

3.图片预处理与OCR识别测试脚本:

目录:

    /ocrFile

依赖:

    opencv3、tesseract、tensorflow

文件:

    electronic_tickets_ocr.py  电子发票预处理及tesseract识别
    mnist_advance.py  机器学习强化版脚本
    mnist_test.py  机器学习初步脚本
    tesseracocr.py  tesseract图片识别脚本
    ticketocr.py  百度aip票据识别脚本

4. 图片opencv处理:

目录:

    /photoPretreatLib

文件:

    photoPretreatLib/color_split.py  opencv三原色分色算法
    photoPretreatLib/fileOcrTrement.py  opencv+tesseract处理算法脚本
    photoPretreatLib/opencv_test.py  opencv图像灰度处理算法
    photoPretreatLib/picTreatment.py  pil图片压缩脚本
    photoPretreatLib/pil_lib.py  pil图片处理函数
    photoPretreatLib/smoothing_method.py  opencv图片平滑处理算法
    photoPretreatLib/straight_line.py  opencv图片霍夫直线处理算法
    photoPretreatLib/threshold_method.py  opencv 图片二值化阈值处理算法

部分参考文献:

    邬满. 基于跳变检测和Tesseract的机打发票识别算法[J]. 信息与电脑:理论版, 2015(18):43-45.
    王宸敏. 基于OCR技术的化验单识别方法研究[D]. 浙江大学, 2016.
    万松. 基于Tesseract-OCR的名片识别系统的研究与实现[D]. 华南理工大学, 2014.
    王希晨. 基于Tesseract的电子票据云平台的设计与实现[D]. 南京大学, 2016.
    张扬. 基于Tesseract光学字符辨识应用的设计与实现[D]. 西安电子科技大学, 2013.
    程育恒. 基于Tesseract开源OCR引擎的证件识别系统的设计与实现[D]. 东华大学, 2014.
    胡文, 马玲玉. 基于OpenCV手机拍照快递单文字识别的研究[J]. 哈尔滨商业大学学报(自然科学版), 2015(5):564-568.

 from https://github.com/JiangKui007/jx_ocr

--------

中山大学智能发票识别系统后台.

OverView

智能发票识别系统

Requirements

  • tomcat服务器
  • eclipse
  • mysql数据库
  • redis数据库

Function

  • 自动归类识别机打发票中的发票信息
  • 用户手动绘制用于识别的发票模板和识别区域
  • 查看等待识别发票的任务缓冲队列
  • 可视化发票识别算法的过程,动态展示当前识别的区域和结果
  • 管理员可对系统平台内的用户、用户组进行权限编辑管理
  • 单位负责人可修改使用系统平台的单位信息
  • 个人设置可查看个人信息和权限

Details

前端

  • Jquery + bootstrap搭建前端框架,处理前端逻辑和展示,负责MVC架构中的View视图层
  • 前后端通过websocket和ajax通信,ajax主要用于按钮等控件的事件处理函数中的请求,websocket用于后端主动向前端推送消息
  • JSP控制cookies和session,在页面跳转时记录会话用户态,并可通过前端可视化界面对用户权限(用户权限分为继承的用户组权限和个人权限)进行编辑
  • 识别算法的可视化通过websocket实现,算法端将每个区域的识别结果通过后台服务器逐次转送给前端,前端在onmessage回调函数中处理信息并在可视化窗口的canvas画布中显示出来
  • 通过画布的getImageDataputImageData获取图片的像素点,并制造模糊效果,对比突出当前的识别区域
  • Js + canvas实现用户动态画图的效果,可以在canvas画布中框出自定义的识别区域和填写区域信息

后端

  • Spring MVC + Spring + JDBC搭建后端框架,Controller负责接收请求,Service负责主要业务逻辑,Dao负责数据库访问
  • 算法端用C++编写,java后端通过多线程+socket+TCP与算法端通讯,利用对象锁完成线程调度
  • 利用redis实现缓冲队列以及模板操作调度队列
  • 利用spring-websocket与前端进行全双工通信
  • 使用shiro作为安全管理框架,通过其内置session实现安全登录,使用shiro注解完成权限管理。

算法端

  1. 使用Bag of Words + CNN完成票据分类,根据分类结果查询并获取相应的发票模板。
  2. 使用SIFT特征匹配和配准思路完成票据对齐
  3. 根据模板中信息区域坐标截取ROI,因为票据可能存在套打情况,故还使用了约束式ROI搜索算法对信息区域进行重定位。
  4. 对每个ROI进行去噪、去印章、去直线等预处理操作,并使用形态学处理得到目标文本信息的连通体的最小外接矩形,并将此区域送入OCR模块。
  5. 使用搭建好的基于深度学习的卷积神经网络进行文字识别,识别结果组装成协议格式,返回给后台。

Screenshot

  • 缓冲队列
    img

  • 算法可视
    img

  • 发票模板
    img

  • 添加/修改模板
    img

  • 未识发票
    img

  • 日志查询
    img

  • 用户管理
    img

  • 单位管理
    img

  • 个人设置

    from https://github.com/huanglu20124/invoice
    img

 

 


 

 

 

No comments:

Post a Comment