OCR(Optical Character Recognition)
是将打字、手写或印刷文本的图像电子或机械转换为机器编码文本,无论是来自扫描文档、文档照片、场景照片(例如风景照片中标志和广告牌上的文字)或叠加在图像上的字幕文字。
广泛用作从印刷的纸质数据记录中输入数据的一种形式——无论是护照、发票、银行对账单、计算机收据、名片、邮件、静态数据的打印输出,还是任何合适的文件——这是一种将印刷数字化的常用方法文本,以便它们可以进行电子编辑、搜索、更紧凑地存储、在线显示,并用于机器过程,例如认知计算、机器翻译、(提取的)文本到语音、关键数据和文本挖掘。OCR 是模式识别、人工智能和计算机视觉的研究领域。
电子文本转可编辑文本
诞生历程早期的光学字符识别可以追溯到涉及电报和为盲人创建阅读设备的技术。 1914 年,伊曼纽尔·戈德堡( Emanuel Goldberg)开发了一种读取字符并将其转换为标准电报代码的机器。同时,Edmund Fournier d'Albe 开发了Optophone,这是一种手持扫描仪,当它在打印页面上移动时,会产生与特定字母或字符相对应的音调。
在 1920 年代后期和 1930 年代,伊曼纽尔·戈德堡开发了他所谓的“统计机”,用于使用光学代码识别系统搜索缩微胶卷档案。1931 年,他的发明获得了美国专利号 1,838,389。该专利被IBM收购。
1974 年,Ray Kurzweil创办了 Kurzweil Computer Products, Inc. 公司,并继续开发全字体OCR,它几乎可以识别以任何字体打印的文本(Kurzweil 经常被认为发明了全字体 OCR,但它被1960 年代后期和 1970 年代的公司,包括 CompuScan )。库兹韦尔决定,这项技术的最佳应用是为盲人创造一台阅读机,让盲人可以用电脑大声朗读文本。该设备需要发明两项智能技术 - CCD 平板扫描仪和文本到语音合成器。1976 年 1 月 13 日前,在由库兹韦尔和全国盲人联合会领导人领导的广泛报道的新闻发布会上,成功地揭开了面纱。1978 年,Kurzweil Computer Products 开始销售光学字符识别计算机程序的商业版本。LexisNexis是首批客户之一,并购买了该程序以将法律文件和新闻文件上传到其新生的在线数据库中。两年后,Kurzweil 将他的公司卖给了施乐,后者对进一步商业化纸张到计算机的文本转换感兴趣。施乐最终将其剥离为Scansoft,与Nuance Communications合并。
在 2000 年代,OCR 作为在线服务 (WebOCR)、云计算环境以及移动应用程序(如智能手机上外语标志的实时翻译)提供。随着智能手机和智能眼镜的出现,OCR 可用于连接互联网的移动设备应用程序,这些应用程序提取使用设备相机捕获的文本。这些操作系统中没有内置系统 OCR 功能的设备通常会使用 OCR API从设备捕获和提供的图像文件中提取文本。OCR API 将提取的文本以及有关检测到的文本在原始图像中的位置的信息返回给设备应用程序以进行进一步处理(例如文本到语音)或显示。
各种商业和开源 OCR 系统可用于最常见的书写系统,包括拉丁文、西里尔文、阿拉伯文、希伯来文、印度文、孟加拉文(孟加拉文)、梵文、泰米尔文、中文、日文和韩文字符。
Ray Kurzweil
早期的平板扫描仪
应用范围——OCR引擎已经发展成多种特定领域的OCR应用,如收据OCR、发票OCR、支票OCR、法律帐单OCR等。具体应用于以下领域:
- 商业文件的数据输入,例如支票、护照、发票、银行对账单和收据
- 自动车牌识别
- 在机场,用于护照识别和信息提取
- 自动提取保险单据关键信息
- 交通标志识别
- 将名片信息提取到联系人列表中
- 更快地做出打印文档的文本版本
- 印刷文档的电子图像可以被搜索
- 实时转换手写以控制计算机
- 反作弊
- 盲人和视障用户的辅助技术
- 通过识别数据库中适合实时变化的车辆设计的 CAD 图像来编写车辆说明。
- 通过将扫描的文档转换为可搜索的 PDF 使它们可搜索
OCR识别类型
技术实现步骤【预处理】—— OCR 软件通常会“预处理”图像以提高成功识别的机会。技术包括:
- 歪斜:如果扫描文档时没有正确对齐,则可能需要以顺时针或逆时针方向倾斜几度使文字完全水平或垂直的线。
- 祛斑:去除正负斑点,平滑边缘
- 二值化:将图像从彩色或灰度转换为黑白(称为“二值图像”,因为有两种颜色)。二值化的任务是作为一种将文本(或任何其他所需的图像组件)与背景分离的简单方法来执行的。二值化本身的任务是必要的,因为大多数商业识别算法仅适用于二值化图像,因为事实证明这样做更简单。此外,二值化步骤的有效性在很大程度上影响字符识别阶段的质量,并且在选择用于给定输入图像类型的二值化时做出谨慎的决定;因为用于获得二值结果的二值化方法的质量取决于输入图像的类型(扫描文档、场景文本图像、历史退化文档等)。
- 行删除:清理非字形框和行
- 布局分析或“分区”:将序列、段落、标题等标识为不同地块。在多列布局和表格中尤其重要。
- 线条和单词检测:为单词和字符形状建立基线,必要时将单词分开。
- 脚本识别:在多语言文档中,脚本可能会在单词级别发生变化,因此,在调用正确的 OCR 来处理特定脚本之前,需要识别脚本。
- 字符隔离或“分割”:对于每个字符的 OCR,由于图像伪影而连接的多个字符必须分开;由于工件而被分成多个部分的单个字符必须连接。
- 标准化纵横比和比例
【文字识别】—— 有两种基本类型的核心 OCR 算法,它们可以生成候选字符的排序列表。
- 矩阵匹配涉及逐个像素地将图像与存储的字形进行比较;它也被称为“模式匹配”、“模式识别”或“图像相关性”。这依赖于输入字形与图像的其余部分正确隔离,以及存储的字形采用相似的字体和相同的比例。此技术最适用于打字文本,但在遇到新字体时效果不佳。这是早期基于物理光电池的 OCR 实施的技术,直接实施。
- 特征提取将字形分解为“特征”,如线条、闭环、线条方向和线条交叉点。提取特征降低了表示的维数,并使识别过程具有计算效率。将这些特征与字符的抽象矢量状表示进行比较,后者可能会减少为一个或多个字形原型。计算机视觉中特征检测的一般技术适用于这种类型的 OCR,这在“智能”手写识别和大多数现代 OCR 软件中很常见。[24] 最近邻分类器,例如k-nearest neighbor算法用于将图像特征与存储的字形特征进行比较并选择最接近的匹配。
- Cuneiform和Tesseract等软件使用两遍方法来识别字符。第二遍被称为“自适应识别”,它使用在第一遍中以高置信度识别的字母形状在第二遍中更好地识别剩余的字母。这对于字体失真(例如模糊或褪色)的异常字体或低质量扫描是有利的。
- 现代 OCR 软件,例如OCRopus或 Tesseract 使用神经网络,这些网络经过训练可以识别整行文本,而不是专注于单个字符。国内目前百度云、阿里云、腾讯云以及一些三方的技术公司都推出一基于机器学习的在线OCR识别API
通过机器学习的方式,更快速的进行识别并输出结果
,