卡牌区域OCR内容指南.md 4.7 KB

卡牌区域 OCR 内容指南

状态:2026-08-11 起,card_no 抽取逻辑已废弃
最终编号改走检测裁剪 + rec-only + 单次宽容。
后处理规则见:卡牌区域OCR_rec宽容政策.md


一、新链路(当前生效)

原图
 → card_seg_v2 分割 + warp + ensure_portrait
 → yolo26s_card_no 检测(conf=0.3;多框取最高 conf)
 → 裁剪编号区域
 → PP-OCRv6_medium_rec(仅 rec,不走 det)
 → apply_leniency(单次)
 → 若 rec_score≤0.9 且不合规格式 → card_no 置空(blur_unreadable)
 → 最终 card_no
步骤 实现
检测裁剪 pokemon/flat_card_no_detect.py
OCR + 宽容 + 低分置空 pokemon/flat_card_no_ocr.py
宽容/格式判定 modules/card_no_leniency.py

空结果展示两类:

blank_type 对应 empty_reason 含义
无编号 no_detectionrec_empty 无检测框,或有框但 rec 空 → 视同无编号
模糊不可读 blur_unreadable 有框,但 rec_score≤0.9 且不合规 → 图模糊

说明: rarity_short / element 不由 OCR 猜,由独立 yolo26s 检测模型输出。


二、合法 card_no 格式清单(验收口径)

以下用于判断 rec 结果是否属于合法编号形态
新链路不再用这套规则从整段 OCR 里“选号”;仅作格式对照与验收。

1. 斜杠式 左/右(最常见)

规则
形态 左侧/右侧
位数 两侧各 1~5 位(含字母数字)
内容 优先数字,也可字母数字混合;至少一侧含数字
右侧连字符促销码 允许,如 270/SM-P144/S-P337/S-P
右侧中点促销码 允许,如 137/SM·P
右侧更长促销码 允许,如 002/30th-P
稀有度后缀 右侧粘连 RR/AR/SR/CHR/SAR/MA/RRR/SSR/PR/UR… 时剥离后再看编号
示例 148/172TG18/TG30SV107/SV122002/30th-P137/SM·P

2. No.

规则
形态 No. + 1~4 位数字
容忍 大小写;句点/空格;o/O 误读为 a/ANa 128);mo. 误读
输出 统一 No.XXX
示例 No.128No. 249No.249Na 128No.128mo.066No.066

3. 长码式(无斜杠)

规则
形态 大写字母开头,字母 + 数字混合,总长 ≥3
约束 一般不带连字符(防伪长串排除)
示例 AR5XY17XY44DP09SWSH144SWSH261

4. 短纯数字

规则
形态 ≤3 位纯数字(可 0 开头)
黑名单 999000(多是版权年/噪声,不作为有效编号)
示例 524001023123

5. 井号式

规则
形态 3~4 位字母 + # + 数字(≥1 位)
输出 字母统一大写
示例 ABC#12DPBP#299DPBP#480

三、相对旧文档的格式补全(2026-08-11)

rec_score > 0.9 实测(识别正确)中发现、旧 1~4 位斜杠/≥4 长码未写清的合法形态:

补全项 旧口径 新口径 示例
斜杠位数 两侧 1~4 两侧 1~5 SV107/SV122
促销码长度 右侧约 ≤4 右侧可更长 002/30th-P
促销码分隔符 - 另含中点 · 137/SM·P
长码最短长度 ≥4 ≥3 AR5

不算新格式(勿写入格式表):

结果 原因
001/SM-(如 8321194) 检测框偏短,真值多为 001/SM-P
7/SV122 左侧被裁断的 SV 码
opponent / retreat / 80 HP 框到非编号区域
168132 / 2293 纯数字长串,靠宽容政策尝试还原,不是独立编号格式

四、已废弃的旧选号逻辑(仅归档)

旧链路:

固定 ROI 裁 seq_left / seq_right
 → PaddleOCR(det+rec)
 → 用五种格式从文本里“猜”card_no
 → 左右框按 格式优先级 > 左框优先 > OCR conf 选定唯一结果

旧附加规则中,仍有用、已并入新宽容政策的:

  • No. / Na / mo. 归一
  • 稀有度后缀剥离

不再需要的:

  • 从左右两框猜哪个是编号
  • 斜杠两侧类型一致性 + 边缘噪点字母删除(F148/172148/172)——检测框已基本消掉这类串扰

五、相关文档

文档 用途
卡牌区域OCR_rec宽容政策.md 当前唯一后处理规则(单次宽容)
modules/card_no_leniency.py 宽容政策代码实现