PaddleOCR 数据合成工具实战指南从合成数据到垂类 OCR 训练集【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCRPaddleOCR 在 数据合成工具 文档中系统整理了当前业界常用的 OCR 数据合成工具清单。本文以该清单为主线结合仓库内训练文档、FAQ 实战经验与 DBNet 基准代码讲解合成数据在 OCR 训练体系中的定位、9 款主流合成工具的选型要点、Style-Text 的深度使用经验以及合成数据与真实数据的最佳配比方案帮助读者在数据不足或垂类场景下快速构建高质量训练集。一、为什么 OCR 训练离不开数据合成1.1 合成数据是 PaddleOCR 训练数据的重要组成部分在 模型训练文档 中PaddleOCR 明确披露了其开源模型的训练数据构成合成数据占据绝对主力英文识别模型使用 MJSynth 与 SynthText 合成数据数据量上千万中文识别模型基于 LSVT 街景语料合成数据500 万张再叠加 30 万张真实街景 crop 数据小语种模型使用不同语料和字体分别生成100 万张合成数据集并以 ICDAR-MLT 作为验证集。文档同时指出公开数据集均为开源可下载而合成数据暂不开源用户需要使用开源合成工具自行合成。这正是 数据合成工具 文档存在的意义——它是 PaddleOCR 官方推荐的合成工具入口清单。1.2 数据量需求决定了合成数据的必要性从 FAQ 中关于数据量的问答可以归纳出 OCR 训练的数据量经验值任务数据量建议检测任务 Fine-tune约 500 张即可达到不错的效果英文识别几十万张中文识别几百万张甚至更多识别字典中每个字符出现样本数不低于 200~300 张且需注意类别均衡真实数据采集成本高、周期长对于中文这种字符集巨大的任务纯靠人工采集几乎不可能达到百万级规模因此“真实数据 合成数据”组合是业界公认的可行路径。1.3 垂类场景与数据不足的应对当训练数据量少时FAQ 给出了三种获取更多数据的途径人工采集最直接也最有效但成本高基于 PIL/OpenCV 的基础图像处理如用ImageFont、Image、ImageDraw将文字写入背景配合 OpenCV 的旋转仿射变换、高斯滤波等数据生成算法合成例如 pix2pix、Style-Text 等。对于某些特殊场景如印章弯曲文本、手写体FAQ 也建议合成接近使用场景的数据用于训练并给出了手写中文数据集的合成思路随机选取单字图片与 label统一 resize 高度后拼接配合阈值化将白底处理为透明背景再与真实背景合成。二、9 款主流数据合成工具清单详解以下工具全部收录于 数据合成工具 官方清单覆盖从 2D 渲染到 3D 场景、从英文到中文、从单字到整行文本的各类合成需求工具定位与特点Style-Text风格迁移式合成从样例图提取字体/背景风格并按语料生成同风格图像text_renderer旧版/新版基于文本渲染管线的合成工具支持自定义字体、背景与排版SynthText经典的场景文本合成工具将文字自然融入真实背景英文识别合成数据标杆SynthText_Chinese_versionSynthText 的中文适配版本TextRecognitionDataGenerator支持多语言、多字体、多背景与多种失真效果的文本图像生成器SynthText3D在 3D 场景中合成文本模拟透视与景深效果UnrealText基于游戏引擎渲染的逼真场景文本合成SynthTIGER组件化合成框架支持将合成结果导出为多种数据集格式2.1 Style-TextStyle-Text 是 PaddleOCR 团队更新并维护的数据合成工具更新日志 记载 2020.12.15 正式更新支持批量合成大量与目标场景类似的图像在多个场景验证效果提升明显。该工具已从仓库迁移至独立组织PFCCLab/StyleText继续维护FAQ。它的核心用途是提取style_image中的字体、背景等风格信息根据语料生成同样风格的图片非常适合垂直场景数据扩增。深度使用经验见第三节。2.2 text_renderer旧版 / 新版text_renderer 是一类基于“背景图 字体渲染 布局排版”的文本图像合成工具清单中同时收录了旧版与新版两个版本。它通常按预设的行数、间距、旋转角度等参数把文本渲染到背景图像上同时输出文本框标注四点多边形可直接用于文本检测与识别模型的训练。新版在渲染管线、背景适配与可配置性上做了进一步升级。2.3 SynthText 与 SynthText_Chinese_versionSynthText 是场景文本合成领域的经典工作采用“自底向上”的合成策略从自然图像中估计局部几何与颜色分布将文字以与场景相协调的透视与光照嵌入背景生成的图像高度逼真。PaddleOCR 英文识别模型训练使用的正是 MJSynth 与 SynthText 合成数据见 训练文档。SynthText_Chinese_version 是其中文适配版本用于生成中文场景文本。仓库的 DBNet 基准代码中直接内置了 SynthText 数据集的读取支持详见第四节。2.4 TextRecognitionDataGeneratorTextRecognitionDataGenerator常缩写为 TRDG是一个使用门槛较低的文本图像生成器给定字符集/语料、字体与背景即可批量生成带 label 的文本行图像。它支持多种字体、多语言字符、随机背景、以及模糊、噪声、透视、拉伸等失真模拟适合快速搭建识别模型的训练数据常与 PaddleOCR 识别模型微调配合使用。2.5 SynthText3D / UnrealText这两款工具面向更接近真实世界的文本合成SynthText3D 在三维场景中放置文字通过渲染获得带透视变形、景深与光影变化的文本图像UnrealText 基于游戏引擎Unreal Engine渲染能够生成照片级真实的街景、标牌等场景文本并输出对应的文本框与字符级标注。它们适合对图像真实度要求较高的场景文本检测任务。2.6 SynthTIGERSynthTIGERSynthesis Toolbox for Improving General OCR Performance是 Clova AI 开源的组件化合成工具箱将字体、背景、字符、布局等拆分为独立组件支持随机组合与数据增广并可将合成结果导出为 SynthText、COCO、标注文本等多种数据集格式便于直接接入现有训练管线。2.7 选型建议快速生成识别文本行数据优先考虑 TextRecognitionDataGenerator、text_renderer配置简单、出图快追求场景真实度的检测数据优先考虑 SynthText中文用 SynthText_Chinese_version、SynthText3D、UnrealText垂类风格迁移模仿目标场景优先考虑 Style-Text大规模、组件化、格式可定制优先考虑 SynthTIGER。三、Style-Text 深度使用经验FAQ 实战级细节针对 Style-TextFAQ 沉淀了大量实战问答这里整理为可直接落地的使用规范。3.1 核心原理与数据尺寸约束Style-Text 的用途是提取 style_image 中的字体、背景等风格信息根据语料生成同样风格的图片其模型输入使用标准字体文件且字体文件不可更换它仅作为模型输入的一部分。模型生成的数据主要用于 OCR 识别模型训练而 PaddleOCR 当前识别模型的输入为32 × N因此建议合成数据尺寸设置为32 × N不建议修改配置文件中的分辨率尤其不要改变高度 32尺寸相差不多的数据也可以生成但过大或过小的数据合成效果不佳。3.2 长文本合成策略当文本TextInput长度远超 StyleInput 长度时有两种处理方式直接按 StyleInput 的长度约束生成将 TextInput 裁剪为若干段使每段稍短于 StyleInput分别合成后再拼接。实际使用中第二种方法在长文本合成场景效果更好且 Style-Text 本身提供的即是第二种数据合成逻辑。总体原则StyleInput 的长度应长于 TextInput。3.3 常见问题排查批量生成没有输出检查配置文件中各路径是否存在尤其注意label_file配置是否正确合成效果不好确认目标尺寸是否为32 × N过大或过小的尺寸会导致效果明显下降与真实数据的配合合成数据适合作为 OCR 识别模型的训练输入若合成数据量过大需要与真实数据按比例混合采样见第五节。四、合成数据在仓库中的落地SynthText 数据集读取与增广仓库的 DBNet 检测基准benchmark/PaddleOCR_DBNet直接内置了对 SynthText 合成数据集的支持是“合成数据如何进入训练管线”的最佳范例。4.1 数据集类型注册在 dataset.py 中定义了SynthTextDataset类说明 SynthText 格式的合成数据可以直接作为 DBNet 检测模型的训练数据源。4.2 训练配置中的合成数据管线SynthText.yaml 展示了完整的 SynthText 数据加载与预处理配置name: DBNet dataset: train: dataset: type: SynthTextDataset # 数据集类型 args: data_path: # SynthTextDataset 根目录 pre_processes: # 数据的预处理过程包含 augment 和标签制作 - type: IaaAugment # 使用 imgaug 进行变换 args: - {type: Fliplr, args: {p: 0.5}} - {type: Affine, args: {rotate: [-10, 10]}} - {type: Resize, args: {size: [0.5, 3]}} - type: EastRandomCropData args: size: [640, 640] max_tries: 50 keep_ratio: true - type: MakeBorderMap args: shrink_ratio: 0.4 - type: MakeShrinkMap args: shrink_ratio: 0.4 min_text_size: 8 transforms: # 对图片进行的变换方式 - type: ToTensor args: {} - type: Normalize args: mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] img_mode: RGB filter_keys: [img_path, img_name, text_polys, texts, ignore_tags, shape] ignore_tags: [*, ###] loader: batch_size: 1 shuffle: true num_workers: 0 collate_fn: 要点解读合成数据同样需要增广IaaAugment使用 imgaug 对合成图像做水平翻转Fliplr概率 0.5、仿射旋转Affine-10°~10°与尺度缩放Resize0.5~3 倍增强泛化性标签在线制作MakeBorderMap与MakeShrinkMap基于文本多边形在线生成 DB 算法所需的 border 与 shrink 标签shrink_ratio均为 0.4无需预先离线生成标签文件忽略标签约定ignore_tags: [*, ###]表明合成数据集中无法识别/无需监督的文本区域沿用检测任务通用的###约定这一约定在 FAQ 中也有说明###表示要被忽略的文本区域。此外中文数据集文档 中收录的“电子印章数据集”也是程序合成的共 10000 张图像训练集 8000 / 测试集 2000专门用于印章弯曲文本的训练与检测说明合成数据本身也可以作为公开数据集发布使用。五、合成数据与真实数据的配比与训练策略合成数据虽然量大但直接全量使用容易导致模型过拟合到合成风格。综合 FAQ 与 训练文档 的经验推荐以下策略5.1 混合采样配比训练文字识别模型时需要做样本均衡一般保证一个 batch 中真实数据与合成数据的比例约为5:1 ~ 10:1真实 : 合成效果较理想。若合成数据占比过大模型会过拟合到合成数据预测效果往往不佳。5.2 两阶段训练一种被验证有效的启发式做法先用大量合成数据训练一个 base 模型再用真实数据微调。在部分简单场景下效果会有明显提升。仓库开源的识别 inference 模型也是基于预训练模型在真实数据上微调得到的。5.3 类别均衡与低频字符尽量保证类别均衡。某些类别样本少时可以通过补充合成数据的方式处理——实验证明训练集中出现频次较少的字符识别效果会比较差单纯增加迭代次数并不能解决样本量不足的问题FAQ。5.4 竖排文字与特殊版式对于竖排文字等特殊版式FAQ 给出了一种合成方案合成一批竖排文字逆时针旋转 90 度后加入训练集与横排一起训练预测时根据图片长宽比判断是否为竖排若是则将 crop 出的文本逆时针旋转 90 度后送入识别网络。5.5 合成数据微调小模型的注意事项使用合成数据精调小模型后效果不如官方开源小模型时原因通常有二FAQ一是数据量与多样性不足二是微调一般需要真实数据若使用合成数据效果反而可能下降——官方识别 inference 模型也是基于预训练模型在真实数据上微调得到的。六、延伸阅读与配套文档数据合成工具本文主题文档工具清单持续更新数据标注工具合成之外的人工标注方案LabelImg、Labelme、roLabelImg、VoTT 等中文数据集PaddleOCR 整理的常用中文数据集含程序合成类数据集模型训练文档训练数据构成、垂类场景数据准备与超参调整FAQ数据量、数据均衡、Style-Text 使用、合成数据微调等大量问答SynthText 训练配置 与 SynthTextDataset 实现合成数据接入检测训练管线的完整示例。实践路径总结先根据任务类型检测/识别、英文/中文/小语种从上述 9 款工具中选择 1~2 款批量合成覆盖目标场景风格的数据再按“真实 : 合成 ≈ 5:1 ~ 10:1”的配比混合采样必要时采用“合成预训练 真实微调”的两阶段策略最后结合 数据标注工具 补采与标注少量真实数据校验效果即可在垂类场景下以较低成本获得可靠的 OCR 训练集。【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考