有谁知道用于拍摄图像并对其执行图像识别的 c++ 库,以便它可以根据给定的字体和/或字体高度找到字母?即使是不允许您选择字体的字体也会很好(例如:readLetters(Image image)。
5 回答
我最近一直在研究这个。你最好的就是 Tesseract。如果您需要在 OCR 之上进行布局分析,而不是使用 Ocropus(后者又使用 Tesseract 进行 OCR)。布局分析是指能够检测图像上文本的位置,并进行线分割、块分割等。
通过对 Tesseract 的实验,我发现了一些非常好的技巧,值得分享。基本上我必须对图像进行大量预处理。
- 将输入图像放大/缩小到 300 dpi。
- 从图像中去除颜色。灰度很好。我实际上使用了一个抖动阈值并将我的输入设置为黑白。
- 从您的图像中删除不必要的垃圾。对于以上所有三个,我使用 netbpm(一组用于 unix 的图像处理工具)来达到我所需要的几乎 100% 的准确度。
如果你有一个高度定制的字体并且单独使用 tesseract,你必须“训练”系统——基本上你必须提供一堆训练数据。这在 tesseract-ocr 网站上有很好的记录。您实质上为您的字体创建了一种新的“语言”,并使用 -l 参数将其传入。
我发现的另一种训练机制是使用 Ocropus 使用神经网络 (bpnet) 训练。建立一个好的统计模型需要大量的输入数据。
在调用 Tesseract/Ocropus 方面都是 C++。它不会像 ReadLines(Image) 那样简单,但是您可以查看一个 API。您也可以通过命令行调用。
虽然我不能特别推荐一个,但您正在寻找的术语是 OCR(光学字符识别)。
有tesseract-ocr这是一个专业的图书馆来做到这一点。
从那里的网站
Tesseract OCR 引擎是 1995 年 UNLV 精度测试中排名前三的引擎之一。从 1995 年到 2006 年,它几乎没有做任何工作,但它可能是可用的最准确的开源 OCR 引擎之一
我想你想要的是猜想。曾经是 libgocr 项目。我已经有几年没有使用它了,但是如果您设置了密钥,它曾经非常可靠。
Tesseract OCR 库提供了非常准确的结果,它是一个 C 和 C++ 库。我最初的结果准确率约为 80%,但在提供 OCR 之前对图像进行预处理,结果准确率约为 95%。什么是预处理:
1)对位图进行二值化(B&W 对我来说效果更好)。怎么做
2) 将图像重采样为 300 dpi
3) 以无损格式保存图像,例如 LZW TIFF 或 CCITT Group 4 TIFF。