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 复制代码
相关推荐
火山引擎开发者社区23 分钟前
TLS for DeepSeek Harness 可观测实践:从系统总览到会话复盘
人工智能
数字融合2 小时前
透明化地铁线视频孪生综合监控项目技术
大数据·人工智能·virtualenv
鼎艺创新科技3 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
十三画者3 小时前
【文献分享】ConfRetro:融合3D构象信息的逆合成预测Transformer框架
人工智能·深度学习·数据挖掘·数据分析·transformer·数据可视化
前沿在线3 小时前
百度文心助手推出任务引擎 2.0,日活用户同比增长 83%,日均对话轮次增长超 2 倍
人工智能·ai·大模型
zandy10113 小时前
AI办公工具选哪个?千问办公、百度搭子、WorkBuddy三款高阶智能体深度拆解
人工智能·ai办公工具
mengpp_1234563 小时前
AIoT平台 vs 普通IoT平台 核心区别
人工智能
canonical_entropy4 小时前
可逆不是逆向运行:DeepSeek Harness 架构的数学本质
人工智能·架构·agent
别动我齐刘海4 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
冬奇Lab5 小时前
Code Agent 解剖(05):模型怎么知道有哪些工具可以用?Function Calling 如何实现?
人工智能·开源·agent