60 秒回答模板

OCR 通常先检测再识别。DBNet 属于文本检测方法,目标是从图像中定位文字区域,它用可微分二值化把概率图、阈值图和近似二值图一起学习,让文本边界更清晰,后处理再把连通区域转成文本框或文本多边形。CTC 属于序列识别训练目标,解决输入特征帧和输出字符序列长度不一致、没有逐字符对齐标注的问题。它引入 blank 标签,把所有折叠后等价于目标字符串的路径概率求和,训练时最大化目标序列概率,解码时再去 blank、合并重复字符。

考点 DBNet 定位文字
难度 真实面经题
回答目标 讲清原理、实现和边界

深入解析

01

OCR 链路分工

DBNet 和 CTC 不在同一层解决问题。DBNet 解决检测,即图像里哪里是文字;CTC 解决识别训练,即检测到的文字图像如何转成字符序列,尤其是不知道每个字符对应输入特征中哪个位置时如何监督。

02

DBNet 的检测思想

传统文本检测会预测文本概率图,再通过固定阈值二值化得到文字区域。DBNet 把二值化近似成可微模块,同时学习概率图和阈值图,让模型能根据局部边界难度自适应地产生更干净的文本区域。

03

DBNet 的训练输出

训练时通常有文本区域概率图、阈值图和近似二值图三类监督。概率图关注是否为文本,阈值图关注边界处如何切开相邻文本,二值图让最终可分割区域更接近后处理需要的结果。

04

CTC 的对齐问题

识别网络输出的是一串时间步或宽度方向特征,每个位置给出字符分布,但标注通常只有完整字符串。CTC 不要求字符级位置标注,而是枚举所有可能对齐路径,把折叠后得到目标字符串的路径概率加起来。

05

CTC 解码与边界

CTC 解码会先取每个时间步概率最高的标签,再合并连续重复字符并删除 blank。它适合横向序列文字识别,训练简单稳定;如果文本排列复杂、需要强语言建模或字符间依赖,可能需要 attention decoder、Transformer decoder 或语言模型重排序补充。

易错点

  • 把 DBNet 说成识别网络,或把 CTC 说成文本检测算法。
  • 只说 CTC 不需要对齐,没有解释 blank、路径折叠和路径概率求和。
  • 把 DBNet 的贡献简化成普通分割,漏掉可微分二值化和自适应阈值。
  • 忽略检测和识别误差会级联,回答时完全不讲 OCR pipeline。

面试官追问

DBNet 为什么要学习阈值图?

固定阈值对模糊边界、粘连文本和不同尺度文字不够稳定,阈值图能让模型在局部自适应地区分文本和背景。

CTC 中 blank 的作用是什么?

blank 用来表示当前时间步不输出字符,也用于分隔连续相同字符,避免折叠重复字符时把真实重复字符误合并。

CTC 和 attention decoder 有什么区别?

CTC 假设输出顺序基本单调,训练不需要显式对齐;attention decoder 学习对输入位置的软选择,表达更灵活但训练和解码通常更复杂。

OCR 里检测错了会怎样影响识别?

检测框裁剪不完整、角度不准或包含太多背景都会让识别网络输入质量下降,所以检测召回、边界和矫正都直接影响识别准确率。