把图片里的字变成可复制的文本,听起来只是认字,实际要先后处理版面、行位置、字符序列与语言纠错。本文拆解现代 OCR 的流水线,并说明印刷体已经可靠、手写体与复杂表格仍是难点的原因。

核心要点

  • 现代 OCR 是版面分析、文字检测、序列识别与纠错的流水线
  • 检测阶段要把倾斜、弯曲甚至竖排的文本先拉平再识别
  • 语言模型纠错与行业词库能显著改善形近字错误

从扫描件到可编辑文本

OCR(optical character recognition,光学字符识别)要做的事,是把图片里的文字变成可以复制、搜索、编辑的字符。它听起来只是认字,实际要先解决版面问题:一页纸上可能有标题、正文、表格、脚注与插图,还可能是竖排或双栏。

所以现代 OCR 通常是一条流水线:先做版面分析,把页面切成文本块、表格、图片等区域;再检测每一行文字的位置;然后识别行内的字符序列;最后按阅读顺序拼接,并做后处理纠错。任一步出错都会影响结果。

检测:先把字框出来

文字检测的难点在尺度与形状:路牌上的大字和药盒上的小字可能同时出现,招牌上的字还可能是弧形、倾斜甚至反光的。早期方法用连通域分析找笔画聚集处,现在主流用基于深度学习的检测网络,直接输出旋转矩形或多边形框。

检测完成后,系统会把弯曲或倾斜的文本拉平,这一步叫矫正。它类似把卷曲的纸条重新压平后再拍照,能显著降低后续识别难度。对竖排中文还要判断阅读方向,否则顺序会完全颠倒。

识别:从图像到字符序列

识别阶段把一行文字的图像当作序列,逐步输出字符。传统思路是卷积网络提取视觉特征,再用循环神经网络配合 CTC 损失函数对齐,因为图像宽度与字符数量并不一一对应。近年也出现了直接用 Transformer 做端到端识别的方案。

识别结果还要经过语言模型纠错。比如模型把“人工智能”认成“人工智熊”,语言模型会依据上下文判断后者不合常理并改写回来。这一步对字形相近的汉字尤其重要,也是专业领域 OCR 常需加入行业词库的原因。

今天的能力边界

印刷清晰、扫描规整的文档,OCR 已相当可靠;手写体、艺术字、模糊拍照与复杂表格仍是难点。当前的趋势是把 OCR 与大模型结合,让它不只输出文字,还能直接回答“这张发票的金额是多少”,从识别走向理解。

常见问题

为什么 OCR 有时把数字和字母认错?

因为字符在图像中只是像素模式,0 与 O、1 与 l、8 与 B 本就极为相似,再加上拍照模糊、透视变形、低分辨率,模型难以确定。加入上下文的语言模型和针对场景的词库,能纠正大部分这类混淆。

本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。