ICPR2018阿里巴巴图片文本块OCR识别数据集和CRNN+EAST方案

摘要:

合集:AI案例-CV-传媒
数据集:ICPR2018阿里巴巴图片文本块OCR识别数据集、通用中文语料库
数据集价值:图片文字识别(OCR)
解决方案:Tensorflow1.x、CRNN(Convolutional Recurrent Neural Network)文字识别模型和EAST(Efficient and Accurate Scene Text Detector)文字检测模型

一、赛题1描述

赛题:图片文本块检测
主办方:科大讯飞
主页:https://challenge.xfyun.cn/topic/info?type=image-text&ch=dv4x7bj

图片文本块检测是指检测出图片中完整且位置独立的文本块,并输出对应位置的任务,属于图片文档分析(Document Image Analysis,包括文档版面分析、表格检测等)中的任务之一,近年来业界相关的工作有 LayoutParser、LayoutLM、LayoutLM2等。

图片文本块检测具有广泛的应用价值,例如:在生活、工作拍照翻译场景中,如果直接利用行粒度的识别结果做下游的翻译任务,会出现单行信息不完整,导致翻译结果信息缺失。

二、赛题2描述

赛题:网络图像的文本检测
主办方:ICPR (International Conference on Pattern Recognition)学术会议
主页:https://tianchi.aliyun.com/competition/entrance/231651/introduction

在互联网世界中,图片是传递信息的重要媒介。特别是电子商务,社交,搜索等领域,每天都有数以亿兆级别的图像在传播。图片文字识别(OCR)在商业领域有重要的应用价值,是数据信息化和线上线下打通的基础,也是学术界的研究热点。然而,研究领域尚没有基于网络图片的、以中文为主的OCR数据集。本竞赛将公开基于网络图片的中英混合数据集,该数据集数据量充分,涵盖几十种字体,几个到几百像素字号,多种版式,较多干扰背景。期待学术界可以在本数据集上作深入的研究,工业界可以藉此发展基于OCR的图片管控,搜索,信息录入等AI领域的工作。

任务描述

网络图像的文本检测:检测并定位图像中的文字行位置,允许使用其它数据集或者生成数据, 允许Fine-tuning 模型或者其他模型。入围团队提交报告中须对额外使用的数据集,或非本数据集训练出的模型做出说明。

训练集:

对于每个图像,只需要用[图像文件名] .txt里的坐标信息。即: X1,Y1,X2,Y2,X3,Y3,X4,Y4。

测试集:

输入:整图

输出:对于每一个检测到的文本框,按行将其顶点坐标输出到对应的[图像文件名] .txt中。

三、数据集内容

ICPR2018图片文本块OCR识别数据集

阿里巴巴“图像和美”团队联合华南理工大学共同举办ICPR MTWI 2018 挑战赛,本竞赛将公开基于网络图片的中英数据集,该数据集数据量充分,涵盖数十种字体,几个到几百像素字号,多种版式,较多干扰背景。每一张图像或者包含复杂排版,或者包含密集的小文本或多语言文本,或者包含水印,这对文本检测和识别均提出了挑战。对于每一张图像,都会有一个相应的文本文件(.txt)(UTF-8编码与名称:[图像文件名] .txt)。文本文件是一个逗号分隔的文件,其中每行对应于图像中的一个文本串,并具有以下格式:

X1,Y1,X2,Y2,X3,Y3,X4,Y4,“文本”

其中X1,Y1,Y2,X2,X3,X4,Y3,Y4分别代表文本的外接四边形四个顶点坐标。而“文本”是四边形包含的实际文本内容。但对于除了中文,英文以外的其它语言以及看不清的字符并未标注文本内容,而是以“###”代替。

样例:TB1.FLLXXXXXbCXpXXunYpLFXX.txt

407.6,413.6,407.6,425.6,598.0,411.2,600.4,397.6,WERETHEREISAMLLTHEREISAWAY
436.4,428.0,435.6,440.0,575.6,428.0,574.0,416.8,BDSINESSBEFDREFPLAURE
423.6,450.4,423.6,493.6,500.4,493.6,500.4,450.4,Best
518.8,448.0,518.8,495.2,616.4,495.2,616.4,448.0,skace
466.0,516.8,465.2,528.8,560.4,518.4,559.6,506.4,CAREKILEDACAT
422.8,540.0,422.8,550.4,610.0,530.4,606.8,521.6,BROSOFAEEATHERLOCKOGJHEN
582.8,678.4,582.8,713.6,746.8,713.6,746.8,678.4,超值热卖
124.4,608.0,122.0,616.8,222.0,638.4,226.8,627.2,###
129.2,594.4,128.4,600.8,189.2,612.8,193.2,603.2,###
187.6,552.8,170.0,575.2,242.0,595.2,254.8,574.4,skace
159.6,520.8,157.2,530.4,230.8,542.4,236.4,532.0,BEFDREFPLAURE
152.4,507.2,149.2,515.2,255.6,532.8,259.6,522.4,EREISAMLLTHEREISAWAY
138.0,517.6,138.0,526.4,155.6,530.4,158.0,519.2,###
6.8,192.8,54.8,237.6,246.8,43.2,200.4,1.6,特价包邮
134.29,552.0,132.0,572.57,165.14,569.14,165.14,540.57,###

数据集中的图片样例:

通用中文语料库

通过截取文本和随机生成,字体经过了大小、灰度、模糊、透视等变化,共360万张图片,图像分辨率w*h为280×32,涵盖了汉字、标点、英文、数字共5990个字符。

四、非商业版OCR解决方案样例

源码baseline.ipynb使用商业版PaddleOCR解决方案。以下讨论是非商业版OCR解决方案。

工作原理

CRNN(Convolutional Recurrent Neural Network)文字识别模型和EAST(Efficient and Accurate Scene Text Detector)文字检测模型是OCR(光学字符识别)任务中常用的两个模型。它们通常结合使用,以实现从图像中检测并识别文字的功能。EAST模型擅长检测图像中的文本区域,而CRNN模型则专注于识别这些区域内的文字。

CRNN模型通常由卷积层、循环层和转录层组成。卷积层用于提取图像特征,循环层(如LSTM)用于捕捉序列中的上下文信息,转录层则将循环层的输出转换为最终的文本标签。CRNN模型适用于各种文字识别任务,包括印刷体文本、手写文本等。它能够处理任意长度的文本序列,且不受输入图像中字符大小的影响。

EAST模型采用全卷积网络结构,通过特征提取层、特征融合层和输出层实现端到端的文本检测。它能够直接输出文本边界框,支持多尺度特征融合和旋转边界框检测。EAST模型在实时文本检测、视频字幕提取等任务中表现出色,其高效性和准确性得到了广泛认可。

开发环境

python3.6 + tensorflow1.14.0 + keras2.1.6
# 或使用pip环境复制
pip install -r environment.txt

代码和数据文件结构

解压data.zip到目录:data。解压Synthetic-Chinese-String-Dataset.rar到目录:data/crnn_data/images。解压[update] ICPR_text_train_part1_20180316.zip和ICPR_text_train_part2_20180313.zip中的图片和文件文件到目录: data/icpr/image_10000和data/icpr/txt_10000。

- crnn                    # crnn文字识别模型
|-- predict_crnn.py       # 预测文字,衔接east模型,裁剪及文字旋转
|-- data                 # 数据集预处理
|-- net                   # crnn网络实现及训练,char_std_5990.txt文字对应标签序
|-- model                 # 模型weights

- east                   # east文字检测模型
|-- predict_east.py       # 预测文字位置,画框
|-- data                 # images数据集预处理
|-- net                   # east网络实现及训练,network/loss/training
|-- model                 # 模型weights

- predict.py             # 实现end-to-end预测,模型衔接

crnn网络实现及训练输入文件配置信息:
# crnn\net\network.py
char_file = '../data/crnn_data/char_std_5990.txt'
# crnn\data\create_lmdb_dataset.py
IN_PATH = '../data/crnn_data/train.txt'
PREFIX = '../data/crnn_data/images'
OUT_PATH = '../data/crnn_data/crnn/data/train_lmdb'

east文字检测模型输入文件配置信息:
# east\data\cfg.py
data_dir = '../data/icpr/'
origin_image_dir_name = 'image_10000/'
origin_txt_dir_name = 'txt_10000/'

输出模型文件路径:./model/east_model_weights_%s.h5

识别

从输入一张图片到端到端的检测及识别文字:

# 使用EAST模型进行检测
python predict.py

输出参数为:

# 权重文件
east_model_weights_file = "./east/model/east_model_weights.h5"
crnn_model_weights_file = "./crnn/model/crnn_model_weights.hdf5"
# 需OCR识别的图片
root_image = "./east/test/image/"

六、获取案例套装

文件包大小:10 GB

获取:传媒业和计算机服务视觉案例套装

发表评论