6

有谁知道用于拍摄图像并对其执行图像识别的 c++ 库,以便它可以根据给定的字体和/或字体高度找到字母?即使是不允许您选择字体的字体也会很好(例如:readLetters(Image image)。

4

5 回答 5

7

我最近一直在研究这个。你最好的就是 Tesseract。如果您需要在 OCR 之上进行布局分析,而不是使用 Ocropus(后者又使用 Tesseract 进行 OCR)。布局分析是指能够检测图像上文本的位置,并进行线分割、块分割等。

通过对 Tesseract 的实验,我发现了一些非常好的技巧,值得分享。基本上我必须对图像进行大量预处理。

  1. 将输入图像放大/缩小到 300 dpi。
  2. 从图像中去除颜色。灰度很好。我实际上使用了一个抖动阈值并将我的输入设置为黑白。
  3. 从您的图像中删除不必要的垃圾。对于以上所有三个,我使用 netbpm(一组用于 unix 的图像处理工具)来达到我所需要的几乎 100% 的准确度。

如果你有一个高度定制的字体并且单独使用 tesseract,你必须“训练”系统——基本上你必须提供一堆训练数据。这在 tesseract-ocr 网站上有很好的记录。您实质上为您的字体创建了一种新的“语言”,并使用 -l 参数将其传入。

我发现的另一种训练机制是使用 Ocropus 使用神经网络 (bpnet) 训练。建立一个好的统计模型需要大量的输入数据。

在调用 Tesseract/Ocropus 方面都是 C++。它不会像 ReadLines(Image) 那样简单,但是您可以查看一个 API。您也可以通过命令行调用。

于 2009-01-23T07:20:30.507 回答
5

虽然我不能特别推荐一个,但您正在寻找的术语是 OCR(光学字符识别)。

于 2009-01-20T20:06:10.323 回答
3

tesseract-ocr这是一个专业的图书馆来做到这一点。

从那里的网站

Tesseract OCR 引擎是 1995 年 UNLV 精度测试中排名前三的引擎之一。从 1995 年到 2006 年,它几乎没有做任何工作,但它可能是可用的最准确的开源 OCR 引擎之一

于 2009-01-20T20:06:36.703 回答
1

我想你想要的是猜想。曾经是 libgocr 项目。我已经有几年没有使用它了,但是如果您设置了密钥,它曾经非常可靠。

于 2009-01-20T20:07:51.803 回答
0

Tesseract OCR 库提供了非常准确的结果,它是一个 C 和 C++ 库。我最初的结果准确率约为 80%,但在提供 OCR 之前对图像进行预处理,结果准确率约为 95%。什么是预处理:

1)对位图进行二值化(B&W 对我来说效果更好)。怎么做

2) 将图像重采样为 300 dpi

3) 以无损格式保存图像,例如 LZW TIFF 或 CCITT Group 4 TIFF。

于 2016-12-21T04:43:06.830 回答