You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

全页文本识别数据集创建咨询:OCR数据集生成工具指引

构建类似Maurdoor的行级OCR标注数据集实操指引

我完全懂你现在的困扰——这类针对行起始点、行高定制化标注的数据集,不像通用OCR数据集有现成工具一键生成,得靠「现有资源改造+轻量工具定制」来实现,下面给你拆解具体步骤:

1. 从现有公开数据集快速转换标注(最省时间的方案)

你提到的用文本行边界框的左下角点当起始点、框高当行高,这个思路非常高效,不用重新标注。

  • 先找带行级边界框的全页文本数据集,比如ICDAR系列全页数据集、PubLayNet这类,它们的标注一般是XML或JSON格式,包含每个文本行的左上角/右下角坐标。
  • 写个简单的Python脚本就能批量转换:读取标注文件里的行框坐标,计算出左下角点(x_min, y_max)行高(y_max - y_min),再把对应行的文本转录一起导出成你需要的格式(比如JSON或CSV)。举个伪代码片段:
    import json
    
    with open("original_annotations.json", "r") as f:
        data = json.load(f)
    new_annotations = []
    for img in data:
        for line in img["lines"]:
            x_min, y_min, x_max, y_max = line["bbox"]
            new_annotations.append({
                "image_path": img["image_path"],
                "start_point": [x_min, y_max],
                "line_height": y_max - y_min,
                "transcription": line["text"]
            })
    with open("converted_annotations.json", "w") as f:
        json.dump(new_annotations, f, indent=2)
    

2. 用开源标注工具定制标注流程(全新数据集标注)

如果现有数据集不满足需求,需要自己标注新图像,不用从零开发工具,基于开源工具改就行:

  • LabelStudio:支持自定义标注模板,你可以配置一个标注任务,让标注员完成三个操作:点击文本行的起始点、系统自动计算行高(或手动输入)、录入文本转录。它能直接导出结构化的标注文件,后续直接给模型用。
  • VGG Image Annotator (VIA):轻量无服务器,适合小数据集。你可以给每个标注对象添加自定义属性:start_xstart_yline_heighttranscription,标注完成后导出JSON,再用脚本整理成模型需要的格式。

3. 合成数据集补充生成(解决数据量不足问题)

要是需要大量训练数据,还可以用合成工具生成带精准标注的样本:

  • TextRecognitionDataGenerator (TRDG),它本来是生成文本行图像的工具,你可以修改它的源码,在渲染每个文本行的时候,记录下该行的左下角坐标和高度,然后把这些信息和文本转录一起写入真值文件(比如XML或JSON)。这样生成的合成数据完全符合你的标注要求,还能自定义字体、背景、噪声等。

4. 标注验证与格式统一

最后一步很重要,要确保标注的准确性:

  • 写个验证脚本,把标注的起始点和行高画在图像上(比如用OpenCV的circlerectangle函数),直观检查标注是否正确。
  • 统一标注格式,比如用JSON每行存储一个样本,方便后续模型读取和处理。

内容的提问来源于stack exchange,提问作者Kelley Brady

火山引擎 最新活动