paddlelabe标注注意事项

python 复制代码
import cv2
import paddle
from paddleocr import PaddleOCR

# 1. 加载 PP-OCRv4 检测模型 + PP-OCRv5 识别模型
ocr = PaddleOCR(
    use_gpu=True,
    lang="ch",
    # 用 v4 的检测模型
    det_model_dir="./det_v4_inference",
    # 用 v5 的识别模型
    rec_model_dir="./rec_v5_inference",
    # 统一预处理参数
    det_db_thresh=0.3,
    det_db_box_thresh=0.5,
    rec_image_shape="3, 48, 320"
)

# 2. 读取图片并推理
img = cv2.imread("your_image.jpg")
result = ocr.ocr(img, cls=False)

# 3. 打印结果
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(f"文本框: {line[0]}, 识别结果: {line[1][0]}, 置信度: {line[1][1]}")

针对元器件场景,调整配置文件:

yaml 复制代码
Global:
  use_det: True
  use_rec: True
Det:
  det_db_thresh: 0.25  # 降低阈值,提升小目标检出率
  det_db_box_thresh: 0.4  # 降低框过滤阈值,避免误删有效框
  det_limit_side_len: 960  # 可根据图像分辨率调整,保证小字符足够清晰

一、基础标注格式硬规则

标注文件格式

最终生成的 Label.txt 每行格式必须为:

python 复制代码
图片路径	[{"transcription": "文本内容", "points": [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]}]

图片路径和 JSON 之间必须用 Tab 键(\t) 分隔,不能用空格

每个文本框用一个 {},多个框用逗号分隔,外层用 \[\] 包裹

文本框坐标要求

必须用四点标注(按键盘 Q 进入四点模式),顺序为顺时针 / 逆时针(左上→右上→右下→左下)

框要完整包围字符区域,并保留少量边缘空白,避免裁剪到字符边缘

倾斜 / 旋转字符必须画倾斜四边形框,不能画正矩形,否则矫正后会变形

文本内容规范

清晰可识别的字符:直接输入真实内容(如 A5、R102)

模糊 / 无法识别的区域:统一标注为 ###,模型会自动忽略

特殊符号(如 ●、○):如果要作为有效字符识别,需在自定义字典中添加,不能用空格或其他符号代替

二、电子元器件场景的专项要求

  1. 字符拆分与合并规则
    单个元器件上的独立字符:每个字符 / 独立文本段单独画一个框,比如 A5 要标注为一个框(transcription: "A5"),不要拆成 A 和 5 两个框
    连体 / 模糊字符:不要强行拆分,按整体标注,比如丝印连笔字符直接标为整体文本
  2. 背景与噪声处理
    反光 / 油污 / 氧化导致的字符模糊:优先标记为 ###,不要猜测标注
    元器件边缘、引脚等背景区域:不要误标注为文本框,避免模型学习噪声
  3. 标注质量控制
    所有标注框必须紧贴字符边缘,避免框过大包含过多背景,或过小裁剪字符
    倾斜 / 镜像字符:四点框必须与字符方向一致,保证后续矫正后字符是正立的。
    三、常见错误与避坑
    错误类型 错误示例 正确做法
    用空格代替 Tab 分隔路径和 JSON img.jpg {"transcription": "A5", ...} img.jpg\t{"transcription": "A5", ...}
    倾斜字符画正矩形框 用正矩形框住倾斜的 A5 用四点标注画倾斜四边形框
    无法识别的区域不标记 留空或用自定义符号代替 直接写 ###
    特殊字符不添加到字典 标注 ● 但未在 custom_dict.txt 中添加 在字典文件中单独添加 ● 并在配置中指定

四、标注后校验步骤

1.导出 Label.txt 后,用以下代码一键校验 JSON 格式:

python 复制代码
import json
with open("Label.txt", "r", encoding="utf-8") as f:
    for line in f:
        img_path, label_str = line.strip().split("\t", 1)
        json.loads(label_str)  # 格式错误会直接报错
print("✅ 所有标注格式合法!")

随机抽取 10% 的图片,检查:

四点框是否完整包围字符

文本内容是否正确,无猜测标注

无法识别区域是否标记为 ###

四、全局快捷键(必须背熟,效率翻倍)

W:矩形框(正立、工整字符用)

Q:四点框(元器件倾斜 / 歪字符必用)

Backspace:删除选中框

D:下一张;A:上一张

Ctrl+R:对当前框重新识别

Ctrl+Shift+R:整张图重新识别

Ctrl + 鼠标左键:多选框

五、标准标注流程(元器件场景)

Step 1:自动预标注(先跑一遍,减少手动)

点界面 自动标注,等待跑完。

跑完后图片列表前面会变成 √/×,表示已处理 / 待处理。

Step 2:优先用四点标注(Q 键)------ 重中之重

元器件歪字 / 丝印 / 倾斜字符,必须用四点框!

按 Q 进入四点模式。

沿字符外轮廓顺时针点 4 个角:左上 → 右上 → 右下 → 左下。

双击左键结束当前框。

框要:包住全部字符 + 留 1~2 像素边距,不要太大、不要切字。

正立、很工整的字符才用 W 矩形框;歪字一律 Q 四点。

Step 3:修正识别内容(右侧文本框)

清晰字符:直接改对(如 R103、C47、A5)。

模糊 / 反光 / 看不清:标 ###(训练时会忽略)。

特殊符号(如 ●、○):如实输入,后续在字典里加上。

Step 4:逐图检查要点(每图必查)

所有丝印字符一个不漏,漏的用 Q 补框。

没有正矩形框去套歪字(必须四点倾斜框)。

每个框内容准确无误,不乱猜、不留空。

没有把背景 / 引脚 / 板边标成文本框。

Step 5:确认保存并下一张

检查无误 → 点右下角 确认(√) 保存。

自动跳到下一张;或按 D 手动下一张。

四、标注文件导出(最后一步)

全部标完后:菜单 → 文件 → 导出标注结果。

会生成:

Label.txt(核心,训练用)

train/val/test 拆分文件夹(可选)

校验 Label.txt 格式(必做)

每行:图片路径\t{"transcription":"xxx","points":\[\[x1,y1,...]})

分隔是 Tab(\t),不能是空格。

用我之前给你的小 Python 脚本跑一遍,确保无 JSON 错误。

五、电子元器件场景:硬性规定(不遵守必掉精度)

倾斜字符 → 四点倾斜框(Q),严禁矩形框。

一个独立丝印单元一个框(如 R102 一个框,不拆 R/1/0/2)。

模糊 / 反光 / 油污 → 统一 ###,不要猜字。

四点顺序必须顺时针,不要乱点,否则矫正后字会歪 / 变形。

不要框太大(带大量背景)、不要框太小(切笔画)。

python 复制代码
python 复制代码
python 复制代码
python 复制代码
python 复制代码
相关推荐
li-xun1 小时前
职场AI困境、技术故障排查与情感生活百态
人工智能
Web极客码1 小时前
AI的下一个风口:智能助力超越ChatGPT
服务器·人工智能·ai编程
szxinmai主板定制专家1 小时前
基于 ARM+FPGA 数据机床实时工业控制设计--以雕刻机为例
arm开发·人工智能·嵌入式硬件·fpga开发
微效电子1 小时前
辉芒微代理商-FMD辉芒微MCU-8位、32位微控制器芯片代理商-深圳市微效电子有限公司
人工智能
梦想的颜色2 小时前
Claude Code 桌面端 vs CLI 全面安装指南与对比:2026 最新版,选哪个?
人工智能·架构·claude code
Omics Pro2 小时前
基因泰克:检测级虚拟细胞基准!大语言模型+智能体
大数据·数据库·人工智能·机器学习·语言模型·自然语言处理·r语言
z小猫不吃鱼2 小时前
15 InstructGPT 论文精读:SFT + RLHF 如何让模型听懂指令?
人工智能·深度学习·算法·机器学习·语言模型·自然语言处理·gpt-3
我爱cope2 小时前
【Agent智能体12 | 反思设计模式-使用外部反馈】
人工智能·设计模式·语言模型·职场和发展
2601_959479632 小时前
ZFX山海证券:“美股新高映射盈利支撑”
人工智能