写点什么

为什么才云能打进 500 强企业的财务部门?

  • 2020-03-02
  • 本文字数:3564 字

    阅读完需:约 12 分钟

为什么才云能打进 500 强企业的财务部门?

发票是会计核算的原始依据。于国家,它是保障税收的基石;于企业,它是公司做账的依据;于个人,它是报销的凭证。


临近年底,为了赶在截止日期前完成封账,各大公司的财务部门开始加急投入人力、时间成本将发票录入系统,工作压力大,运营成本昂贵。


以增值税发票为例,财务人员通常需要肉眼核对长达十几位的发票代码、纳税人识别号等,并手动录入关键数据。这样沉重的负担无疑会导致发票出错风险激增,也拖累公司整体财务管理效率!



增值税电子普通发票格式


为了降低财务工作难度,实现财务数据的信息化和录入的智能化,国内某能源企业在系统中引入了才云科技的 OCR 解决方案,财务人员上传发票图像即可完成对工程建设、电力调度、员工报销等多种发票的信息自动录入。即便存在发票褶皱、倾斜、扭曲,该方案的数字识别准确率也始终保持在 90% 以上!人工复核压力小,海量票据的报销流程大大加快。而现在,随着这套解决方案即将上线 Caicloud Clever,对更多企业来说,自主开发票据 OCR 正变得触手可及。

票据 OCR 为何难以落地?

OCR,全称光学字符识别(Optical Character Recognition),是计算机视觉的一个分支,主要包含文本检测和文本识别两大关键技术:前者用于定位图像中的文字,后者负责将定位到的文字图像转化为可编辑的文本。


发展至今,OCR 的应用已经十分广泛,市场上的 OCR 产品也比比皆是,但它们的在现实场景下的识别效果却良莠不齐。这是因为作为一种基于图像的文字识别技术,OCR 的识别效果不仅取决于算法,输入图像的质量也严重影响着其最终准确率。


对于算法:目前业界针对文本检测和文本识别已经提出了很多优秀的“轮子”。但检测模型只能完成文字定位,识别模型只能完成文字转录,为了形成一套完整的 OCR 流程,企业需要对各类已有“轮子”进行定制化组合。考虑到 AI 模型的开发难度,这就为企业增加了引进 AI 技术专家的成本。


对于图像质量:通用的 OCR 方法在高质量扫描图像上都能取得较好的效果,但在实际应用中,财务部门上传的票据大多存在分辨率低、光照不均匀、背景杂乱、拍摄角度随意、版式复杂多样等问题,这些都可能影响最终的识别结果。


同时,OCR 服务在许多场景下是系统中连接着后续业务逻辑的子模块。为方便后续业务的进行,系统不仅要知道图像上包含哪些文字,更需要结构化文本内容,这也增加了 OCR 的技术难度。以增值税发票的识别为例,OCR 服务的最终返回结果类似如下的形式:



因此,从实际落地的角度看,当下有很多 OCR 产品只是炫技之作,它们忽视了企业的现实情况,无法从平台级别实现一套通用的票据结构化识别流程,方便非 AI 专家构建定制化 OCR 解决方案,提升 AI 产品在企业系统中的长期价值。

才云票据结构化识别通用 Pipeline

针对上一节提出的问题,才云算法团队(Cabernet 团队)经多方调研和尝试,总结出了企业对通用票据 OCR 落地应用的三项主要需求:


  • 构建通用的票据结构化识别流程,方便非 AI 专家灵活、合理利用“轮子”;

  • 拥有多角度检测和识别的能力,在图像质量不理想的情况下仍能保持高准确率;

  • 结构化不同票据的票面信息,为每一种票据做定制化处理。

  • 结合在五百强企业财务部门的应用实践,才云 Cabernet 团队针对当下所有具有明确版式的票据,设计了一套通用的结构化识别流程(Pipeline),整个 Pipeline 包含票据提取、票据标准化、文本检测及结构化和文本识别四大模块。


才云票据结构化识别通用 Pipeline

票据提取

首先,票据提取模块的输入是用户上传的图像。由于报销人可能会同时提交不同类型的多种票据,其中甚至夹杂公司不支持报销的纸质材料,Pipeline 的第一个环节需要完成感兴趣票据的自动分类和裁切(未支持的票据种类视为不感兴趣),如下图所示:



票据提取结果示例图(不同类型的票据用边界框颜色不同)


技术上,该环节是一个目标检测任务,它将每张票据视为一个目标,并预测目标的位置和类别。目前业内常用的目标检测模型有 Faster R-CNN、SSD、YOLO 以及 RetinaNet 等。为帮助非 AI 技术专家进行模型训练,未来,才云 AI 中台 Caicloud Clever 将提供上述模型选项,方便用户灵活选择。

票据标准化

在企业中,票据图像的采集一般由人工通过扫描仪、高拍仪、手机等设备完成,采集角度不固定,导致无法使用标准模板上的先验信息,影响结构化识别的准确率。


该问题虽然可以通过规范用户的采集方式缓解,但出于对提高用户体验、加快信息采集效率的考量,才云 Cabernet 团队最终选择在 Pipeline 中实现票据标准化。


标准化是通过空间映射将输入图像转换成标准模板。方法是在输入图像和标准票据模板上寻找特征点对计算映射矩阵 H,通过 H 将输入票据投影到模板平面。这包含两个问题:


  • 问题一:在标准模板上的特征点选择标准——选取的点应尽量均匀分布在图像四周,可以最大程度地保证投影之后图像信息的完整性;

  • 问题二:在输入图像上找到标准模板上特征点的映射——在模板图像上定义关键区域,训练检测(实例分割)模型预测输入图像的关键区域,以输入图像和模板上的区域中心作为特征点对。

  • *注:关于问题二,此处推荐使用 Mask R-CNN 完成区域检测并以 Mask 中心为特征点,避免常用检测算法的矩形框中心在拍摄角度随意的情况下无法准确描述特征点的位置。

  • 以火车票为例,我们可以定义如下的关键区域:起始站、车次号、到达站、时间/价格信息、座位信息、身份证、二维码。图中绿色的点代表该区域的中心点:


关键区域模板示意图


对任意一张车票图像完成关键区域的检测并得到区域中心后,我们就可以通过特征点对计算映射矩阵,完成输入图像到标准模板的转换。!



标准化前(左)和标准化后(右)

文本检测及结构化

这一环节的主要任务是检测、定位各类信息在票据上的位置,方便后续文字识别。


对于标准化后的票据,票面上的文本已基本被调整至水平方向,因此无论是传统文字检测方法还是深度学习文本检测模型,它们都能在票据上完成文本定位。


*注:由于传统方法易受图像质量的影响,抗噪能力不强,这里还是推荐使用场景适应性更好的深度学习方法。


以火车票为例:



文本检测结果(右)和关键字段模板示意图(左)


得到文本检测结果后,引入针对关键字段的模板,计算文本检测框与模板上关键字段边界框的 IOU (交并比),将“起始站”“车次号”“身份证”等信息分配给检测框以完成结构化。!



结构化检测结果(不同颜色的框代表属于不同字段)

文本识别

至此,整个 Pipeline 中最难的两个部分“标准化”和“结构化检测”都已经完成,相当于用户已经知道当前输入的票据上的感兴趣字段所在的位置,剩下的只需把关键字段位置对应的图像转换成文本内容即可。


文本识别可以将整个关键字段切割成单字逐个识别,也可以直接识别整条文本行,下图是才云 Cabernet 团队基于文本识别模型,对整条关键字段进行识别的效果。



结构化识别结果示意图


当前业内常见的识别模型分为 CTC 和 Attention 两大方向。如前文所述,在 OCR 解决方案正式上线 Caicloud Clever 平台后,用户可在 Caicloud Clever 上自由选取各类模型进行训练,降低开发者学习成本。

未来展望

本文提出的票据结构化通用 Pipeline 是一套针对常规票据从输入到最终结构化输出的最佳实践,包含票据分类、自动裁切、版面标准化、结构化检测与识别等多项 OCR 不可或缺的步骤及实现方法。


为帮助更多企业自主开发票据识别 OCR 系统,才云 AI 中台 Caicloud Clever 即将上线票据结构化识别通用 Pipeline,利用平台级 AI 开发能力及在国内诸多大型企业积累的丰富落地经验,帮助用户灵活、自由地定制各环节模型,轻松实现票据种类的扩展,并快速在生产环境中落地。


为进一步服务用户,才云 Cabernet 团队下一步的工作将围绕两个方向展开:


设计通用 OCR 模型框架:通过规范化 OCR 模型的输入输出,统一训练、推理的流程和接口,实现在 Pipeline 中的即插即用;


开展对自动数据增强(Data Augmentation)的研究:在数据有限的情况下,低成本、更稳健地提升 OCR 的性能。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/6XcH_jfULfGZQCDdehQzfg


2020-03-02 21:59648

评论

发布
暂无评论
发现更多内容

解锁OpenHarmony技术日!年度盛会,即将揭幕!

OpenHarmony

大会 OpenHarmony

世界读书日:我想推荐这几本书

宇宙之一粟

书籍推荐 书单 4月月更

22道Java Spring Boot高频面试题

爱好编程进阶

Java 面试 后端开发

Java泛型机制详解;这些你都知道吗?

爱好编程进阶

Java 面试 后端开发

Java语言特点

爱好编程进阶

Java 面试 后端开发

kotlin 如何解决 java 开发痛点,让程序员 happier

爱好编程进阶

Java 面试 后端开发

MySQL-InnoDB-事务

爱好编程进阶

Java 面试 后端开发

[Day23]-[数据结构]手写LRU

方勇(gopher)

LeetCode LRU 数据结构算法

2021年秋招,薪资排行NO

爱好编程进阶

Java 面试 后端开发

RabbitMQ的高级特性和消息补偿机制

爱好编程进阶

Java 面试 后端开发

redis的五种数据类型

爱好编程进阶

Java 面试 后端开发

Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理

爱好编程进阶

Java 面试 后端开发

顶级元宇宙游戏Plato Farm,近期动作不断利好频频

小哈区块

自动化的艺术

俞凡

架构 大厂实践 PayPal

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day39

爱好编程进阶

Java 面试 后端开发

Shiro认证源码图文解析

爱好编程进阶

Java 面试 后端开发

在docker上编译openjdk8

程序员欣宸

Java JVM 4月月更

Plato Farm-以柏拉图为目标的农场元宇宙游戏

西柚子

Java单例模式实现,一次性学完整,面试加分项

爱好编程进阶

Java 面试 后端开发

JVM+分布式+算法

爱好编程进阶

Java 面试 后端开发

krpano全景之vtour文件夹和tour

爱好编程进阶

Java 面试 后端开发

Spring-Data-Jpa动态查询(Specification)

爱好编程进阶

Java 面试 后端开发

将新增和编辑的数据同步更新到列表

岛上码农

flutter ios开发 安卓开发 4月月更 跨平台开发

Java 线程池原理分析

爱好编程进阶

Java 面试 后端开发

AtomicIntegerArray源码分析与感悟

爱好编程进阶

Java 面试 后端开发

Choreographer全解析

爱好编程进阶

Java 面试 后端开发

Netty 核心源码解读 —— ServerBootstrap 篇

爱好编程进阶

Java 面试 后端开发

OpenFaaS实战之四:模板操作(template)

爱好编程进阶

Java 面试 后端开发

Spring Data ElasticSearch基本使用

爱好编程进阶

Java 面试 后端开发

Netty学习之旅------高仿Dubbo服务调用模型、私有协议实现、编码解码器使用实践

爱好编程进阶

Java 面试 后端开发

为什么才云能打进 500 强企业的财务部门?_语言 & 开发_才云科技_InfoQ精选文章