首页 > 解决方案 > 在特定字体上训练 Tesseract 会产生空的 tr 文件

问题描述

我正在从事一个大学项目,该项目涉及对某个数字代码进行 OCR(使用其他一些字符作为分隔符 - 主要是 '.'、'/' 等)。该数字代码(例如印在产品上)通常采用“数字”字体(例如 7 段式字体或像素化字体等)。

所以我正在尝试使用我在网上找到的几种数字字体来训练 Tesseract,类似于这些代码中使用的那些。

问题是,Tesseract 将我提供的 tiff 文件识别为空白页。

我尝试过的事情: 1. 使用 JTesseract 和 qt-box 创建一个 .box 文件(并手动调整框):在这种情况下,Tesseract 读取框和 tiff 并且我得到输出“1 Page” , 但没有字符被识别并且 tr 文件为空白。

  1. 使用 Tesseract 的 makebox 创建一个 .box 文件 - 在这种情况下,根本不会创建任何框。

PS - 我设法使用更传统的字体(例如 Arial)很好地训练它有什么想法吗?我附上了这样一个示例字体的图像。 数字化字体

谢谢!

标签: image-processingocrtesseract

解决方案


我设法解决了大部分问题。发布它以防它可以帮助其他人:我做了两个步骤让 Tesseract 识别我的文本:

  1. 训练图像上的图像处理——我应用了一些图像处理方法(主要是扩张、侵蚀和一些模糊)来排序“连接”文本中被分割或彼此分离的像素。将相同的步骤准确地应用于要馈送到 OCR 的图像是非常重要的。

  2. 我注意到通过代码简单地将图像保存为 TIFF/PNG 并不会出于某种原因将 DPI 设置保存在标题中(并且 Tesseract 将其识别为 0 DPI)。我认为有一种代码方式可以做到这一点,但我没有时间,所以我只是在 Photoshop 中打开文件并从那里保存它们。

我不完全确定是第 1,2 步还是两者都解决了我的问题,但最终确定了大多数字符。


推荐阅读