【问题标题】:Character Recognition using tesseract使用 tesseract 进行字符识别
【发布时间】:2014-01-09 07:30:15
【问题描述】:

我正在尝试与tesseract API 进行交互,我也是图像处理的新手,最近几天我一直在努力解决这个问题。我尝试过简单的算法,准确率达到了 70% 左右。

我希望它的准确率达到 90+%。图像的问题在于它们是 72dpi。我还尝试提高分辨率,但没有得到很好的结果,我试图识别的图像被附加。

任何帮助都将不胜感激,如果我问了一些非常基本的问题,我很抱歉。

编辑

我忘了提到我正在尝试在Linux 平台上在 2-2.5 秒内完成所有处理和识别,并且检测此答案中提到的文本的方法需要很多时间。另外我不喜欢使用命令行解决方案,但我更喜欢LeptonicaOpenCV

大部分图片上传here

我尝试了以下方法来二值化门票,但没有成功

票包含

  1. 一点点坏光
  2. 非文本区域
  3. 分辨率较低

我尝试将图像直接提供给 tesseract API,它在平均 1 秒内给了我 70% 的好结果。但我想提高注意时间因素的准确性到目前为止我已经尝试过

  1. 检测图像的边缘
  2. Blob 的 Blob 分析
  3. 使用自适应阈值对票据进行二值化

然后我尝试将这些二值化图像提供给 tesseract,虽然二值化图像看起来很完美,但准确率降低到了 50-60% 以下。

【问题讨论】:

  • 不确定您的问题是什么,您是否有任何代码可以解决问题所在?

标签: c++ opencv image-processing ocr tesseract


【解决方案1】:

您可以尝试以下几种方法:

【讨论】:

    【解决方案2】:

    一些可能的改进:

    1. 分辨率至少应为 300 dpi。
    2. 使您的照明更加平均分布。有几个暗区可能会影响结果。
    3. 尝试稍微缩放您的角色。目前它们的大小不一,有些字母甚至被扭曲了。
    4. 通过阈值化和二值化对图像进行预处理。

    您可以通过自己的编程完成上述操作,或者Fred's ImageMagick Scripts 可能会有所帮助。

    【讨论】:

    • 任何分配照明的教程?
    • @MuhammadMaaz 您可以尝试侵蚀图像然后放大以模仿白纸,减法将消除不均匀的效果。有关详细信息,请参阅此帖子:dsp.stackexchange.com/questions/1932/…
    • 检测文本区域怎么样?
    【解决方案3】:

    我不确定我的帖子是否对您有用,因为我的回答与 Tesseract 无关。但它是关于高精度的,所以我决定让你看看付费 OCR SDK 解决方案是如何工作的。

    这是使用 ABBYY Cloud OCR SDK 识别的结果,无需任何额外设置。

    免责声明:我为 ABBYY 工作。

    【讨论】:

      【解决方案4】:

      您可以尝试使用 ScanTailor(http://scantailor.sourceforge.net/ 它还有 CLI 界面)对图像进行二值化、去扭曲和去扭曲。放大图像可能有助于提高识别度。因为 Tesseract 识别配置文件经过优化,可以在至少 300 DPI 上工作。

      另一种可能性是训练 Tesseract 使用您的材料特有的字体(更多信息可以在这里:https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3)。

      我不认为字典查找在这里会有所帮助,因为您主要有数字。

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 1970-01-01
        • 2017-01-26
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        • 2016-08-09
        • 2016-09-15
        相关资源
        最近更新 更多