金融OCR领域实习日志(一)——OCR技术从0到1全面调研

一、OCR基础

任务要求:

image-20240124141837955

工作原理

OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相)检查纸上打印的字符,经过检测暗、亮的模式肯定其形状,而后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并经过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提升识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也随之产生。

一般技术流程为:

img

应用场景

根据OCR的应用场景而言,我们可以大致分成识别特定场景下的专用OCR以及识别多种场景下的通用OCR。就前者而言,证件识别以及车牌识别就是专用OCR的典型案例。针对特定场景进行设计、优化以达到最好的特定场景下的效果展示。那通用的OCR就是使用在更多、更复杂的场景下,拥有比较好的泛性。在这个过程中由于场景的不确定性,比如:图片背景极其丰富、亮度不均衡、光照不均衡、残缺遮挡、文字扭曲、字体多样等等问题,会带来极大的挑战。

**文档文字识别:**可以将图书馆、报社、博物馆、档案馆等的纸质版图书、报纸、杂志、历史文献档案资料等进行电子化管理,实现精准地保存文献资料。

**自然场景文字识别:**识别自然场景图像中的文字信息如车牌、广告干词、路牌等信息。对车辆进行识别可以实现停车场收费管理、交通流量控制指标测量、车辆定位、防盗、高速公路超速自动化监管等功能。

**票据文字识别:**可以对增值税发票、报销单、车票等不同格式的票据进行文字识别,可以避免财务人员手动输入大量票据信息,如今已广泛应用于财务管理、银行、金融等众多领域。

**证件识别:**可以快速识别身份证、银行卡、驾驶证等卡证类信息,将证件文字信息直接转换为可编辑文本,可以大大提高工作效率、减少人工成本、还可以实时进行相关人员的身份核验,以便安全管理。

以及金融领域具体应用场景:

**自动化文档处理:**通过OCR技术识别和提取文档关键信息后,利用关键信息进行文档分类、文档重命名、目录创建与归档工作

**发票识别:**文字检测+识别,根据发票内容信息特点提取所需的内容。

**合同分析:**通过OCR识别,智能结构化抽取合同关键信息,支持图片、PDF、word多种格式,可通过API接口传输至企业业务系统,协助企业工作人员完成自动填单、内容一致性检查,让合同审阅更高效。

★商业化方案及其优缺点

1.paddleOCR

飞桨首次开源文字识别模型套件PaddleOCR,目标是打造丰富、领先、实用的文本识别模型/工具库。最新开源的超轻量PP-OCRv3模型大小仅为16.2M。同时支持中英文识别;支持倾斜、竖排等多种方向文字识别;支持GPU、CPU预测;用户既可以通过PaddleHub很便捷的直接使用该超轻量模型,也可以使用PaddleOCR开源套件训练自己的超轻量模型。

  • 优点

    • 轻量模型,执行速度快

    • 支持pip直接安装

    • ocr识别效果好,效果基本可以比肩大厂收费ocr(非高精版)

    • 支持表格和方向识别

    • 支持补充训练且很方便

  • 缺点

    • 部分符号识别效果一般,如 '|‘识别为’1’

    • 对于部分加粗字体可能出现误识别,需要自己补充训练

    • 偶尔会出现部分内容丢失的情况

源文档配套教程:安装使用说明

2.CnOCR

CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包,支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖排文字的识别。自带了20+个训练好的识别模型,适用于不同应用场景,安装后即可直接使用。同时,CnOCR也提供简单的训练命令供使用者训练自己的模型。

  • 优点
    • 轻量模型,执行速度快,速度略快于paddle ocr
    • 支持pip直接安装
    • ocr识别效果好,识别效果比肩paddle ocr
    • 支持训练自己的模型
  • 缺点
    • 部分符号识别效果差
    • 部分场景下会出现空格丢失情况
    • 模型补充训练没有paddle ocr方便

源文档配套教程:安装使用说明

3.chinese_lite OCR

超轻量级中文 ocr,支持竖排文字识别, 支持 ncnn、mnn、tnn 推理, 模型大小仅4.7M。

  • 优点

    • 轻量模型,执行速度快,速度优于CnOCR和Paddle OCR

    • ocr识别效果尚可,优于一般开源模型,但比不上CnOCR和Paddle OCR

    • 作者提供了多种语言下的Demo

  • 缺点

    • 不支持pip安装
    • 文本位置识别略差
    • 不支持补充训练
    • 类手写字体识别效果一般
    • 部分场景下会出现误识别竖版文字的情况

例如:

姓     名: 张三
性     别: 男
年     龄: 19
户     籍: 北京误识别为 '姓性年户'

原文配套:安装使用说明

4.EasyOCR

EasyOCR是一个用于从图像中提取文本的python模块。它是一种通用的OCR,可以读取自然场景文本和文档中的密集文本。我们目前正在支持80多种语言并不断扩展。

  • 优点

    • 支持pip安装,但需要自己手动下载模型

    • ocr识别效果尚可,优于一般开源模型

  • 缺点

    • 速度很慢,900 * 1200像素图片平均需要30s左右

    • 不支持补充训练

5.Tesseract OCR

Tesserat OCR 是一款可在各种操作系统运行的 ,由Google开发的OCR引擎。它可以免费使用,并支持多种语言。虽然它没有一个官方的云工具,但是它可以集成到各种编程语言和应用程序中,因此可以很容易地创建自己的OCR云工具。

  • 优点

    • 支持补充训练
  • 缺点

    • 安装使用困难,不支持pip安装,官网下载配置教程(Tesseract-OCR 下载安装和使用)

    • 中文识别效果差

官方文档

6.Google Vision API

Google Cloud Vision API是谷歌提供的云端视觉分析服务,可以通过API调用来实现图像分析、OCR文字识别等功能。相比于Tesseract OCR,它具有更强大的图像分析能力和更便捷的使用方式。

总结

paddle ocr和cnocr,两者都能实现商业化精准度。其中cnocr执行速度快,速度略快于paddle ocr识别效果比肩paddle ocr,但paddle ocr模型补充训练方便

某些场景下,如小图片且对速度要求较高可以尝试使用chinese_lite ocr.

此外由部分stackoverflow用户反馈可知paddle和Tesseract的区别如下

  • 数据来源区别:Tesseract对印刷体扫描文档效果更好,paddle更适用于手写体等场景,但二者都支持训练

  • 速度区别:CPU情况下T优于P,但paddle在GPU支持下比Tesseract速度快出一大截

  • 预处理区别:如果不提供预处理(例如二值化),对RGB图像而言,paddle的效果优于Tesseract。在二值化情况下Tesseract的长文本效果通常优于paddle

  • 正确率&精度差别:T的表现略高于P,主要原因是paddle主要有单词和标点之间缺少空格的问题,但易于纠正,在后处理算法之后精度与Tesseract相当。且非90度旋转中表现良好。

  • 模型大小:P的轻量级模型大小为2MB左右,T则为23MB左右

  • 数据安全:……

某个国外帖子显示的数据:

image-20240124141600017

image-20240124142105432

技术难点

1.不同拍摄角度:指通过正拍、斜拍和图像反转等不同角度进行拍摄;

2.不同光线:指在亮光(可能会出现反光)、暗光和部分亮光部分暗光的情形下拍摄;

3.文字不清晰:指存在因污损、遮挡、折痕、印章、背景纹理等造成文字不清楚的样本;

4.边框不完整:主要指图片样本中物体(证件、票据、车牌等)边框没有完整出现在画面中;

5.其他特殊情况:主要指卡证类样本需考虑带有少数民族文字、生僻字,同时考虑到证件等用于高安全场景,对复印、扫描、屏幕翻拍、PS等样本进行告警;印刷体样本需考虑不同字号、不同排版方向,以及弯曲的文本。

评价指标

OCR评价指标包括字段粒度和字符粒度的识别效果评价指标。

  • 以字段为单位的统计和分析,适用于卡证类、票据类等结构化程度较高的OCR应用评测。
  • 以字符(文字和标点符号)为单位的统计和分析,适用于通用印刷体、手写体类非结构化数据的OCR应用评测。具体指标包括以下几个:

在这里插入图片描述

img

此外,从服务角度来说,识出率(准确率)平均耗时(处理速度)数据安全等也是衡量OCR系统好坏的指标之一

参考文档

csdn:OCR入门教程系列(一):OCR基础导论

OCR识别技术的应用:电子资料自动重命名与归档

csdn:6款开源中文OCR使用介绍(亲测效果)

使用Tesseract OCR、Google Cloud Vision API的区别

Stack Overflow:与Tesseract相比,PaddleOCR的性能如何

Put to Test: PaddleOCR Engine Example and Benchmark

csdn:PaddleOCR训练属于自己的模型详细教程(从打标,制作数据集,训练到应用,以行驶证识别为例)

利用OCR解决增值税发票内容文本识别:涉及paddleOCR,区域分割,视平面变换

Tesseract-OCR 下载安装和使用

Tesseract OCR 下载及安装教程 (中英文语言包)

python+Tesseract OCR实现截屏识别文字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年,这个铁饭碗一定不要错过!

说到铁饭碗这个话题,你会想到什么职业?有的人可能会想到公务员、老师、医生,有的人会想到企业家。 其实每个人对于铁饭碗的定义都不同,为什么父辈的人觉得只要当了公职人员就是可以吃一辈子的铁饭碗?因为他们生活中接触…

婴儿营养之道:新生儿补充蛋白质的关键

引言: 蛋白质是新生儿生长发育所必需的重要营养物质,对于肌肉、组织和免疫系统的发展至关重要。在新生儿期间,适量的蛋白质摄入有助于建立健康的身体基础,但在补充时需谨慎选择和控制。本文将深入探讨蛋白质的作用、补充时机&…

容器安全工具

容器安全工具是用于保护和监控容器环境安全的工具。它们提供了一系列功能,包括容器镜像的漏洞扫描、运行时监控、事件日志记录、访问控制、运行权限管理等。以下是一些常见的容器安全工具: 1. Docker Bench Security:用于检查Docker环境配置的安全性,提供一些最佳实践建议…

Hadoop基本概论

目录 一、大数据概论 1.大数据的概念 2.大数据的特点 3.大数据应用场景 二、Hadoop概述 1.Hadoop定义 2.Hadoop发展历史 3.Hadoop发行版本 4.Hadoop优势 5.Hadoop1.x/2.x/3.x 6.HDFS架构 7.Yarn架构 8.MapReduce架构 9.大数据技术生态体系 一、大数据概论 1.大数…

GitLab入门指南:上传与下载操作一网打尽

GitLab简介: GitLab是一个基于Git的开源仓库管理系统,提供了一个Web界面的Git存储库管理器,并集成了多种开发工具的功能,如代码审查、问题跟踪、持续集成和持续部署等。GitLab可以在本地服务器上部署,也可以使用其提供…

单核QPS近6000S,陌陌基于OceanBase的持久化缓存探索与实践

挚文集团于 2011 年 8 月推出了陌陌,这款立足地理位置服务的开放式移动视频社交应用在中国社交平台领域内独树一帜。陌陌和探探作为陌生人社交领域的主流应用,涵盖了多种核心业务模块,包括直播服务、附近动态功能、即时通讯(IM&am…

计算机网络 第4章(网络层)

系列文章目录 计算机网络 第1章(概述) 计算机网络 第2章(物理层) 计算机网络 第3章(数据链路层) 计算机网络 第4章(网络层) 文章目录 系列文章目录1. 概述1.1 简介1.2 总结 2. 网络…

大数据信用查询系统能查到什么呢?

在金融助贷行业,大数据有叫大数据信用或者网贷大数据,在申贷的时候,想必大多数人都有听说过,很多人因为大数据不良的原因申贷被拒过,那大数据信用查询系统能查到什么呢?本文就简单为大家总结几点大数据信用查询的内容…

JavaEE之多线程编程:5. 死锁(详解!!!)

文章目录 一、死锁是什么二、关于死锁的三种形式三、如何避免死锁 一、死锁是什么 死锁是这样的一种情形:多个同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 【举个例子理解死…

Netty Reactor 模式解析

目录 Reactor 模式 具体流程 配置 初始化 NioEventLoop ServerBootstrapAcceptor 分发 Reactor 模式 在刚学 Netty 的时候,我们肯定都很熟悉下面这张图,它就是单Reactor多线程模型。 在写Netty 服务端代码的时候,下面…

如何使用docker实现越权漏洞-webug靶场搭建(超详解)

越权漏洞-webug靶场搭建 1.打开docker systemctl start docker 2.查找webug docker search webug 3.拉取docker.io/area39/webug 镜像 docker pull docker.io/area39/webug 4.查看镜像 docker images 5.创建容器 docker run -d -p 8080:80 --name webug docker.io/area39/we…

Database history tablesupgraded

zabbix升级到6之后,配置安装完成会有一个红色输出,但是不影响zabbix使用,出于强迫症,找到了该问题的解决方法。 Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to nume…

Qt5编译qextserialport(Qt5.14.2+VS2017)

1、qextserialport库下载 (1)github GitHub - qextserialport/qextserialport: Automatically exported from code.google.com/p/qextserialport (2) code.google https://code.google.com/archive/p/qextserialport/downloads 我下载的是最新版qextserialport-1.2rc.zip ​…

手拉手JavaFX UI控件与springboot3+FX桌面开发

目录 javaFx文本 javaFX颜色 字体 Label标签 Button按钮 //按钮单击事件 鼠标、键盘事件 //(鼠标)双击事件 //键盘事件 单选按钮RadioButton 快捷键、键盘事件 CheckBox复选框 ChoiceBox选择框 Text文本 TextField(输入框)、TextArea文本域 //过滤 (传入一个参数&a…

短剧小程序分销系统开发:创新与机遇的融合

一、引言 随着移动互联网的快速发展,短剧作为一种新兴的娱乐形式,正逐渐成为人们生活中的一部分。短剧小程序分销系统的开发,不仅为短剧的传播提供了新的渠道,同时也为相关产业带来了新的商业机会。本文将探讨短剧小程序分销系统…

web架构师编辑器内容-图层拖动排序功能的开发

新的学习方法 用手写简单方法实现一个功能然后用比较成熟的第三方解决方案即能学习原理又能学习第三方库的使用 从两个DEMO开始 Vue Draggable Next: Vue Draggable NextReact Sortable HOC: React Sortable HOC 列表排序的三个阶段 拖动开始(dragstart&#x…

[BJDCTF2020]ZJCTF,不过如此(特详解)

php特性 1.先看代码,提示了next.php,绕过题目的要求去回显next.php 2.可以看到要求存在text内容而且text内容强等于后面的字符串,而且先通过这个if才能执行下面的file参数。 3.看到用的是file_get_contents()函数打开text。想到用data://协…

缓存高并发问题

Redis 做缓存虽减轻了 DBMS 的压力,减小了 RT,但在高并发情况下也是可能会出现各种问题的。 缓存穿透 当用户访问的数据既不在缓存也不在数据库中时,就会导致每个用户查询都会“穿透”缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-后台管理主页面实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

程序员手把手教你参与开源!拿捏!

一、前言 有一些同学提问,希望在自己的简历上增加一些有含金量的项目经历,最好能够去参与一些开源项目的开发,但由于对一个庞大的开源项目缺乏认知,难以着手。同时也担心自己能力不足,不知道自己写的代码是否会被接纳。…