96

我最近遇到了TesseractOpenCV。看起来 Tesseract 是一个成熟的 OCR 引擎,OpenCV 可以用作创建 OCR 应用程序/服务的框架。

我尝试在我的一些图像上使用 Tesseract,它的准确性似乎不错。后来,我偶然发现了一个非常简单的使用 OpenCV 使用 Python 执行 OCR的教程,印象深刻。几分钟后,我完成了系统的训练,它的准确性很好。但是,当然,采用这种方法意味着我需要使用大型训练集来广泛训练我的系统。

我的具体问题如下:

  • 如何在 Tesseract 和使用 OpenCV 构建自定义 OCR 应用程序之间进行选择?
  • 有可用于不同语言的 Tesseract 的训练数据集。OpenCV 是否有类似的东西,所以我不必从头开始实现 OCR?
  • 哪个更适合想要成为商业应用程序?

有什么建议么?

4

4 回答 4

81
  • Tesseract 是一个 OCR 引擎。它由 Google 使用、开发和资助,专门用于从图像中读取文本、执行基本文档分割和对特定图像输入(单个单词、行、段落、页面、有限字典等)进行操作。

  • 另一方面,OpenCV 是一个计算机视觉库,其中包含可让您执行某些特征提取和数据分类的功能。您可以创建一个简单的字母分割器和分类器来执行基本的 OCR,但它不是一个很好的 OCR 引擎(我之前在 Python 中从头开始制作了一个。对于偏离训练数据的输入确实不准确)。

如果您想基本了解 OCR 的难度,请尝试 OpenCV。Tesseract 用于真正的OCR。

于 2012-07-15T06:12:48.053 回答
66

我是您提到的那个数字识别教程的作者,我想说,这无法替代 tesseract。

Tesseract 是一个非常好的 OCR 引擎,可能是最好的 OpenSource OCR 引擎。

您提到的教程只是一个尝试,以了解 OCR 的最简单工作。

因此,如果您正在寻找 OCR 应用程序,我建议您使用 OpenCV 对图像进行预处理,然后应用 tesseract 引擎。

于 2012-07-15T06:21:17.323 回答
10

两者可以互补。如果您阅读有关 OpenCV 的论文: https ://github.com/tesseract-ocr/docs/blob/master/tesseracticdar2007.pdf

它强调“由于 HP 拥有独立开发的页面布局分析技术并用于产品中,(因此未开源)Tesseract 从来不需要自己的页面布局分析。因此,Tesseract 假设它的输入是一个二进制图像定义了可选的多边形文本区域。”

这种类型的任务可以由 OpenCV 执行,并将生成的图像移交给 Tesseract。您可以在 Git 存储库中找到此类代码的示例:https ://github.com/Itseez/opencv_contrib/tree/master/modules/text/samples 该示例使用 Tesseract API 进行图像到文本的转换。

于 2014-11-13T01:50:15.160 回答
3

OpenCV 是一个用于CV的库,通常用于分析和处理图像。Tesseract 是一个OCR库,它是 CV 的一个专门子集,专门用于从图像中提取文本。

来自OpenCV.org

.....用于检测和识别人脸、识别对象、对视频中的人类行为进行分类、跟踪摄像机运动、跟踪移动对象、提取对象的 3D 模型、从立体摄像机生成 3D 点云、将图像拼接在一起以产生高整个场景的分辨率图像,从图像数据库中查找相似图像,从使用闪光灯拍摄的图像中去除红眼,跟随眼球运动,识别风景并建立标记以将其与增强现实叠加等

来自Tesseract Github

.....可以直接使用,或者(对于程序员)使用 API 从图像中提取打字、手写或打印的文本。它支持多种语言。

于 2017-09-26T03:25:50.710 回答