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 复制代码
相关推荐
米小虾19 分钟前
WAIC 2026 倒计时30天:300+ AI 产品全球首发,今年看点全解析
人工智能
码上天下41 分钟前
多模态Agent上传图片:前端压缩格式与预览实战
人工智能
姗姗来迟了1 小时前
Vue3封装可复用AI对话组件:一次抽象复盘
人工智能
怕浪猫1 小时前
哪些软件对 Chrome DevTools Protocol 频繁使用
人工智能·架构·前端框架
leo在掘金2 小时前
从DeepSeek 510亿融资到GitHub 33K Star开源项目:这周的技术生态发生了什么?
人工智能
小姜前线技术4 小时前
AI流式渲染打字机效果抖动?节流方案踩坑实录
人工智能
用户018349301694 小时前
AI对话状态管理:useReducer还是XState
人工智能
先锋部队4 小时前
给AI对话加「停止生成」按钮:abort SSE实战
人工智能
新新技术迷4 小时前
移动端H5接AI对话的坑:键盘顶起与滚动到底
人工智能