我最近遇到了Tesseract和OpenCV。看起来Tesseract是一个成熟的OCR引擎,OpenCV可以用作创建OCR应用程序/服务的框架。
我尝试在我的一些图像上使用Tesseract,它的准确性似乎不错。后来,我遇到了一个非常简单的tutorial使用OpenCV来使用Python执行OCR并给人留下了深刻的印象。几分钟后,我完成了系统的培训,其准确性很好。但是,当然,采用这种方法意味着我需要使用大型训练集来广泛训练我的系统。
我的具体问题如下:
有什么建议吗?
答案 0 :(得分:69)
Tesseract是一款OCR引擎。它由Google专门用于阅读文档,进行基本文档分割以及对特定图像输入(单个单词,行,段落,页面,有限词典等)进行操作和使用。
另一方面,OpenCV是一个计算机视觉库,其中包含可让您执行某些特征提取和数据分类的功能。你可以创建一个简单的字母分段器和分类器来执行基本的OCR,但它不是一个非常好的OCR引擎(我从头开始在Python中创建一个。对于偏离你的训练数据的输入来说真的不准确。)
如果您想要了解OCR的难度,请尝试使用OpenCV。 Tesseract适用于真正的 OCR。
答案 1 :(得分:62)
我是您提到的数字识别教程的作者,我想说,这无法替代tesseract。
Tesseract是一款非常好的OCR引擎,可能是最好的OpenSource OCR引擎。
您提到的教程只是一个尝试,以了解OCR的最简单的工作。
因此,如果您正在寻找OCR应用程序,我建议您使用OpenCV预处理图像,然后应用tesseract引擎。
答案 2 :(得分:7)
这两者可以互补。如果您阅读OpenCV上的论文: https://github.com/tesseract-ocr/docs/blob/master/tesseracticdar2007.pdf
它强调“由于惠普拥有独立开发的产品中使用的页面布局分析技术(因此不会针对开放源代码发布),因此Tesseract从不需要自己的页面布局分析。因此,Tesseract假设它的输入是二进制图像,定义了可选的多边形文本区域。“
这种类型的任务可以由OpenCV执行,并将生成的图像传递给Tesseract。您可以在Git仓库中找到此类代码的示例:https://github.com/Itseez/opencv_contrib/tree/master/modules/text/samples 这些示例使用Tesseract API进行图像到文本转换。
答案 3 :(得分:1)