中文OCR数据集全解析:从街景到合成数据的实战指南
1. 中文OCR数据集全景概览第一次接触中文OCR项目时我被五花八门的数据集搞得晕头转向。街景照片、合成图像、手写体、印刷体...每种数据都有自己独特的脾气。经过三个实际项目的摸爬滚打我逐渐摸清了门道——选对数据集项目就成功了一半。目前主流的中文OCR数据集主要分为三大类真实场景数据如CTW街景数据集、合成数据如Caffe-ocr中文合成数据和混合型数据如ICPR挑战赛数据集。真实数据最贴近实际应用场景但标注成本高合成数据量大管饱但存在模拟器差距混合型数据则试图兼顾两者优势。我在处理快递面单识别项目时就采用了80%合成数据20%真实数据的组合方案既控制了成本又保证了模型上线后的准确率。数据集的选择就像配中药需要根据具体症状配伍。比如要做街景门牌识别CTW数据集就是君药要做证件识别可能需要自己采集数据作为臣药而合成数据可以作为佐使药来扩充样本量。去年我们团队在做一个票据识别系统时就因为没有重视数据集的多样性导致模型对倾斜文本的识别率始终上不去后来补充了Total-Text数据集才解决问题。2. 街景类数据集深度解析2.1 CTW数据集实战心得Chinese Text in the WildCTW这个31GB的巨无霸是我最常用的街景数据集。它最大的特点是场景极其丰富——从城市霓虹灯到农村土墙上的标语从清晰的门牌到模糊的广告牌应有尽有。但第一次使用时我就踩了个坑直接加载2048×2048的原图训练结果GPU内存直接爆了。后来发现用512×512的裁剪区域就足够还能通过滑动窗口增加数据量。这个数据集最宝贵的其实是它的标注信息。每个汉字都有字符级标注连遮挡程度都有分级。我通常会利用这些元数据做困难样本挖掘比如专门挑出低亮度样本做增强训练。有个小技巧验证集的3129张图像要留到最后再用前期可以用训练集做k折交叉验证避免数据泄露。2.2 RCTW-17的隐藏特性Reading Chinese Text in the WildRCTW-17虽然只有11.4GB但它的图像都是手机直拍的特别适合移动端OCR场景。我发现在处理这个数据集时加入运动模糊和JPEG压缩这类数据增强效果特别好。它的测试集有个特点包含大量中英文混排文本这在训练时要特别注意字符集的处理。去年给某海外超市开发价签识别系统时我们就用RCTW-17自采数据微调模型解决了中英文混合识别的问题。这里分享一个参数设置在训练混合文字时学习率要比纯中文训练低20%-30%防止英文样本对中文字符识别的干扰。3. 合成数据集的妙用3.1 中文合成数据生成实战Caffe-ocr的360万张合成数据是我的秘密武器。虽然全是生成的但通过调整参数可以模拟各种真实场景。我最常用的组合是70%清晰字体20%模糊处理10%透视变换。这套数据在模型预训练阶段特别管用相当于给模型先上了个学前班。生成代码里有几个关键参数经常被忽视# 重要参数设置示例 params { font_size: (28, 32), # 不要设成固定值 blur_kernel: [(3,3), (5,5)], # 多种模糊核 background_noise: 0.3, # 适当保留背景噪声 perspective_ratio: 0.1 # 透视变换强度 }3.2 SynthText的改造技巧原版SynthText虽然是英文的但用中文版生成工具可以创造奇迹。我通常会先用它的背景图片库再叠加中文文本。这里有个独门秘方在生成脚本里加入汉字书写规范约束比如避免生成田字格式的机械排版。我们团队改进后的生成器连书法字体都能模拟得惟妙惟肖。实际操作中要注意合成文本与背景的融合度参数很关键。太生硬会让模型学到虚假特征太自然又可能丢失文本边界。我的经验值是使用0.7-0.8的融合度同时保留10%的生硬样本作为负例。4. 混合型数据集应用方案4.1 ICPR挑战赛数据使用指南这个2GB的数据集看似不大但内涵丰富。它最大的价值在于包含了各种版式的广告文本这对电商场景特别有用。我处理这类数据时会先用目标检测框出文本区域再用CRNN识别内容。要特别注意其中字体大小不一的特性建议训练时采用多尺度裁剪。有个实用技巧把产品描述类样本单独提取出来做二阶段训练。我们给某电商平台做的商品描述提取系统就是先用全量数据训练基础模型再用产品描述数据微调准确率提升了15%。4.2 COCO-Text的再开发虽然COCO-Text以英文为主但其中的173589个文本实例蕴含着丰富的场景信息。我的做法是用它训练文本检测模型再配合中文识别模型组成pipeline。特别要利用好它的手写样本这对提升模型鲁棒性很有帮助。在处理这类多语言数据集时字符集过滤很关键。我会先用中文常用字库约3500字做筛选避免模型被无关字符干扰。同时保留10%的非中文字符让模型学会区分中文与其他文字。5. 数据集组合与优化策略在实际项目中我从来不会只用一个数据集。经过多次试验总结出几个黄金组合方案方案一通用OCR训练基础数据Caffe-ocr合成数据60%增强数据CTW街景数据30%困难样本Total-Text弯曲文本10%方案二证件票据专用基础数据ICPR广告数据50%增强数据自建票据数据集30%正则化数据SynthText生成20%数据增强方面除了常规的旋转、缩放我特别推荐使用弹性变换来模拟纸张变形效果。对于街景数据加入光照条件模拟特别有效。这里分享我的增强配置from albumentations import * transform Compose([ ElasticTransform(alpha120, sigma120*0.05, alpha_affine120*0.03, p0.5), RandomBrightnessContrast(p0.8), ISONoise(color_shift(0.01,0.05), intensity(0.1,0.5), p0.5), RandomFog(fog_coef_lower0.1, fog_coef_upper0.3, p0.3) ])最后提醒大家数据集不是越大越好。我见过太多团队盲目追求数据量却忽视了样本的代表性。一个好的做法是先用小规模数据训练基础模型通过错误分析找出薄弱环节再有针对性地补充数据。就像去年我们做银行单据识别发现模型在识别盖章区域文本时表现很差于是专门采集了5000份带盖章样本效果立竿见影。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428445.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!