把模型 log_probs [batch,time,42] 输出折叠成文本, 对齐参考实现 greedy_ctc_decode: 逐帧取 argmax, 去 blank, 再去连续重复标签。 blank 的作用: 两个相同字母之间的 blank 是保住真实双字母的关键 (例如 "5NN" 的两个 N), 否则会被折叠成一个。 验证: ./gradlew :core:domain:test --tests '*CwCtcDecoderTest*' => tests="7" skipped="0" failures="0" errors="0" 含断言: 连续重复折叠、blank 隔断保留双字母、呼号 "CQ BG7" 含空格与数字