计算机视觉对扫描文件分类 OCR

通过计算机视觉对扫描文件分类

一种解决扫描文档分类问题的深度学习方法

在数字经济时代, 银行、保险、治理、医疗、法律等部门仍在处理各种手写票据和扫描文件。在业务生命周期的后期, 手动维护和分类这些文档变得非常繁琐。

对这些非机密文档进行简单而有意义的自动化处理,将使维护和利用信息变得容易的多,并显著减少手工工作。
在这里插入图片描述

本案例研究的目的是开发一个基于深度学习的解决方案,可以自动分类的文件

Data:
在这个案例研究中,我们将使用RVL-CDIP (Ryerson Vision Lab Complex Document Information Processing)数据集,该数据集包含16个类中的400,000张灰度图像,每个类包含25,000张图像。有32万张训练图像、4万张验证图像和4万张测试图像。图像的大小,使他们的最大尺寸不超过1000像素。这个数据集的大小超过200 GB。

Business-ML问题映射:
我们可以将业务问题映射为一个多类分类问题。当前的数据集中有16个类,我们需要根据被扫描文档的像素值来预测文档的类,这使得问题更加困难。但是等等,**为什么我们不能使用OCR来提取文本并应用NLP技术呢?**是的,我们对这个想法也很兴奋,但是低质量的扫描导致了文本提取的低质量。在实际的业务场景中,我们也无法控制扫描的质量,因此依赖OCR的模型可能会在适当的预处理后泛化能力较差。

KPI和业务约束:
数据集相当平衡。因此,我们选择准确性作为主要指标,微平均F1分数作为次要指标来惩罚分类错误的数据点。我们还使用了混淆度量来验证模型的性能。有一个中等的延迟需求,没有特定的可解释性需求。

我们能从文档的像素强度和大小中得到任何信息吗?

让我们尝试使用箱形图来可视化文档的平均像素强度和大小
在这里插入图片描述
从box plot中我们可以观察到,某些类型的扫描文档的大小与其他类型的非常不同,但是也存在重叠。例如,类13和类9的文件大小差别很大,但是类9的大小与类4和类6、类7重叠。
在这里插入图片描述
我们可以观察到75%的案例中,class 4的平均像素强度在160-230像素之间。但是对于大约50%的情况,它也与类6的平均像素值重叠。对于其他类,平均像素值重叠。

分析方法

为了解决这个问题,我们对扩充数据进行卷积神经网络(CNN)训练。我们尝试在有和没有数据扩充的情况下训练模型,两种结果进行比较。

在这里插入图片描述
太棒了!但是如何确定网络架构呢?你是如何训练网络的,因为数据不能一次放入内存?

从零开始训练神经网络需要大量的时间和集中计算资源,为了避免这种情况,我们采用了转移学习。我们从在ImageNet数据集上训练的预训练网络的权值开始,然后在我们的数据集上重新训练。针对这类问题的当前SOTA模型使用域内和域内转移学习,其中图像被分成四个部分:页眉、页脚、左身体和右身体。首先利用预先训练好的VGG16模型对整个图像(域内)进行训练,然后利用该模型对部分图像(域内)进行训练。

在这个实验中,我们采用了一种稍微不同的方法。我们没有使用VGG16进行域内转移学习,而是训练了两个并行模型VGG16和InceptionResNetV2,并使用它们的堆栈作为我们的最终模型。我们的假设是,由于这两种模型的架构不同,它们会学习图像的不同方面,将它们叠加起来会得到很好的泛化效果。但是我们如何选择这些模型呢?这基本上来自交叉验证的结果。我们尝试了各种网络架构,如VGG16、VGG19、DenseNet、ResNet、InceptionNet,并选出了最好的两个。

我们使用keras的ImageDataGenerator类对训练数据进行预处理和加载,而不是在内存中加载整个数据。

在这里插入图片描述
好的, 但是如何处理超参数呢?

对于任何CNN,超参数是:学习率,池大小,网络大小,批量大小,优化器的选择,正则化,输入大小等。

学习率对神经网络的收敛性有重要影响。在深度学习问题中使用的损失函数是非凸的,这意味着在存在多个局部极小值和鞍点的情况下,寻找全局极小值不是一件容易的事情。如果学习率太低,它会慢慢收敛;如果学习率太高,它会开始振荡。在这个案例研究中,我们使用了一种叫做“循环学习速率”的技术,其目的是训练神经网络,使每个训练批次的学习速率以循环方式变化。

在这里插入图片描述
但为什么会这样呢? 在CLR中,我们在一个阈值内改变学习率。周期性的高学习率有助于克服它的鞍点或局部极小值。

对于其他超参数,我们开发了自定义实用程序函数来检查哪种配置工作得更好。假设10个epoch之后,准确率是47%我们将使用此模型作为测试基线,并使用实用工具函数检查哪个配置集(即batch_size/optimizer/learning_rate)将在以后的epochs带来更高的准确性

结果

我们使用VGG16模型获得了90.7%的准确率,使用InceptionResNetV2获得了88%的准确率。上述两种模型的比例叠加模型训练正确率为97%,测试正确率为91.45%。

confusion matrix
precision matrix

you can find the full implementation here.

Citation:

  1. A. W. Harley, A. Ufkes, K. G. Derpanis, “Evaluation of Deep Convolutional Nets for Document Image Classification and Retrieval,” in ICDAR, 2015.
  2. https://arxiv.org/abs/1506.01186
  3. https://www.researchgate.net/publication/332948719_Segmentation_of_Scanned_Documents_Using_Deep-Learning_Approach

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

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

相关文章

笑话生成器_爸爸笑话发生器

笑话生成器(If you’re just here for the generated jokes, scroll down to the bottom!)(如果您只是在这里生成笑话,请向下滚动到底部!) I thought: what is super easy to build, yet would still get an approving chuckle if someone found it on …

机器学习实践二 -多分类和神经网络

本次练习的任务是使用逻辑归回和神经网络进行识别手写数字(form 0 to 9, 自动手写数字问题已经应用非常广泛,比如邮编识别。 使用逻辑回归进行多分类分类 练习2 中的logistic 回归实现了二分类分类问题,现在将进行多分类,one vs…

Hadoop 倒排索引

倒排索引是文档检索系统中最常用的数据结构,被广泛地应用于全文搜索引擎。它主要是用来存储某个单词(或词组)在一个文档或一组文档中存储位置的映射,即提供了一种根据内容来查找文档的方式。由于不是根据文档来确定文档所包含的内…

koa2异常处理_读 koa2 源码后的一些思考与实践

koa2的特点优势什么是 koa2Nodejs官方api支持的都是callback形式的异步编程模型。问题:callback嵌套问题koa2 是由 Express原班人马打造的,是现在比较流行的基于Node.js平台的web开发框架,Koa 把 Express 中内置的 router、view 等功能都移除…

上凸包和下凸包_使用凸包聚类

上凸包和下凸包I recently came across the article titled High-dimensional data clustering by using local affine/convex hulls by HakanCevikalp in Pattern Recognition Letters. It proposes a novel algorithm to cluster high-dimensional data using local affine/c…

幸运三角形 南阳acm491(dfs)

幸运三角形 时间限制:1000 ms | 内存限制:65535 KB 难度:3描述话说有这么一个图形,只有两种符号组成(‘’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置…

决策树有框架吗_决策框架

决策树有框架吗In a previous post, I mentioned that thinking exhaustively is exhausting! Volatility and uncertainty are ever present and must be factored into our decision making — yet, we often don’t have the time or data to properly account for it.在上一…

8 一点就消失_消失的莉莉安(26)

文|明鸢Hi,中午好,我是暖叔今天是免费连载《消失的莉莉安》第26章消失的莉莉安▶▶往期链接:▼ 向下滑动阅读1:“消失的莉莉安(1)”2: 消失的莉莉安(2)3:“消失的莉莉安(3)”4:“消失的莉莉安…

mysql那本书适合初学者_3本书适合初学者

mysql那本书适合初学者为什么要书籍? (Why Books?) The internet is a treasure-trove of information on a variety of topics. Whether you want to learn guitar through Youtube videos or how to change a tire when you are stuck on the side of the road, …

语音对话系统的设计要点与多轮对话的重要性

这是阿拉灯神丁Vicky的第 008 篇文章就从最近短视频平台的大妈与机器人快宝的聊天说起吧。某银行内,一位阿姨因等待办理业务的时间太长,与快宝机器人展开了一场来自灵魂的对话。对于银行工作人员的不满,大妈向快宝说道:“你们的工…

c读取txt文件内容并建立一个链表_C++链表实现学生信息管理系统

可以增删查改&#xff0c;使用链表存储&#xff0c;支持排序以及文件存储及数据读取&#xff0c;基本可以应付期末大作业&#xff08;狗头&#xff09; 界面为源代码为一个main.cpp和三个头文件&#xff0c;具体为 main.cpp#include <iostream> #include <fstream>…

阎焱多少身价_2020年,数据科学家的身价是多少?

阎焱多少身价Photo by Christine Roy on Unsplash克里斯汀罗伊 ( Christine Roy) 摄于Unsplash Although we find ourselves in unprecedented times of uncertainty, current events have shown just how valuable the fields of Data Science and Computer Science truly are…

单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作

Hello大家好&#xff0c;我是帮帮。今天跟大家分享一张Excel多功能进销存管理套表&#xff0c;自动库存&#xff0c;单据打印&#xff0c;查询统算一键操作。为了让大家能更稳定的下载模板&#xff0c;我们又开通了全新下载方式(见文章末尾)&#xff0c;以便大家可以轻松获得免…

卡尔曼滤波滤波方程_了解卡尔曼滤波器及其方程

卡尔曼滤波滤波方程Before getting into what a Kalman filter is or what it does, let’s first do an exercise. Open the google maps application on your phone and check your device’s current location.在了解什么是卡尔曼滤波器或其功能之前&#xff0c;我们先做一个…

Candidate sampling:NCE loss和negative sample

在工作中用到了类似于negative sample的方法&#xff0c;才发现我其实并不了解candidate sampling。于是看了一些相关资料&#xff0c;在此简单总结一些相关内容。 主要内容来自tensorflow的candidate_sampling和卡耐基梅隆大学一个学生写的一份notesNotes on Noise Contrastiv…

golang key map 所有_Map的底层实现 为什么遍历Map总是乱序的

Golang中Map的底层结构其实提到Map&#xff0c;一般想到的底层实现就是哈希表&#xff0c;哈希表的结构主要是Hashcode 数组。存储kv时&#xff0c;首先将k通过hashcode后对数组长度取余&#xff0c;决定需要放入的数组的index当数组对应的index已有元素时&#xff0c;此时产生…

朴素贝叶斯分类器 文本分类_构建灾难响应的文本分类器

朴素贝叶斯分类器 文本分类背景 (Background) Following a disaster, typically you will get millions and millions of communications, either direct or via social media, right at the time when disaster response organizations have the least capacity to filter and…

第二轮冲次会议第六次

今天早上八点我们进行了站立会议 此次站立会议我们开了30分钟 参加会议的人员&#xff1a; 黄睿麒 侯熙磊 会议内容&#xff1a;我们今天讨论了如何分离界面&#xff0c;是在显示上进行限制从而达到不同引用展现不同便签信息&#xff0c;还是单独开一个界面从而实现显示不同界面…

markdown 链接跳转到标题_我是如何使用 Vim 高效率写 Markdown 的

本文仅适合于对vim有一定了解的人阅读&#xff0c;没有了解的人可以看看文中的视频我使用 neovim 代替 vim &#xff0c;有些插件是 neovim 独占&#xff0c; neovim 和 vim 的区别请自行 google系统: Manjaro(Linux)前言之前我一直使用的是 vscode 和 typora 作为 markdown 编…

Seaborn:Python

Seaborn is a data visualization library built on top of matplotlib and closely integrated with pandas data structures in Python. Visualization is the central part of Seaborn which helps in exploration and understanding of data.Seaborn是建立在matplotlib之上…