【问题标题】:C++ Library for image recognition: images containing words to string用于图像识别的 C++ 库:包含单词到字符串的图像
【发布时间】:2010-10-02 13:09:54
【问题描述】:

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

【问题讨论】:

    标签: c++ fonts ocr image-recognition


    【解决方案1】:

    我最近一直在研究这个问题。你最好的就是 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。也可以通过命令行调用。

    【讨论】:

    • 不幸的是,最好的文档在他们的网站上,通过阅读他们提供的头文件和 LUA 脚本。
    【解决方案2】:

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

    【讨论】:

    • 谢谢,这很有帮助。在谷歌上找不到任何我正在使用的东西。
    【解决方案3】:

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

    从那里的网站

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        1) 对位图进行二值化(B&W 对我来说效果更好)。 How it could be done

        2) 将图像重采样为 300 dpi

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-24
          • 2016-08-10
          • 2013-10-28
          • 2011-12-05
          相关资源
          最近更新 更多