首页 > 其他分享 >OCR深度实践系列(四):文本识别

OCR深度实践系列(四):文本识别

时间:2023-08-04 18:33:43浏览次数:37  
标签:识别 OCR 训练 模型 文本 txt

https://zhuanlan.zhihu.com/p/334340972

(一)图像预处理

(二)数据生成

(三)文本检测

最近在攻关法律领域的类案检索系统,这几天正好忙完了,得空继续写《OCR深度实践系列》这一专题的文章。前面三章依次介绍了图像预处理、数据生成以及文本检测三个模块,本章将介绍第四个关键模块:文本识别。

本文项目地址:https://github.com/Vincent131499/Chinese-OCR3/tree/master/text_recognize

经过文字检测之后我们就可以获得文字区域的位置,此时就可以借助各类文字识别算法来转译这些文字区域的内容。在以前的OCR任务中,识别过程分为两步:单字分割和分类任务,即:首先利用投影法将一连串文字切割出单个字体然后再送入CNN里面进行文字分类。而现在流行的基于深度学习的端到端文字识别方法不需要文字切割这个环节,它将文字识别转换成序列学习问题,虽然输入图像尺度和文本长度不同,但经过特征网络处理后就可以对整个文本图像进行识别(文字切割融入到深度学习中)。

近年来随着深度学习的迅猛发展,针对**场景文字识别(Scene Text Recognition,STR)**逐渐形成两种主流方法:一种是基于CTC的方法,典型代表是CRNN,即CRNN-OCR;另一种是基于Attention的方法,即Attention-OCR。其实这两类方法主要区别在于最后的输出层,即如何将网络学习到的序列特征信息转化为最终的识别结果。这两类方法在特征学习阶段都采用了CNN+RNN的网络结构,而CRNN-OCR在对齐时采用的是CTC算法,而Attention-OCR采用的是attention机制。

本文作为入门篇,主要介绍应用较为广泛的经典算法模型,包括CRNN、RATE以及端到端的两个模型。

1.CRNN模型

CRNN(Convolutional Recurrent Neural Network)[1]是目前最为流行的文本识别模型之一,可以识别不定长文本序列。如下图所示,网络结构包含三个部分,从下到上依次为:

  • 卷积层:使用CNN从输入图像中提取特征序列;
  • BiLSTM序列层:用BiLSTM将特征向量进行融合以提取字符序列的上下文特征,然后得到每列特征的概率分布;
  • 转录层:使用CTC把从BiLSTM获取的标签分布通过去重整合等操作转换成最终的识别结果。

2.RARE模型

RARE(Robust text renognizer with Automatic Rectification)模型[2]在识别变形的图像文本时效果很好。网络流程如下图所示,针对输入图像,模型首先对其进行空间变换网络处理达到矫正的目的,随后将矫正过的图像送入序列识别网络中得到文本预测结果。

其中,空间变换网络结构如下图所示,内部包括定位网络、网格生成器、采样器三个子结构。经过训练后,它可以根据输入图像的特征图动态地产生空间变换网格,然后采样器根据变换网格核函数从原始图像中采样获得一个矩形的文本图像。RARE中支持一种称为TPS(thin-plate splines)的空间变换,从而能够比较准确地识别透视变换过的文本、以及弯曲的文本。

3.端到端模型

对于现有的字符识别任务来说,若字符区域不充满整张图片,那么字符识别的效果将会出现灾难性的下滑,因此仍然需要字符检测任务作为字符识别的前置任务,检测结果的好坏直接决定识别结果的好坏。但是检测模型与识别模型是两个独立的模型,因此计算量和消耗的时间会大幅增加。近年来,有学者尝试将两个任务合并到一起实现,这不仅可以使多任务模型相互补足,也能使计算量得到一定程度的降低。

(1)FOTS Rotation-Sensitive Regression

FOTS(Fast Oriented Text Spotting)是图像文本检测与识别同步训练、端到端可学习的网络模型。检测和识别任务共享卷积特征层,既节省了计算时间,也比两阶段训练方式学习到更多图像特征。引入了旋转敏感区域,可以从卷积特征图中产生定向得到文本区域,从而支持倾斜文本的识别。

(2)STN-OCR模型

STN-OCR同样是端到端的集成图像文本检测和识别的可学习模型。模型架构如下图所示,检测部分嵌入了一个空间变换网络(STN)来对原始输入图像进行仿射(affine)变换。利用这个空间变换网络,可以对检测到的多个文本块分别执行旋转、缩放和倾斜等图形矫正动作,进而促进后面的文本识别取得更好的识别精度。在训练上STN-OCR属于半监督学习方法,只需要提供文本内容标注,而不要求文本定位信息。作者也提到,如果从头开始训练则网络收敛速度较慢,因此建议渐进地增加训练难度。STN-OCR已经开放了工程源代码和预训练模型。

4.实战演示

接下来本文将以经典的CRNN模型为例讲解文本识别的训练-推理实战演示。

该项目位于Chinese-OCR3/text_recognize/crnn_chinese。

(1)数据集

step1:下载训练数据(下载地址:链接:https://pan.baidu.com/s/16oM4qlWu-SUCu8A-b_PDug 提取码:phhy )

step2:下载标签数据(下载地址:链接:https://pan.baidu.com/s/14gagbl60tyC2w3qsaRSAQw 提取码:n52k)

step3:修改配置文件lib/config/360CC_config.yaml,将训练数据集的根目录换成本地数据集的路径

DATASET
	ROOT: 'to/your/images/path'

step4:将下载的标签数据中的char_std_5900.txt放入lib/dataset/txt/

step5:将下载的标签数据中的train.txt和test.txt放入lib/dataset/txt/

数据简介:

  • 共约364万张图片,按照99:1划分成训练集和验证集。
  • 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成
  • 包含汉字、英文字母、数字和标点共5990个字符(字符集合:https://github.com/YCG09/chinese_ocr/blob/master/train/char_std_5990.txt )
  • 每个样本固定10个字符,字符随机截取自语料库中的句子
  • 图片分辨率统一为280x32

(2)训练

训练命令:

python train.py --cfg lib/config/360CC_config.yaml

查看训练过程的loss变化:

cd output/360CC/crnn/xxxx-xx-xx-xx-xx/
tensorboard --logdir log

注意:支持定长训练。但是可以修改数据加载器以支持随机长度训练。

(3)推理

运行命令:

python demo.py --image_path readme_images/test.png --checkpoint output/checkpoints/mixed_second_finetune_acc_97P7.pth

(4)自定义数据集

若想使用自己的数据来训练一个CRNN文本识别模型,只需更改配置文件即可。

step1:编辑配置文件lib/config/OWN_config.yaml,将训练数据集的根目录换成本地数据集的路径

DATASET:
      ROOT: 'to/your/images/path'

step2:将训练集train_own.txt和测试集test_own.txt放入lib/dataset/txt/

数据集样例:test_own.txt

20456343_4045240981.jpg 你好啊!祖国!
20457281_3395886438.jpg 晚安啊!世界!
...

随后就可以继续上面的训练和推理。

 

标签:识别,OCR,训练,模型,文本,txt
From: https://www.cnblogs.com/ceshi2016/p/17606716.html

相关文章

  • 检测、跟踪、行为识别All-In-One!产业级行人分析系统重磅开源!
    行人检测、行为分析、跨镜跟踪、属性识别等能力在工业、安防、金融、能源等行业中可谓是核心财富密码!一套综合目标检测、跟踪、关键点检测等能力的开源实时行人分析工具,就是把握这些高价值场景的关键!PP-Human多功能全景图说来容易,但它真的切实可用,需要企业真实场景数据打磨优化,拥有......
  • 重磅开源:超轻量3.5M中英文OCR模型!
     Datawhale推荐 开源框架:超轻量OCR模型-PaddleOCR导读不得不说,2020年绝对是OCR开源界的丰收年,各种开源repo横空出世,一次又一次的刷新开源界的baseline,今天再次给大家种个草,介绍今年OCR开源领域“真.良心之作”百度飞桨PaddleOCR。先看下飞桨文字识别套件PaddleOCR自今年年中开源......
  • 解决方案 | PPT右键复制文本时右键粘贴选项按钮为空白
    1、问题 2、解决方法随便复制一些文字,不要采用CRTL+V,而是采用右键粘贴方法到ppt中,选择纯文本的“A”符号。 之后再使用CTRL+C复制,CTRL+V即正常。(好像只能本次解决) 3、参考链接 https://answers.microsoft.com/zh-hans/msoffice/forum/all/ppt%E7%B2%98%E8%B4%B4%......
  • 牵手科瑞物业,合合信息智能文字识别技术助力企业沉淀数据资产
    名片是商务场景中信息传递的重要载体。比起传统的纸质名片,可动态化呈现个人及企业信息,洞察访客偏好的数字名片已成为企业对外展示、拓展客户的重要工具。近期,合合信息旗下名片全能王与科瑞物业达成合作。通过推动企业数字名片在科瑞物业各层级体系中的应用,助力企业沉淀数据资产,构......
  • HTTP隧道识别与防御:​ 机器学习的解决方案
    HTTP隧道识别与防御:机器学习的解决方案随着互联网的快速发展,HTTP代理爬虫已成为数据采集的重要工具。然而,随之而来的是恶意爬虫对网络安全和数据隐私的威胁。为了更好地保护网络环境和用户数据,我们进行了基于机器学习的HTTP代理爬虫识别与防御的研究。以增强对HTTP代理爬虫的识别和......
  • 识别图片验证码
    一个demoimportddddocrocr=ddddocr.DdddOcr()#简单的图片数字英文识别withopen('code.jpg','rb')asf:img_bytes=f.read()res=ocr.classification(img_bytes)print(res)可能出现的问题解决pipinstallPillow==9.5.0......
  • S-H-ESD——就是先识别出趋势(中位数),然后做残差,利用残差看看正态分布的偏离点
    基于统计的异常检测方法S-H-ESD[twitter] 前10离群点中第三个点检测为异常,则至少有3个异常点S-ESD考虑ESD有如下两个限制:一是对于具有季节性的时间序列异常不能很好的识别,下图1中很多周期性变化的点并非异常点;二是多峰分布的数据点,一些低峰异常数据点不能被识别出来,如图2。图1时......
  • 运动目标识别
    摄像头调用VideoCapture视频读取保存VideoWriter帧差法帧间差分法是通过对视频中相邻两帧图像做差分运算来标记运动物体的方法当视频中存在移动物体的时候,相邻帧(或相邻三帧)之间在灰度上会有差别求取两帧图像灰度差的绝对值,则静止的物体在差值图像上表......
  • Excel中文本型数字转换为数值型数字的方法
    背景工作中经常遇到需要将Excel中的内容进行求和或者其他计算,但是由于格式为文本,无法进行计算和求和。单元格的左上角都有绿色小三角,且用自动求和公式计算无法计算结果,显示为0,说明单元格格式为文本。1、直接将文本转化成数字需要转换的数据,左上角会出现黄色感叹号,点击,并选择......
  • 富文本编辑器 图片粘贴上传,实现图文粘贴,图片自动上传
    ​ 由于工作需要必须将word文档内容粘贴到编辑器中使用但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解......