OCR(光学字符识别):工作原理

· 12分钟阅读

目录

OCR(光学字符识别)可以将文本图像——扫描文档、标志照片、屏幕截图、手写笔记——转换为可搜索、编辑和处理的机器可读文本。从数字化百年档案到提取收据数据用于费用报告,OCR已成为我们日益数字化世界中的一项重要技术。

无论您是在构建文档管理系统、创建移动扫描应用程序,还是只是尝试从PDF中提取文本,了解OCR的工作原理都将帮助您获得更好的结果并避免常见陷阱。

什么是OCR?

光学字符识别是将包含打字、印刷或手写文本的图像电子转换为机器编码文本。从本质上讲,OCR分析图像中的视觉模式以识别单个字符、单词和文本结构。

20世纪70年代和80年代的早期OCR系统依赖于模板匹配——将每个字符形状与已知模式数据库进行比较。这些系统很死板,需要特定字体和高质量输入。现代OCR使用深度学习神经网络,可以识别各种字体、大小、方向和质量级别的字符。

当今的OCR技术为无数应用提供支持:

快速提示: 需要立即从图像中提取文本?试试我们的图像转文本(OCR)工具,无需任何设置即可获得即时结果。

OCR如何工作

现代OCR是一个多阶段管道,将原始图像像素转换为结构化文本。了解每个阶段有助于您优化输入并排查问题。

阶段1:图像采集

该过程从捕获或加载图像开始。这可能是智能手机相机的照片、平板扫描仪的扫描或屏幕截图。初始图像的质量会显著影响最终准确性。

采集期间的关键考虑因素:

阶段2:预处理

原始图像很少为字符识别提供最佳输入。预处理增强图像并去除可能混淆OCR引擎的噪声。

常见的预处理操作包括:

  1. 纠偏: 旋转图像以水平对齐文本
  2. 去斑: 去除扫描产生的小点和伪影
  3. 二值化: 转换为白色背景上的纯黑色文本
  4. 边框去除: 消除页面边缘和边距
  5. 布局分析: 识别文本区域、列和阅读顺序
  6. 行检测: 将文本分割成单独的行
  7. 单词分割: 将行分成单词
  8. 字符分割: 隔离单个字符(对于某些引擎)

阶段3:字符识别

这是实际"阅读"发生的地方。现代OCR引擎使用LSTM(长短期记忆)神经网络逐行处理文本,考虑上下文以消除相似字符的歧义。

例如,网络学习到"l"(小写L)和"1"(数字一)看起来相似但出现在不同的上下文中——"l"出现在单词中,而"1"出现在数字中。同样,"O"(字母)与"0"(零)、"S"与"5"、"B"与"8"通过周围字符来区分。

识别引擎不仅输出字符,还输出每个识别的置信度分数。以99%置信度识别的字符比60%置信度的字符更可靠。

阶段4:后处理

原始OCR输出通常包含错误。后处理应用语言知识来纠正可能的错误:

阶段5:输出生成

最后,识别的文本被格式化以供输出。这可能是:

OCR准确性因素

OCR准确性根据输入质量而有很大差异。了解影响准确性的因素有助于您准备更好的输入并设定现实的期望。

因素 最佳 有问题 影响
分辨率 300+ DPI <150 DPI 高 - 字符变得像素化
对比度 白色上的深色文本 低对比度、褪色 高 - 边缘变得不清晰
焦点 清晰、清晰的边缘 模糊、失焦 关键 - 错误的首要原因
照明 均匀、漫射 阴影、眩光、闪光 中等 - 产生虚假标记
对齐 笔直、水平 倾斜>5度 中等 - 混淆布局
字体大小 10-14磅印刷 <8磅或>72磅 低 - 引擎适应良好
背景 干净、均匀 纹理、图案 中等 - 产生噪声
文档状况 平整、干净 起皱、污渍、撕裂 高 - 扭曲字符

实用准确性提示

扫描文档:

智能手机照片:

屏幕截图:

专业提示: 如果您得到的结果不佳,请尝试在OCR之前将图像转换为灰度并增加对比度。许多引擎在高对比度黑白图像上的表现优于彩色照片。我们的图像转换器工具可以帮助快速预处理。

预处理技术

预处理可以显著提高OCR准确性。以下是最有效的技术以及何时使用它们。

二值化(阈值处理)

将灰度图像转换为纯黑白可简化识别。挑战在于选择正确的阈值。

全局阈值处理对整个图像使用单一阈值。适用于照明均匀的文档,但在页面照明变化时失败。

自适应阈值处理为不同区域计算不同的阈值。对于照明不均或有阴影的照片至关重要。Otsu方法是一种流行的自动方法。

降噪

扫描的文档通常包含斑点、灰尘痕迹和扫描伪影。降噪在不损坏文本的情况下去除这些。

常见技术:

纠偏

文本必须水平才能获得最佳识别。纠偏检测文本角度并旋转图像以纠正它。

大多数OCR引擎包括自动纠偏,但对于严重旋转的图像(超过10-15度)可能需要手动校正。

边框去除

页面边缘、扫描仪边框和边距可能会混淆布局分析。检测和去除这些可以改善结果,特别是对于多列文档。

对比度增强

褪色的文档受益于对比度增强。直方图均衡化分散强度值以最大化对比度。小心不要过度增强,这会产生伪影。

语言支持

现代OCR引擎支持100多种语言,但准确性根据脚本类型、字符复杂性和训练数据可用性而有很大差异。

拉丁文字语言

使用拉丁字母的语言(英语、法语、德语、西班牙语、意大利语、葡萄牙语等)达到最高准确性——在干净的印刷文本上通常为99%以上。这些语言具有:

We use cookies for analytics. By continuing, you agree to our Privacy Policy.