Skip to content

第 18 章 应用实例:图片文字识别

这一章用 Photo OCR 作为完整机器学习系统案例,说明如何拆分系统流程、获取数据,并用上限分析决定优化方向。

18.1 问题描述和流程图

Photo OCR 的目标是从图片中识别文字。

一个完整流程可以拆成:

  1. 文本检测:找出图片中哪些区域包含文字。
  2. 字符切分:把文字区域切成单个字符。
  3. 字符识别:识别每个字符。

这种流程图有助于把复杂系统拆成多个可评估模块。

18.2 滑动窗口

滑动窗口用于在图像中寻找目标区域。

基本做法:

  1. 固定一个窗口大小。
  2. 在图像上从左到右、从上到下滑动。
  3. 对每个窗口运行分类器。
  4. 判断该窗口是否包含目标。

如果目标尺寸变化较大,需要使用多个窗口大小。

滑动窗口也可以用于行人检测、文本检测等任务。

18.3 获取大量数据和人工数据

机器学习系统常常受益于更多数据,但前提是模型和特征有能力利用这些数据。

获取数据的方式:

  • 收集真实数据。
  • 人工标注数据。
  • 通过已有样本生成合成数据。

例如字符识别中,可以用不同字体生成大量字符图像,也可以对已有图像做旋转、缩放、扭曲等变换。

生成人工数据时要注意:合成数据应该接近真实测试场景,否则帮助有限。

18.4 上限分析

上限分析用于决定系统中哪个模块最值得优化。

做法:

  1. 记录当前完整系统表现。
  2. 人工把某个模块的输出替换成完美结果。
  3. 观察整体性能提升多少。
  4. 提升最大的模块,优先优化。

例如 Photo OCR 中,可以分别把文本检测、字符切分、字符识别替换成完美输出,比较系统准确率提升。

上限分析可以避免把时间花在对整体效果帮助很小的模块上。

Powered by VitePress