在完成二值化的“生死关”后,文字已经从背景中脱颖而出了。接下来的关键步骤,就是 OCR 流程中最具挑战性的环节之一:文字检测(Text Detection)。
如果说二值化是让文字“现形”,那么文字检测就是给文字“画圈”。
文字定位(Detection):AI 如何在乱丛中找到“方块字”?
在早期的 OCR 场景中,我们处理的多是规整的扫描件,文字总是横平竖直。但现在的 OCR 需要处理街景、手写订单、甚至揉皱的发票。这就要求 AI 具备极强的空间感知能力。
1. 为什么文字检测比物体检测更难?
在计算机视觉领域,检测一只“猫”和检测一行“字”的逻辑完全不同:
- 长宽比极端: 一个单词可能很短,但一长串网址可能横跨整个屏幕。
- 方向多变: 文字可能是水平的、垂直的,甚至是沿着圆形印章弯曲的。
- 密集的颗粒度: 目标检测(如车牌识别)通常只找一个目标,而 OCR 检测可能要在一张报纸上圈出几千个文本块。
2. 三大主流技术路线
为了圈出这些文字,技术界演进出了三种截然不同的方案:
A. 基于回归的方案(代表作:CTPN, TextBoxes)
这种方法借鉴了通用目标检测(如 YOLO)。它预设了很多“小框”(Anchors),然后判断这些框里有没有文字,并不断调整框的大小来包裹文字。
- 优点: 速度极快。
- 缺点: 面对倾斜文字或弯曲文字时,矩形框会显得非常笨拙,经常把不相关的背景也圈进来。
B. 基于分割的方案(代表作:DBNet, PSENet)
这是目前主流的**“像素级”**做法。AI 不再画框,而是给每个像素做判断:“你属于文字笔画吗?”
- DBNet(可微分二值化): 这是目前中国 OCR 方案(如 PaddleOCR)最常用的算法。它不仅能找到文字,还能精准地描绘出文字的边缘轮廓,哪怕文字是斜着贴在水瓶上的。
- 优点: 能够处理任意形状、任意旋转角度的文字。
C. 基于检测与识别一体化(End-to-End)
这种方法更进一步,不再分两步走,而是在确定位置的同时就把字认出来了。这减小了步骤之间的误差积累。
3. 中国场景下的特殊挑战
在做符合中国国情的 OCR 解决方案时,文字检测必须考虑以下细节:
- 竖排文字: 中国古籍、春联、或是部分广告牌采用从上到下的阅读顺序,检测算法必须支持纵向长条切割。
- 印章干扰: 红色公章往往压在黑色文字上,检测引擎需要具备“透视”能力,分清哪些是背景印章,哪些是需要识别的文字。
- 超长字符串: 中国的证件号、长公司名非常多,算法必须能稳健地将整行文本视为一个整体。
4. 给开发者的“避坑”建议
如果你正在集成文字检测模块,记得关注以下参数:
- 检测阈值: 调高了会漏掉模糊的字,调低了会把背景噪点当成文字。
- 膨胀系数(Expansion): 圈出的框稍微比文字大一点点,识别率通常会更高。
- 多边形 vs 矩形: 如果你的业务场景涉及大量自然场景(如招牌、证件照片),务必选择支持多边形输出(4个点以上)的算法。