image-processing - 在特定字体上训练 Tesseract 会产生空的 tr 文件
问题描述
我正在从事一个大学项目,该项目涉及对某个数字代码进行 OCR(使用其他一些字符作为分隔符 - 主要是 '.'、'/' 等)。该数字代码(例如印在产品上)通常采用“数字”字体(例如 7 段式字体或像素化字体等)。
所以我正在尝试使用我在网上找到的几种数字字体来训练 Tesseract,类似于这些代码中使用的那些。
问题是,Tesseract 将我提供的 tiff 文件识别为空白页。
我尝试过的事情: 1. 使用 JTesseract 和 qt-box 创建一个 .box 文件(并手动调整框):在这种情况下,Tesseract 读取框和 tiff 并且我得到输出“1 Page” , 但没有字符被识别并且 tr 文件为空白。
- 使用 Tesseract 的 makebox 创建一个 .box 文件 - 在这种情况下,根本不会创建任何框。
PS - 我设法使用更传统的字体(例如 Arial)很好地训练它有什么想法吗?我附上了这样一个示例字体的图像。
谢谢!
解决方案
我设法解决了大部分问题。发布它以防它可以帮助其他人:我做了两个步骤让 Tesseract 识别我的文本:
训练图像上的图像处理——我应用了一些图像处理方法(主要是扩张、侵蚀和一些模糊)来排序“连接”文本中被分割或彼此分离的像素。将相同的步骤准确地应用于要馈送到 OCR 的图像是非常重要的。
我注意到通过代码简单地将图像保存为 TIFF/PNG 并不会出于某种原因将 DPI 设置保存在标题中(并且 Tesseract 将其识别为 0 DPI)。我认为有一种代码方式可以做到这一点,但我没有时间,所以我只是在 Photoshop 中打开文件并从那里保存它们。
我不完全确定是第 1,2 步还是两者都解决了我的问题,但最终确定了大多数字符。
推荐阅读
- mongodb - 如何在 mongdb 中搜索 mm/dd/yyyy 格式的日期字符串
- mysql - 通过有限数量的不同值进行选择
- flutter - 颤动中的气泡波纹动画
- python - Pandas Dataframe 将自定义函数应用于具有 NULL 列的某些行
- python - 使用 microsoft bot 框架创建 python 主动消息传递
- vim - 我怎样才能在 Vim 中同时拥有 Markdown 标题折叠和缩进折叠
- firebase - facebook OAth on firebase web 项目
- c# - 如何在一个场景中更改 Unity 中的菜单项
- ansible - 如何在 Jinja2/Ansible 中引用子词典?
- wordpress - 特价商品显示重复